builder: release-comm-esr45-win32_release_update_verify_6 slave: b-2008-spot-047 starttime: 1462839586.27 results: failure (2) ========= Started set props: master (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:46.271134) ========= master: http://buildbot-master70.bb.releng.use1.mozilla.com:8001/ ========= Finished set props: master (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:46.271568) ========= ========= Started downloading to buildprops.json (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:46.271857) ========= ========= Finished downloading to buildprops.json (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:46.336408) ========= ========= Started 'rm -rf ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:46.336711) ========= 'rm' '-rf' 'scripts' 'properties' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\. (timeout 1200 secs) watching logfiles {} argv: ['rm', '-rf', 'scripts', 'properties'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-047 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-047 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3624 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-yDEFNl3564/agent.3564 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-047 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False program finished with exit code 0 elapsedTime=0.784000 ========= master_lag: 0.06 ========= ========= Finished 'rm -rf ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:47.180608) ========= ========= Started 'hg clone ...' (results: 0, elapsed: 8 secs) (at 2016-05-09 17:19:47.181456) ========= 'hg' 'clone' 'https://hg.mozilla.org/build/tools' 'scripts' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\. (timeout 1320 secs) watching logfiles {} argv: ['hg', 'clone', 'https://hg.mozilla.org/build/tools', 'scripts'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-047 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-047 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3624 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-yDEFNl3564/agent.3564 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-047 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False applying clone bundle from https://s3-external-1.amazonaws.com/moz-hg-bundles-us-east-1/build/tools/b030af490d9395958c3dc17443204037faf6a991.packed1.hg 2005 files to transfer, 26.7 MB of data transferred 26.7 MB in 2.4 seconds (11.1 MB/sec) finished applying clone bundle searching for changes adding changesets adding manifests adding file changes added 3 changesets with 7 changes to 6 files updating to branch default 1139 files updated, 0 files merged, 0 files removed, 0 files unresolved program finished with exit code 0 elapsedTime=8.247000 ========= master_lag: 0.01 ========= ========= Finished 'hg clone ...' (results: 0, elapsed: 8 secs) (at 2016-05-09 17:19:55.435772) ========= ========= Started 'hg update ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:55.436717) ========= 'hg' 'update' '-C' '-r' 'THUNDERBIRD_45_1_0_RELEASE_RUNTIME' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\scripts (timeout 1200 secs) watching logfiles {} argv: ['hg', 'update', '-C', '-r', 'THUNDERBIRD_45_1_0_RELEASE_RUNTIME'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-047 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-047 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3624 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-yDEFNl3564/agent.3564 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-047 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False 1 files updated, 0 files merged, 0 files removed, 0 files unresolved program finished with exit code 0 elapsedTime=0.407000 ========= master_lag: 0.01 ========= ========= Finished 'hg update ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:55.852845) ========= ========= Started set props: script_repo_revision (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:55.853785) ========= 'hg' 'id' '-i' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\scripts (timeout 1200 secs) watching logfiles {} argv: ['hg', 'id', '-i'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-047 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-047 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3624 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-yDEFNl3564/agent.3564 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-047 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False 977ce00d7c48 program finished with exit code 0 elapsedTime=0.306000 script_repo_revision: '977ce00d7c48' ========= master_lag: 0.20 ========= ========= Finished set props: script_repo_revision (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:56.364226) ========= ========= Started 'bash scripts/scripts/release/updates/chunked-verify.sh ...' failed (results: 2, elapsed: 33 mins, 34 secs) (at 2016-05-09 17:19:56.365166) ========= 'bash' 'scripts/scripts/release/updates/chunked-verify.sh' 'win32' 'updateChannels' '6' '6' 'release' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\. (timeout 1200 secs) watching logfiles {} argv: ['bash', 'scripts/scripts/release/updates/chunked-verify.sh', 'win32', 'updateChannels', '6', '6', 'release'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-047 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-047 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PROPERTIES_FILE=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3624 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-yDEFNl3564/agent.3564 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-047 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False + set -o pipefail ++ dirname scripts/scripts/release/updates/chunked-verify.sh + pushd scripts/scripts/release/updates ++ pwd + MY_DIR=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates + popd + SCRIPTS_DIR=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../.. + PYTHON=/tools/python/bin/python + '[' '!' -x /tools/python/bin/python ']' + PYTHON=python + JSONTOOL='python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py' ++ pwd + workdir=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0 + platform=win32 + configDict=updateChannels + chunks=6 + thisChunk=6 + channel=release + '[' -n /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json -a -f /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json ']' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.NO_BBCONFIG /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'NO_BBCONFIG' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.VERIFY_CONFIG /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'VERIFY_CONFIG' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.TOTAL_CHUNKS /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'TOTAL_CHUNKS' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.THIS_CHUNK /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'THIS_CHUNK' + '[' -z '' -a -z https://hg.mozilla.org/build/buildbot-configs ']' +++ cd /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../.. +++ pwd ++ basename /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0 + SLAVEBUILDDIR=tb-rel-c-esr45-w32_rel_u_v_6-0 + '[' -z '' ']' ++ python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.release_config /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json + RELEASE_CONFIG=mozilla/release-thunderbird-comm-esr45.py ++ python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.release_tag /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json + TAG=THUNDERBIRD_45_1_0_RELEASE ++ python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.slavebuilddir /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/buildprops.json + SLAVEBUILDDIR=tb-rel-c-esr45-w32_rel_u_v_6-0 + python -u /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../buildfarm/maintenance/purge_builds.py -s 16 -n info -n 'rel-*' -n 'tb-rel-*' -n tb-rel-c-esr45-w32_rel_u_v_6-0 46.36 GB of space available + '[' -z '' -a -n '' ']' + '[' -z '' ']' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/chunked-verify.py -t THUNDERBIRD_45_1_0_RELEASE -r mozilla/release-thunderbird-comm-esr45.py -b https://hg.mozilla.org/build/buildbot-configs -p win32 --chunks 6 --this-chunk 6 --config-dict updateChannels --release-channel release + tee /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates/../../../../verify_log.txt Reporting hg version in use command: START command: hg -q version command: cwd: . command: output: Mercurial Distributed SCM (version 3.7.3) command: END (0.09s elapsed) Checking if share extension works command: START command: hg help share command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0 command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) Updating shared repo Reporting hg version in use command: START command: hg -q version command: cwd: . command: output: Mercurial Distributed SCM (version 3.7.3) command: END (0.09s elapsed) command: START command: hg clone --traceback -U https://hg.mozilla.org/build/buildbot-configs c:\builds\hg-shared\build\buildbot-configs command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0 command: env: {'HGPLAIN': '1'} command: END (17.00s elapsed) command: output: requesting all changes adding changesets adding manifests adding file changes added 14193 changesets with 26568 changes to 2730 files (+2 heads) Trying to share c:/builds/hg-shared\build/buildbot-configs to c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\buildbot-configs mkdir: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\buildbot-configs command: START command: hg share -U c:/builds/hg-shared\build/buildbot-configs c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\buildbot-configs command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0 command: output: command: END (0.10s elapsed) command: START command: hg branch command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\buildbot-configs command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) command: output: default command: START command: hg update -C command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\buildbot-configs command: output: 195 files updated, 0 files merged, 0 files removed, 0 files unresolved command: END (1.41s elapsed) command: START command: hg parent --template {node|short} command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\buildbot-configs command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) command: output: 3a7c1d3dbace command: START command: hg update -C -r THUNDERBIRD_45_1_0_RELEASE command: cwd: buildbot-configs command: output: 14 files updated, 0 files merged, 0 files removed, 0 files unresolved command: END (0.38s elapsed) command: START command: hg parent --template {node|short} command: cwd: buildbot-configs command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) command: output: 101957d3f7db command: START command: cat c:\users\cltbld\appdata\local\temp\tmpnzgtek command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0 command: output: release="38.6.0" product="Thunderbird" platform="WINNT_x86-msvc" build_id="20160211132445" locales="ja ko lt nb-NO nl nn-NO pa-IN pl pt-BR pt-PT rm ro ru si sk sl sq sr sv-SE ta-LK tr uk vi zh-CN zh-TW" channel="release-localtest" patch_types="complete partial" from="/thunderbird/releases/38.6.0/win32/%locale%/Thunderbird Setup 38.6.0.exe" aus_server="https://aus4.mozilla.org" ftp_server_from="http://archive.mozilla.org/pub/mozilla.org" ftp_server_to="http://archive.mozilla.org/pub/mozilla.org" to="/thunderbird/candidates/45.1.0-candidates/build3/win32/%locale%/Thunderbird Setup 45.1.0.exe" release="38.5.1" product="Thunderbird" platform="WINNT_x86-msvc" build_id="20151228123010" locales="de en-US ru" channel="release-localtest" patch_types="complete" from="/thunderbird/releases/38.5.1/win32/%locale%/Thunderbird Setup 38.5.1.exe" ftp_server_from="http://archive.mozilla.org/pub/mozilla.org" ftp_server_to="http://archive.mozilla.org/pub/mozilla.org" release="38.5.0" product="Thunderbird" platform="WINNT_x86-msvc" build_id="20151221142744" locales="de en-US ru" channel="release-localtest" patch_types="complete" from="/thunderbird/releases/38.5.0/win32/%locale%/Thunderbird Setup 38.5.0.exe" ftp_server_from="http://archive.mozilla.org/pub/mozilla.org" ftp_server_to="http://archive.mozilla.org/pub/mozilla.org" release="38.5.0" product="Thunderbird" platform="WINNT_x86-msvc" build_id="20151221142744" locales="fy-NL ga-IE gd gl he hr hsb hu hy-AM id is it ja ko lt nb-NO nl nn-NO pa-IN pl pt-BR pt-PT rm ro si sk sl sq sr sv-SE ta-LK tr uk vi zh-CN zh-TW" channel="release-localtest" patch_types="complete" command: END (0.06s elapsed) command: START command: bash verify.sh -c c:\users\cltbld\appdata\local\temp\tmpnzgtek command: cwd: c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_6-0/scripts/scripts/release/updates\../../../release/updates command: output: Using config file c:\users\cltbld\appdata\local\temp\tmpnzgtek Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:20:16-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:20:19 GMT Keep-Alive: timeout=5, max=1000 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.24M=0s 2016-05-09 17:20:17 (2.24 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ja/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ja/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:20:18-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ja/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41863645 Connection: keep-alive Date: Tue, 10 May 2016 00:20:21 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Hd7_FV5ZrDBEDV3KFWhH7erSRd9RCQAf Last-Modified: Tue, 03 May 2016 14:49:10 GMT ETag: "182650680b685725bbe08cef793e74ff" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 81871f1c889cc44b6c25e3ef722a3801.cloudfront.net (CloudFront) X-Amz-Cf-Id: iqcDc6_XW7uOAk3hR_i17-87PYC53-WlDT_uZ7F9Lets22K1Z7CsDw== Length: 41863645 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.55M 24s 3072K ........ ........ ........ ........ ........ ........ 15% 4.09M 15s 6144K ........ ........ ........ ........ ........ ........ 22% 6.34M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 6.82M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 4.92M 7s 15360K ........ ........ ........ ........ ........ ........ 45% 3.68M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 4.63M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 4.70M 4s 24576K ........ ........ ........ ........ ........ ........ 67% 4.60M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 4.25M 3s 30720K ........ ........ ........ ........ ........ ........ 82% 4.55M 2s 33792K ........ ........ ........ ........ ........ ........ 90% 4.69M 1s 36864K ........ ........ ........ ........ ........ ........ 97% 4.70M 0s 39936K ........ ...... 100% 4.62M=9.8s 2016-05-09 17:20:28 (4.08 MB/s) - 'update/complete.mar' saved [41863645/41863645] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ja/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ja/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:20:30-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ja/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34210744 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:20:32 GMT ETag: "6330b9a07bb7abac22540ad34edd4358" Last-Modified: Fri, 12 Feb 2016 21:49:33 GMT x-amz-replication-status: COMPLETED x-amz-version-id: k1DKfEN5EUv2HeA013SwkJshDb79j2Vc X-Cache: Miss from cloudfront Via: 1.1 939ea9d62ec616846d41b16cea0dc65b.cloudfront.net (CloudFront) X-Amz-Cf-Id: Ue_P5YvDds_WwTFjGLSxwSzyPaA3ucQdLOHKJiDQBbqps-MB8jqhmw== Length: 34210744 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.37M 22s 3072K ........ ........ ........ ........ ........ ........ 18% 4.33M 13s 6144K ........ ........ ........ ........ ........ ........ 27% 6.13M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 7.61M 6s 12288K ........ ........ ........ ........ ........ ........ 45% 9.50M 5s 15360K ........ ........ ........ ........ ........ ........ 55% 11.3M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 12.7M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 13.1M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 18.2M 1s 27648K ........ ........ ........ ........ ........ ........ 91% 11.7M 0s 30720K ........ ........ ........ ........ ........ .. 100% 8.25M=5.6s 2016-05-09 17:20:36 (5.87 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34210744/34210744] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ja/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ja/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:20:36-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ja/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35065176 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:20:39 GMT ETag: "fcf5cd91e2af7feb19a6febef5d2cfed" Last-Modified: Mon, 09 May 2016 21:09:53 GMT x-amz-replication-status: COMPLETED x-amz-version-id: rRATb6zHzEWbKDapsqhQf86moqgCqSnW X-Cache: Miss from cloudfront Via: 1.1 6be093c16fa776bbd432bbe9bd03f6af.cloudfront.net (CloudFront) X-Amz-Cf-Id: 8KjqtMFjMcQe_MzCM-sq54OiFR6gsp3mnJR_zEoWoJb3QBbjZ__u9Q== Length: 35065176 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 954K 33s 3072K ........ ........ ........ ........ ........ ........ 17% 2.50M 20s 6144K ........ ........ ........ ........ ........ ........ 26% 3.58M 14s 9216K ........ ........ ........ ........ ........ ........ 35% 5.05M 10s 12288K ........ ........ ........ ........ ........ ........ 44% 7.27M 8s 15360K ........ ........ ........ ........ ........ ........ 53% 9.37M 6s 18432K ........ ........ ........ ........ ........ ........ 62% 12.2M 4s 21504K ........ ........ ........ ........ ........ ........ 71% 12.6M 3s 24576K ........ ........ ........ ........ ........ ........ 80% 13.0M 2s 27648K ........ ........ ........ ........ ........ ........ 89% 17.8M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 17.7M 0s 33792K ....... 100% 8.13M=7.7s 2016-05-09 17:20:45 (4.35 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35065176/35065176] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo-jp.xml PREPARE REMOVEFILE searchplugins/yahoo-jp-auctions.xml PREPARE REMOVEFILE searchplugins/wikipedia-ja.xml PREPARE REMOVEFILE searchplugins/twitter-ja.xml PREPARE REMOVEFILE searchplugins/rakuten.xml PREPARE REMOVEFILE searchplugins/oshiete-goo.xml PREPARE REMOVEFILE searchplugins/google-jp.xml PREPARE REMOVEFILE searchplugins/amazon-jp.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/en-US.dic PREPARE REMOVEFILE dictionaries/en-US.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo-jp.xml PREPARE ADD searchplugins/yahoo-jp-auctions.xml PREPARE ADD searchplugins/wikipedia-ja.xml PREPARE ADD searchplugins/twitter-ja.xml PREPARE ADD searchplugins/rakuten.xml PREPARE ADD searchplugins/oshiete-goo.xml PREPARE ADD searchplugins/google-jp.xml PREPARE ADD searchplugins/amazon-jp.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/en-US.dic PREPARE ADD dictionaries/en-US.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo-jp.xml EXECUTE REMOVEFILE searchplugins/yahoo-jp-auctions.xml EXECUTE REMOVEFILE searchplugins/wikipedia-ja.xml EXECUTE REMOVEFILE searchplugins/twitter-ja.xml EXECUTE REMOVEFILE searchplugins/rakuten.xml EXECUTE REMOVEFILE searchplugins/oshiete-goo.xml EXECUTE REMOVEFILE searchplugins/google-jp.xml EXECUTE REMOVEFILE searchplugins/amazon-jp.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/en-US.dic EXECUTE REMOVEFILE dictionaries/en-US.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo-jp.xml EXECUTE ADD searchplugins/yahoo-jp-auctions.xml EXECUTE ADD searchplugins/wikipedia-ja.xml EXECUTE ADD searchplugins/twitter-ja.xml EXECUTE ADD searchplugins/rakuten.xml EXECUTE ADD searchplugins/oshiete-goo.xml EXECUTE ADD searchplugins/google-jp.xml EXECUTE ADD searchplugins/amazon-jp.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/en-US.dic EXECUTE ADD dictionaries/en-US.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo-jp.xml FINISH REMOVEFILE searchplugins/yahoo-jp-auctions.xml FINISH REMOVEFILE searchplugins/wikipedia-ja.xml FINISH REMOVEFILE searchplugins/twitter-ja.xml FINISH REMOVEFILE searchplugins/rakuten.xml FINISH REMOVEFILE searchplugins/oshiete-goo.xml FINISH REMOVEFILE searchplugins/google-jp.xml FINISH REMOVEFILE searchplugins/amazon-jp.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/en-US.dic FINISH REMOVEFILE dictionaries/en-US.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo-jp.xml FINISH ADD searchplugins/yahoo-jp-auctions.xml FINISH ADD searchplugins/wikipedia-ja.xml FINISH ADD searchplugins/twitter-ja.xml FINISH ADD searchplugins/rakuten.xml FINISH ADD searchplugins/oshiete-goo.xml FINISH ADD searchplugins/google-jp.xml FINISH ADD searchplugins/amazon-jp.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/en-US.dic FINISH ADD dictionaries/en-US.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ja"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ja"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ja\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/yahoo-jp.xml" < remove "searchplugins/yahoo-jp-auctions.xml" < remove "searchplugins/wikipedia-ja.xml" < remove "searchplugins/twitter-ja.xml" < remove "searchplugins/rakuten.xml" < remove "searchplugins/oshiete-goo.xml" < remove "searchplugins/google-jp.xml" < remove "searchplugins/amazon-jp.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 72d61 < rmdir "searchplugins/" 74d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1553081 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:21 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1553080 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:21 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1553079 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:21 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1553045 1 -rw-r--r-- 1 cltbld Administrators 2025 May 17:21 source/bin/searchplugins/amazon-jp.xml 1553044 2 -rw-r--r-- 1 cltbld Administrators 2933 May 17:21 source/bin/searchplugins/google-jp.xml 1553035 2 -rw-r--r-- 1 cltbld Administrators 2521 May 17:21 source/bin/searchplugins/oshiete-goo.xml 1553034 1 -rw-r--r-- 1 cltbld Administrators 988 May 17:21 source/bin/searchplugins/rakuten.xml 1553033 2 -rw-r--r-- 1 cltbld Administrators 2280 May 17:21 source/bin/searchplugins/twitter-ja.xml 1553032 1 -rw-r--r-- 1 cltbld Administrators 1401 May 17:21 source/bin/searchplugins/wikipedia-ja.xml 1553031 1 -rw-r--r-- 1 cltbld Administrators 973 May 17:21 source/bin/searchplugins/yahoo-jp-auctions.xml 1553030 1 -rw-r--r-- 1 cltbld Administrators 879 May 17:21 source/bin/searchplugins/yahoo-jp.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:21:20-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:21:22 GMT Keep-Alive: timeout=5, max=988 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.22M=0s 2016-05-09 17:21:20 (2.22 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ko/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ko/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:21:21-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ko/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41617314 Connection: keep-alive Date: Tue, 10 May 2016 00:21:24 GMT x-amz-replication-status: COMPLETED x-amz-version-id: GStkOpB2SvzJqVITQf8WRM1gjwwmmuYt Last-Modified: Tue, 03 May 2016 15:04:55 GMT ETag: "7681bf248d06bbce225228765ec17f21" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 aa89533ad2ec5e0edba466c9920bd000.cloudfront.net (CloudFront) X-Amz-Cf-Id: kDJyL3F9u28jjDFi8mzvhAlbVQkkmOUV2WIJyboUpLv-Y-M3CedVOg== Length: 41617314 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.13M 33s 3072K ........ ........ ........ ........ ........ ........ 15% 3.46M 20s 6144K ........ ........ ........ ........ ........ ........ 22% 5.41M 14s 9216K ........ ........ ........ ........ ........ ........ 30% 6.41M 11s 12288K ........ ........ ........ ........ ........ ........ 37% 9.38M 8s 15360K ........ ........ ........ ........ ........ ........ 45% 9.66M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 12.6M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 13.1M 4s 24576K ........ ........ ........ ........ ........ ........ 68% 10.9M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 1.73M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 1.73M 2s 33792K ........ ........ ........ ........ ........ ........ 90% 2.25M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 2.37M 0s 39936K ........ ... 100% 2.25M=12s 2016-05-09 17:21:33 (3.23 MB/s) - 'update/complete.mar' saved [41617314/41617314] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ko/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ko/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:21:35-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ko/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33998360 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:21:37 GMT ETag: "2bcdc76db56a42721a31d4f37f1306e3" Last-Modified: Fri, 12 Feb 2016 21:49:35 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 7qba_YOJCJYqaVHfRDH5hk9n5.tI0OaG X-Cache: Miss from cloudfront Via: 1.1 9767e262e4af15c8d83a726bb0f44fa5.cloudfront.net (CloudFront) X-Amz-Cf-Id: JVO2DqxgjrzhSCrA9i9xtUA4kLmqVgiYhcYSWX50zsvgbyEmTAAVFw== Length: 33998360 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.24M 24s 3072K ........ ........ ........ ........ ........ ........ 18% 3.35M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 5.36M 10s 9216K ........ ........ ........ ........ ........ ........ 37% 6.57M 7s 12288K ........ ........ ........ ........ ........ ........ 46% 9.00M 5s 15360K ........ ........ ........ ........ ........ ........ 55% 9.84M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 12.5M 3s 21504K ........ ........ ........ ........ ........ ........ 74% 12.9M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 17.8M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 17.6M 0s 30720K ........ ........ ........ ........ ...... 100% 16.7M=5.9s 2016-05-09 17:21:42 (5.47 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33998360/33998360] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ko/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ko/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:21:42-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ko/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34851648 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:21:45 GMT ETag: "bb5fcccf3bd395581e8819d4adfe3e9b" Last-Modified: Mon, 09 May 2016 21:28:47 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 842mvmfGMLrWwrgrAAkx0YCwJifKwXt2 X-Cache: Miss from cloudfront Via: 1.1 88972e3933cc06dd11a6fa704a208631.cloudfront.net (CloudFront) X-Amz-Cf-Id: TBpaBa80ae3ssSlKLxIBbeh5bd5zwWZxopNXTJyyMnojHuQRz9awog== Length: 34851648 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.20M 25s 3072K ........ ........ ........ ........ ........ ........ 18% 4.16M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 5.70M 10s 9216K ........ ........ ........ ........ ........ ........ 36% 5.43M 8s 12288K ........ ........ ........ ........ ........ ........ 45% 5.67M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 5.25M 5s 18432K ........ ........ ........ ........ ........ ........ 63% 5.00M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 5.48M 3s 24576K ........ ........ ........ ........ ........ ........ 81% 5.17M 2s 27648K ........ ........ ........ ........ ........ ........ 90% 5.12M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 5.90M 0s 33792K ... 100% 10.1M=8.2s 2016-05-09 17:21:51 (4.03 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34851648/34851648] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/wikipedia-kr.xml PREPARE REMOVEFILE searchplugins/naver-kr.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/daum-kr.xml PREPARE REMOVEFILE searchplugins/danawa-kr.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/wikipedia-kr.xml PREPARE ADD searchplugins/naver-kr.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/daum-kr.xml PREPARE ADD searchplugins/danawa-kr.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/wikipedia-kr.xml EXECUTE REMOVEFILE searchplugins/naver-kr.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/daum-kr.xml EXECUTE REMOVEFILE searchplugins/danawa-kr.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/wikipedia-kr.xml EXECUTE ADD searchplugins/naver-kr.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/daum-kr.xml EXECUTE ADD searchplugins/danawa-kr.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/wikipedia-kr.xml FINISH REMOVEFILE searchplugins/naver-kr.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/daum-kr.xml FINISH REMOVEFILE searchplugins/danawa-kr.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/wikipedia-kr.xml FINISH ADD searchplugins/naver-kr.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/daum-kr.xml FINISH ADD searchplugins/danawa-kr.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 1,3c1,3 < ; This Source Code Form is subject to the terms of the Mozilla Public < ; License, v. 2.0. If a copy of the MPL was not distributed with this < ; file, You can obtain one at http://mozilla.org/MPL/2.0/. --- > # This Source Code Form is subject to the terms of the Mozilla Public > # License, v. 2.0. If a copy of the MPL was not distributed with this > # file, You can obtain one at http://mozilla.org/MPL/2.0/. 6a7,10 > # LOCALIZATION NOTE (isRTL): > # Leave this entry empty unless your language requires right-to-left layout, > # for example like Arabic, Hebrew, Persian. If your language needs RTL, please > # use the untranslated English word "yes" as value 8d11 < 12,13c15 < < # LOCALIZATION NOTE (CrashReporterError): %s is replaced with another string containing detailed information. --- > # LOCALIZATION NOTE (CrashReporterErrorText): %s is replaced with another string containing detailed information. 15d16 < 19d19 < 24d23 < 26d24 < 29d26 < 60a58 > # LOCALIZATION NOTE (ErrorEndOfLife): The %s is replaced with the product name. 61a60 > diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ko"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" < pref("calendar.categories.names", "기ë…ì¼,ìƒì¼,엄무,호출,ì†ë‹˜,시합,ê³ ê°,선호,진행 사항,선물,휴가,ì•„ì´ë””ì–´,ë…¼ì˜ ì‚¬í•­,기타,ê°œì¸,프로ì íŠ¸,공휴ì¼,ìƒíƒœ,ë‚©í’ˆ,여행,ë°©í•™"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ko"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\ko\calendar\lightning-l10n.js" > pref("calendar.categories.names", "기ë…ì¼,ìƒì¼,엄무,호출,ì†ë‹˜,시합,ê³ ê°,선호,진행 사항,선물,휴가,ì•„ì´ë””ì–´,ë…¼ì˜ ì‚¬í•­,기타,ê°œì¸,프로ì íŠ¸,공휴ì¼,ìƒíƒœ,ë‚©í’ˆ,여행,ë°©í•™"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,13d8 < remove "searchplugins/wikipedia-kr.xml" < remove "searchplugins/naver-kr.xml" < remove "searchplugins/google.xml" < remove "searchplugins/daum-kr.xml" < remove "searchplugins/danawa-kr.xml" 15a11 > remove "prldap60.dll" 24,26d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 30d22 < remove "mozalloc.dll" 35a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 42,44c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 47,49c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 67d59 < rmdir "searchplugins/" 69d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1618619 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:22 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1749690 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:22 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1749689 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:22 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1618573 3 -rw-r--r-- 1 cltbld Administrators 4740 May 17:22 source/bin/searchplugins/danawa-kr.xml 1684108 5 -rw-r--r-- 1 cltbld Administrators 8193 May 17:22 source/bin/searchplugins/daum-kr.xml 1749643 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:22 source/bin/searchplugins/google.xml 1749642 3 -rw-r--r-- 1 cltbld Administrators 4789 May 17:22 source/bin/searchplugins/naver-kr.xml 1749641 1 -rw-r--r-- 1 cltbld Administrators 1358 May 17:22 source/bin/searchplugins/wikipedia-kr.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:22:26-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:22:28 GMT Keep-Alive: timeout=5, max=945 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.07M=0s 2016-05-09 17:22:26 (2.07 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/lt/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/lt/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:22:27-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/lt/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41931528 Connection: keep-alive Date: Tue, 10 May 2016 00:20:36 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Po7roV5R7NxPXJ7BTlqowfdX_cPBnfQo Last-Modified: Tue, 03 May 2016 15:19:31 GMT ETag: "840698e920d46693044690ce724dc837" Accept-Ranges: bytes Server: AmazonS3 Age: 114 X-Cache: Hit from cloudfront Via: 1.1 fc7da6323a08a2c16d48dd4939ce0898.cloudfront.net (CloudFront) X-Amz-Cf-Id: gIX4EP4xKLUXkw4cH8n9_a0OKbm5df_8yeAAtTJZ6C9yf8eQlQJeSQ== Length: 41931528 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.31M 28s 3072K ........ ........ ........ ........ ........ ........ 15% 3.45M 18s 6144K ........ ........ ........ ........ ........ ........ 22% 4.74M 13s 9216K ........ ........ ........ ........ ........ ........ 30% 5.41M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 7.48M 8s 15360K ........ ........ ........ ........ ........ ........ 45% 7.59M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 9.44M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 9.67M 4s 24576K ........ ........ ........ ........ ........ ........ 67% 10.0M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 11.7M 2s 30720K ........ ........ ........ ........ ........ ........ 82% 13.8M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 15.8M 1s 36864K ........ ........ ........ ........ ........ ........ 97% 14.6M 0s 39936K ........ ....... 100% 24.6M=7.0s 2016-05-09 17:22:34 (5.73 MB/s) - 'update/complete.mar' saved [41931528/41931528] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/lt/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/lt/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:22:35-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/lt/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34260648 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:22:37 GMT ETag: "ae28af11815fbbc7a237a02cd0593085" Last-Modified: Fri, 12 Feb 2016 21:49:36 GMT x-amz-replication-status: COMPLETED x-amz-version-id: xOqTniI1Q0v5O8RC_e2zDu6LfyTujDuK X-Cache: Miss from cloudfront Via: 1.1 f0ef92e52918ab5129ebd66f2f633cbb.cloudfront.net (CloudFront) X-Amz-Cf-Id: aw3wYSO0EzfDNVA92lnLeskmSnV635yedo_gjPLxaBRXg9fo99tBMQ== Length: 34260648 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.30M 23s 3072K ........ ........ ........ ........ ........ ........ 18% 4.66M 13s 6144K ........ ........ ........ ........ ........ ........ 27% 5.31M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 4.68M 7s 12288K ........ ........ ........ ........ ........ ........ 45% 5.18M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 5.24M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 5.24M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 4.88M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 5.35M 1s 27648K ........ ........ ........ ........ ........ ........ 91% 4.58M 1s 30720K ........ ........ ........ ........ ........ .. 100% 4.47M=8.3s 2016-05-09 17:22:44 (3.93 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34260648/34260648] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/lt/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/lt/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:22:44-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/lt/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35110624 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:20:56 GMT ETag: "cdde67ae692e0805bc35a0a5c5e035c1" Last-Modified: Mon, 09 May 2016 21:47:48 GMT x-amz-replication-status: COMPLETED x-amz-version-id: _03sVOVT.FTw5eOzDT47qiby0Xzg4p3. Age: 110 X-Cache: Hit from cloudfront Via: 1.1 75d3bdff1b8eb2920f04077d77f16ca0.cloudfront.net (CloudFront) X-Amz-Cf-Id: ydLmYax_109z3MFZQpng_oq4ZTr5QvFpZOPxtI1433L_eiBMkhY4-Q== Length: 35110624 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.23M 25s 3072K ........ ........ ........ ........ ........ ........ 17% 3.46M 15s 6144K ........ ........ ........ ........ ........ ........ 26% 5.44M 10s 9216K ........ ........ ........ ........ ........ ........ 35% 7.49M 8s 12288K ........ ........ ........ ........ ........ ........ 44% 7.80M 6s 15360K ........ ........ ........ ........ ........ ........ 53% 12.1M 4s 18432K ........ ........ ........ ........ ........ ........ 62% 12.6M 3s 21504K ........ ........ ........ ........ ........ ........ 71% 13.0M 2s 24576K ........ ........ ........ ........ ........ ........ 80% 17.9M 1s 27648K ........ ........ ........ ........ ........ ........ 89% 18.6M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 18.9M 0s 33792K ....... 100% 8.56M=5.9s 2016-05-09 17:22:50 (5.67 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35110624/35110624] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/wikipedia-lt.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/lt.dic PREPARE REMOVEFILE dictionaries/lt.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/wikipedia-lt.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/lt.dic PREPARE ADD dictionaries/lt.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/wikipedia-lt.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/lt.dic EXECUTE REMOVEFILE dictionaries/lt.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/wikipedia-lt.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/lt.dic EXECUTE ADD dictionaries/lt.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/wikipedia-lt.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/lt.dic FINISH REMOVEFILE dictionaries/lt.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/wikipedia-lt.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/lt.dic FINISH ADD dictionaries/lt.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "lt"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Jubiliejus,Gimtadienis,Reikalai,Skambutis,Klientai,Konkursas,PirkÄ—jai,Laisvalaikis,Pakartotinas įvykis,Dovana,Atostogos,IdÄ—ja,Problema,Ä®vairÅ«s,AsmeniÅ¡ka,Projektai,Å ventÄ—,TiekÄ—jai,KelionÄ—"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "lt"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\lt\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Jubiliejus,Gimtadienis,Reikalai,Skambutis,Klientai,Konkursas,PirkÄ—jai,Laisvalaikis,Pakartotinas įvykis,Dovana,Atostogos,IdÄ—ja,Problema,Ä®vairÅ«s,AsmeniÅ¡ka,Projektai,Å ventÄ—,TiekÄ—jai,KelionÄ—"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/wikipedia-lt.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/google.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/amazondotcom.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 70d61 < rmdir "searchplugins/" 72d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1946305 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:23 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1749696 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:23 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1946303 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:23 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1815185 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:23 source/bin/searchplugins/amazondotcom.xml 1815184 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:23 source/bin/searchplugins/bing.xml 1815183 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:23 source/bin/searchplugins/eBay.xml 1815182 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:23 source/bin/searchplugins/google.xml 1815181 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:23 source/bin/searchplugins/twitter.xml 1880716 1 -rw-r--r-- 1 cltbld Administrators 1347 May 17:23 source/bin/searchplugins/wikipedia-lt.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:23:25-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:23:27 GMT Keep-Alive: timeout=5, max=974 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.05M=0s 2016-05-09 17:23:25 (2.05 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nb-NO/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nb-NO/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:23:26-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nb-NO/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41607400 Connection: keep-alive Date: Tue, 10 May 2016 00:23:29 GMT x-amz-replication-status: COMPLETED x-amz-version-id: dgcBuY9tsihdDFV7xjsW94_IR89vN9iR Last-Modified: Tue, 03 May 2016 15:34:01 GMT ETag: "c8be12e27617e18bf1a42795785a9260" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 f46e4d7bc5419470a70eb57aa9c935c8.cloudfront.net (CloudFront) X-Amz-Cf-Id: RGXIcHQYZdbc6h3Gntu2fI9x9vXFL0tICPIhX5w1YCs7FjdnEaVI1Q== Length: 41607400 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.02M 36s 3072K ........ ........ ........ ........ ........ ........ 15% 2.91M 22s 6144K ........ ........ ........ ........ ........ ........ 22% 4.71M 16s 9216K ........ ........ ........ ........ ........ ........ 30% 3.51M 13s 12288K ........ ........ ........ ........ ........ ........ 37% 4.94M 10s 15360K ........ ........ ........ ........ ........ ........ 45% 7.05M 8s 18432K ........ ........ ........ ........ ........ ........ 52% 8.95M 6s 21504K ........ ........ ........ ........ ........ ........ 60% 10.1M 5s 24576K ........ ........ ........ ........ ........ ........ 68% 11.6M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 12.8M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 13.3M 2s 33792K ........ ........ ........ ........ ........ ........ 90% 15.1M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 15.8M 0s 39936K ........ .. 100% 21.8M=8.3s 2016-05-09 17:23:35 (4.79 MB/s) - 'update/complete.mar' saved [41607400/41607400] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nb-NO/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nb-NO/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:23:36-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nb-NO/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33959000 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:23:38 GMT ETag: "8cbdfcd71952e8de60e3614a7eab3fa1" Last-Modified: Fri, 12 Feb 2016 21:49:38 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Kz7r7eSMCVXjBOr2ET2jcpa_xOjN5Xg7 X-Cache: Miss from cloudfront Via: 1.1 75d3bdff1b8eb2920f04077d77f16ca0.cloudfront.net (CloudFront) X-Amz-Cf-Id: 2CFHPPFk8egmkB92zZT8mJLQNdU39vegTzteZJHxwJQ3u7AvLncbYQ== Length: 33959000 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.18M 25s 3072K ........ ........ ........ ........ ........ ........ 18% 3.29M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 4.85M 11s 9216K ........ ........ ........ ........ ........ ........ 37% 7.26M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 8.25M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 11.1M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 12.6M 3s 21504K ........ ........ ........ ........ ........ ........ 74% 13.6M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 14.8M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 17.4M 0s 30720K ........ ........ ........ ........ ...... 100% 22.1M=6.1s 2016-05-09 17:23:42 (5.33 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33959000/33959000] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nb-NO/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nb-NO/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:23:43-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nb-NO/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34811608 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:23:45 GMT ETag: "1ec18bc6b0713409ff06b73f1150f184" Last-Modified: Mon, 09 May 2016 22:07:10 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 0SvfHDDcjl4PTp.rNuviHVy_X1jEt2Jf X-Cache: Miss from cloudfront Via: 1.1 3344ddc09ccf1d185bb41add18940cc4.cloudfront.net (CloudFront) X-Amz-Cf-Id: BvdoWIH1I3Ist0G2NXWglGbURNZMn_xqgf9r_ee9Z13ycwDEtVw1EA== Length: 34811608 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.21M 25s 3072K ........ ........ ........ ........ ........ ........ 18% 3.36M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 5.39M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 6.13M 8s 12288K ........ ........ ........ ........ ........ ........ 45% 9.29M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 9.58M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 11.8M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 13.7M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 15.9M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 18.4M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 19.1M 0s 33792K ... 100% 60.0M=6.0s 2016-05-09 17:23:50 (5.50 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34811608/34811608] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/gulesider-NO.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/gulesider-NO.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/gulesider-NO.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/gulesider-NO.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/gulesider-NO.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/gulesider-NO.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "nb-NO"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Bursdag,Diverse,Favoritter,Ferie,Forretning,Gaver,Helligdager,Ideer,Jubileum,Klienter,Konkurranse,Kunde,Leverandører,Offentlig helligdag,Oppfølging,Personlig,Problemer,Prosjekter,Reise,Status,Telefonsamtaler"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "nb-NO"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_6-00000\l10n\nb-NO\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Bursdag,Diverse,Favoritter,Ferie,Forretning,Gaver,Helligdager,Ideer,Jubileum,Klienter,Konkurranse,Kunde,Leverandører,Offentlig helligdag,Oppfølging,Personlig,Problemer,Prosjekter,Reise,Status,Telefonsamtaler"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,17d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/gulesider-NO.xml" < remove "searchplugins/google.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 19a11 > remove "prldap60.dll" 28,30d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 34d22 < remove "mozalloc.dll" 39a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 46,48c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 51,53c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d59 < rmdir "searchplugins/" 73d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1094346 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:24 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1094345 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:24 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 2011847 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:24 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1094309 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:24 source/bin/searchplugins/amazondotcom.xml 1946262 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:24 source/bin/searchplugins/aol-web-search.xml 1946261 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:24 source/bin/searchplugins/bing.xml 2011796 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:24 source/bin/searchplugins/eBay.xml 1946259 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:24 source/bin/searchplugins/google.xml 2011794 2 -rw-r--r-- 1 cltbld Administrators 2303 May 17:24 source/bin/searchplugins/gulesider-NO.xml 2011793 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:24 source/bin/searchplugins/twitter.xml 2011792 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:24 source/bin/searchplugins/wikipedia.xml 2011791 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:24 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:24:24-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:24:26 GMT Keep-Alive: timeout=5, max=980 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:24:24 (2.10 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nl/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nl/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:24:25-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nl/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42369622 Connection: keep-alive Date: Tue, 10 May 2016 00:24:28 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 3ghqKPLC7EMUHwK5GwDsVBhgoz3RoIgH Last-Modified: Tue, 03 May 2016 14:18:42 GMT ETag: "ff5dd059d006615b58c93df723c2717d" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 8e86372eaaa62fc64b70e7bcde725dd9.cloudfront.net (CloudFront) X-Amz-Cf-Id: 96MG1keI-hLFwA5-PUOCHZ2jUT532XjJvcTgEgG0-IJfaBTqBMCDkA== Length: 42369622 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.24M 30s 3072K ........ ........ ........ ........ ........ ........ 14% 3.18M 19s 6144K ........ ........ ........ ........ ........ ........ 22% 5.38M 14s 9216K ........ ........ ........ ........ ........ ........ 29% 6.40M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 9.32M 8s 15360K ........ ........ ........ ........ ........ ........ 44% 9.60M 6s 18432K ........ ........ ........ ........ ........ ........ 51% 12.6M 5s 21504K ........ ........ ........ ........ ........ ........ 59% 13.0M 4s 24576K ........ ........ ........ ........ ........ ........ 66% 17.6M 3s 27648K ........ ........ ........ ........ ........ ........ 74% 18.4M 2s 30720K ........ ........ ........ ........ ........ ........ 81% 19.0M 1s 33792K ........ ........ ........ ........ ........ ........ 89% 19.5M 1s 36864K ........ ........ ........ ........ ........ ........ 96% 21.5M 0s 39936K ........ ........ ...... 100% 46.8M=6.3s 2016-05-09 17:24:32 (6.40 MB/s) - 'update/complete.mar' saved [42369622/42369622] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nl/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nl/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:24:33-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nl/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34634192 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:24:35 GMT ETag: "6db8685fe2bdeeff0ac856c553bf3178" Last-Modified: Fri, 12 Feb 2016 21:49:42 GMT x-amz-replication-status: COMPLETED x-amz-version-id: E1nSHb_pz9bhFqvCnO2h76Gzg6Q5uPW8 X-Cache: Miss from cloudfront Via: 1.1 990c804118e679d7ea0f4d3ca3cc4534.cloudfront.net (CloudFront) X-Amz-Cf-Id: KLuWt0qOthiXSDSCk2YFpFWMjG2DRjUbI-CB0dSdA3yMvYvHL_U2jw== Length: 34634192 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.02M 29s 3072K ........ ........ ........ ........ ........ ........ 18% 2.78M 18s 6144K ........ ........ ........ ........ ........ ........ 27% 4.72M 12s 9216K ........ ........ ........ ........ ........ ........ 36% 6.36M 9s 12288K ........ ........ ........ ........ ........ ........ 45% 7.69M 7s 15360K ........ ........ ........ ........ ........ ........ 54% 11.0M 5s 18432K ........ ........ ........ ........ ........ ........ 63% 10.6M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 13.0M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 16.3M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 17.7M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 18.7M 0s 33792K 100% 52.7M=6.8s 2016-05-09 17:24:40 (4.84 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34634192/34634192] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nl/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nl/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:24:41-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nl/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35482784 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:24:43 GMT ETag: "82c96c2583fdc2e40319f4c06d7b1aff" Last-Modified: Mon, 09 May 2016 21:58:24 GMT x-amz-replication-status: COMPLETED x-amz-version-id: QtVsX.o1AZJ_.gS0SJKpq8w92mXdzjdT X-Cache: Miss from cloudfront Via: 1.1 8e86372eaaa62fc64b70e7bcde725dd9.cloudfront.net (CloudFront) X-Amz-Cf-Id: OlVKUJwYfeJIhXD4gSgi5v_vYziPv37p5wT2RKbiMRb-V0vHsBzu3Q== Length: 35482784 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.13M 27s 3072K ........ ........ ........ ........ ........ ........ 17% 3.05M 17s 6144K ........ ........ ........ ........ ........ ........ 26% 5.10M 12s 9216K ........ ........ ........ ........ ........ ........ 35% 6.81M 9s 12288K ........ ........ ........ ........ ........ ........ 44% 8.64M 6s 15360K ........ ........ ........ ........ ........ ........ 53% 10.5M 5s 18432K ........ ........ ........ ........ ........ ........ 62% 12.5M 3s 21504K ........ ........ ........ ........ ........ ........ 70% 13.0M 2s 24576K ........ ........ ........ ........ ........ ........ 79% 16.3M 2s 27648K ........ ........ ........ ........ ........ ........ 88% 18.5M 1s 30720K ........ ........ ........ ........ ........ ........ 97% 19.1M 0s 33792K ........ ..... 100% 16.3M=6.3s 2016-05-09 17:24:48 (5.34 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35482784/35482784] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/nl.dic PREPARE REMOVEFILE dictionaries/nl.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/nl.dic PREPARE ADD dictionaries/nl.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/nl.dic EXECUTE REMOVEFILE dictionaries/nl.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/nl.dic EXECUTE ADD dictionaries/nl.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/nl.dic FINISH REMOVEFILE dictionaries/nl.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/nl.dic FINISH ADD dictionaries/nl.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 21,22c21,22 < CrashReporterDescriptionText2=%s ondervond een probleem en is vastgelopen.\n\nOm ons te helpen het probleem te onderzoeken en op te lossen kunt u ons een crashrapport toesturen. < CrashReporterDefault=De crashreporter wordt uitgevoerd na een crash, om het probleem te rapporteren aan de maker van de toepassing. Deze dient niet direct te worden gestart. --- > CrashReporterDescriptionText2=%s ondervond een probleem en is vastgelopen.\n\nOm ons te helpen het probleem te onderzoeken en op te lossen, kunt u ons een crashrapport toesturen. > CrashReporterDefault=De crashreporter wordt na een crash uitgevoerd om het probleem aan de maker van de toepassing te rapporteren. Deze dient niet direct te worden gestart. 25c25 < CommentGrayText=Voeg commentaar toe (commentaar is publiekelijk zichtbaar) --- > CommentGrayText=Voeg een opmerking toe (opmerkingen zijn publiekelijk zichtbaar) 29c29 < CheckIncludeURL=Het adres van de bezochte website meesturen --- > CheckIncludeURL=Het adres van de bezochte website bijvoegen diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "nl"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Cliënten,Concurrentie,Diversen,Favorieten,Giften,Ideeën,Klant,Kwesties,Leveranciers,Nationale feestdag,Persoonlijk,Projecten,Reizen,Status,Telefoongesprekken,Trouwdag,Vakantie,Vergadering,Verjaardag,Vervolggesprek,Vrije dagen,Zaken"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "nl"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nl\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Cliënten,Concurrentie,Diversen,Favorieten,Giften,Ideeën,Klant,Kwesties,Leveranciers,Nationale feestdag,Persoonlijk,Projecten,Reizen,Status,Telefoongesprekken,Trouwdag,Vakantie,Vergadering,Verjaardag,Vervolggesprek,Vrije dagen,Zaken"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d61 < rmdir "searchplugins/" 73d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1290943 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:25 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1290942 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:25 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1290941 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:25 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 2011799 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:25 source/bin/searchplugins/amazondotcom.xml 1094294 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:25 source/bin/searchplugins/aol-web-search.xml 1094293 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:25 source/bin/searchplugins/bing.xml 1159828 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:25 source/bin/searchplugins/eBay.xml 1094291 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:25 source/bin/searchplugins/twitter.xml 1159826 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:25 source/bin/searchplugins/wikipedia.xml 1159825 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:25 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:25:24-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:25:26 GMT Keep-Alive: timeout=5, max=999 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:25:24 (2.10 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nn-NO/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nn-NO/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:25:24-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nn-NO/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41604637 Connection: keep-alive Date: Tue, 10 May 2016 00:25:28 GMT x-amz-replication-status: COMPLETED x-amz-version-id: PULdeU3.KXbqsq6YW2FjLG1Atopbozea Last-Modified: Tue, 03 May 2016 14:33:06 GMT ETag: "55fe58ca89ed7957d07b3d1d9a97d968" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront) X-Amz-Cf-Id: GCKnBMkPOmrbNoFHVozoYXzs0uIFfBx3Aylz5YOFyISEdVI874OWZQ== Length: 41604637 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.43M 26s 3072K ........ ........ ........ ........ ........ ........ 15% 4.75M 15s 6144K ........ ........ ........ ........ ........ ........ 22% 6.32M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 7.60M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 7.74M 7s 15360K ........ ........ ........ ........ ........ ........ 45% 9.66M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 12.5M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 12.6M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 17.3M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 13.5M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 18.3M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 18.8M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 19.4M 0s 39936K ........ .. 100% 56.5M=5.7s 2016-05-09 17:25:31 (7.01 MB/s) - 'update/complete.mar' saved [41604637/41604637] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nn-NO/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nn-NO/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:25:32-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/nn-NO/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33964944 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:25:34 GMT ETag: "842d18d91573fd6e87e4a75e2a15313d" Last-Modified: Fri, 12 Feb 2016 21:49:43 GMT x-amz-replication-status: COMPLETED x-amz-version-id: qmWSNWUFNzgCh4bBV7RIPHap67JHNwut X-Cache: Miss from cloudfront Via: 1.1 aa96a51fedae85199c643eb5c8eca4e4.cloudfront.net (CloudFront) X-Amz-Cf-Id: Xhsif7SIvPv3AMrvZx2IzaTlK-QcAIDMyhM_mvxKJNXN0nY1hww3jQ== Length: 33964944 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.49M 20s 3072K ........ ........ ........ ........ ........ ........ 18% 1.84M 16s 6144K ........ ........ ........ ........ ........ ........ 27% 808K 19s 9216K ........ ........ ........ ........ ........ ........ 37% 743K 20s 12288K ........ ........ ........ ........ ........ ........ 46% 1.14M 16s 15360K ........ ........ ........ ........ ........ ........ 55% 1.73M 13s 18432K ........ ........ ........ ........ ........ ........ 64% 1.69M 10s 21504K ........ ........ ........ ........ ........ ........ 74% 684K 8s 24576K ........ ........ ........ ........ ........ ........ 83% 1.19M 5s 27648K ........ ........ ........ ........ ........ ........ 92% 2.85M 2s 30720K ........ ........ ........ ........ ...... 100% 1.98M=27s 2016-05-09 17:25:59 (1.20 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33964944/33964944] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nn-NO/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nn-NO/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:26:00-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/nn-NO/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34813504 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:26:02 GMT ETag: "e4953f55b736ccc6762614f339def916" Last-Modified: Mon, 09 May 2016 22:21:07 GMT x-amz-replication-status: COMPLETED x-amz-version-id: bsfVm6Qw4ZLgbpVOska7mtALI4.h6RbH X-Cache: Miss from cloudfront Via: 1.1 dc7c4fb5024ff022cad1642ec506a6e8.cloudfront.net (CloudFront) X-Amz-Cf-Id: upVLN8sWfbCcSVul1wUKoS_Vpk6-RKK2WoZHQ-XI0hGvZ2H34TFbiQ== Length: 34813504 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 695K 44s 3072K ........ ........ ........ ........ ........ ........ 18% 1.33M 30s 6144K ........ ........ ........ ........ ........ ........ 27% 4.08M 20s 9216K ........ ........ ........ ........ ........ ........ 36% 5.55M 14s 12288K ........ ........ ........ ........ ........ ........ 45% 8.05M 10s 15360K ........ ........ ........ ........ ........ ........ 54% 8.21M 7s 18432K ........ ........ ........ ........ ........ ........ 63% 6.81M 5s 21504K ........ ........ ........ ........ ........ ........ 72% 5.16M 4s 24576K ........ ........ ........ ........ ........ ........ 81% 5.41M 2s 27648K ........ ........ ........ ........ ........ ........ 90% 5.42M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 5.41M 0s 33792K ... 100% 6.14M=11s 2016-05-09 17:26:12 (2.91 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34813504/34813504] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/gulesider-NO.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/gulesider-NO.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/gulesider-NO.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/gulesider-NO.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/gulesider-NO.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/gulesider-NO.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,21c1,21 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "nn-NO"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Arbeid,Favorittar,Ferie,Fridagar,Fødselsdag,GÃ¥ver,Idear,Jubileum,Klientar,Konkurranse,Kunde,Leverandørar,Møte,Offentleg helgedag,Oppfølging,Personleg,Problem,Prosjekt,Reise,Status,Telefonsamtalar,Ymse"); < --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "nn-NO"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\nn-NO\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Arbeid,Favorittar,Ferie,Fridagar,Fødselsdag,GÃ¥ver,Idear,Jubileum,Klientar,Konkurranse,Kunde,Leverandørar,Møte,Offentleg helgedag,Oppfølging,Personleg,Problem,Prosjekt,Reise,Status,Telefonsamtalar,Ymse"); > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/gulesider-NO.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 70d59 < rmdir "searchplugins/" 72d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1487557 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:26 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1422020 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:26 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1487555 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:26 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1159835 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:26 source/bin/searchplugins/amazondotcom.xml 1159834 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:26 source/bin/searchplugins/aol-web-search.xml 1159833 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:26 source/bin/searchplugins/bing.xml 1225368 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:26 source/bin/searchplugins/eBay.xml 1159831 2 -rw-r--r-- 1 cltbld Administrators 2303 May 17:26 source/bin/searchplugins/gulesider-NO.xml 1290902 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:26 source/bin/searchplugins/twitter.xml 1290901 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:26 source/bin/searchplugins/wikipedia.xml 1356436 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:26 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:26:46-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:26:48 GMT Keep-Alive: timeout=5, max=845 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.13M=0s 2016-05-09 17:26:47 (2.13 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pa-IN/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pa-IN/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:26:47-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pa-IN/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41662638 Connection: keep-alive Date: Tue, 10 May 2016 00:26:50 GMT x-amz-replication-status: COMPLETED x-amz-version-id: FU1k3_Z1ogsWMqVi4FvSOArqVClVqqDC Last-Modified: Tue, 03 May 2016 14:47:45 GMT ETag: "260fcb6d21dc1f626aa0a335adb3a642" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 2a47832c458ab2a6b20c8363f5aa35ea.cloudfront.net (CloudFront) X-Amz-Cf-Id: 1OrVBuNeXTf_5l64-MPkKfV3TUYalsaJL_VPoXRv0Kh0saMax71KrQ== Length: 41662638 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.26M 29s 3072K ........ ........ ........ ........ ........ ........ 15% 3.78M 18s 6144K ........ ........ ........ ........ ........ ........ 22% 5.42M 13s 9216K ........ ........ ........ ........ ........ ........ 30% 6.70M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 9.39M 7s 15360K ........ ........ ........ ........ ........ ........ 45% 11.0M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 12.5M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 13.4M 3s 24576K ........ ........ ........ ........ ........ ........ 67% 8.15M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 7.24M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 6.78M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 7.33M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 7.64M 0s 39936K ........ ... 100% 6.39M=7.4s 2016-05-09 17:26:55 (5.39 MB/s) - 'update/complete.mar' saved [41662638/41662638] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pa-IN/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pa-IN/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:26:56-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pa-IN/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34080560 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:26:58 GMT ETag: "17401c344aa252335e2e4da0ba1094a3" Last-Modified: Fri, 12 Feb 2016 21:49:45 GMT x-amz-replication-status: COMPLETED x-amz-version-id: o2KFoZbCIGS7AYM3r5Vp.7EJdbPjzEgK X-Cache: Miss from cloudfront Via: 1.1 d01884a3320364227d925bce1a38f0ad.cloudfront.net (CloudFront) X-Amz-Cf-Id: Icndh643hPui2zUwfdwpAyhiLAOQt5zhfiGxUu3C625kFue3ebrFzw== Length: 34080560 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.11M 27s 3072K ........ ........ ........ ........ ........ ........ 18% 2.34M 18s 6144K ........ ........ ........ ........ ........ ........ 27% 2.30M 14s 9216K ........ ........ ........ ........ ........ ........ 36% 2.11M 11s 12288K ........ ........ ........ ........ ........ ........ 46% 2.08M 10s 15360K ........ ........ ........ ........ ........ ........ 55% 2.38M 8s 18432K ........ ........ ........ ........ ........ ........ 64% 2.36M 6s 21504K ........ ........ ........ ........ ........ ........ 73% 2.31M 4s 24576K ........ ........ ........ ........ ........ ........ 83% 2.38M 3s 27648K ........ ........ ........ ........ ........ ........ 92% 2.36M 1s 30720K ........ ........ ........ ........ ........ 100% 2.41M=16s 2016-05-09 17:27:12 (2.09 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34080560/34080560] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pa-IN/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pa-IN/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:27:13-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pa-IN/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34927688 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:27:15 GMT ETag: "5ebb2dd1253e17875435d132c1b283bf" Last-Modified: Mon, 09 May 2016 22:38:57 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 9ttSKlY9hA6L.qZdptKweYNA85t.5jXT X-Cache: Miss from cloudfront Via: 1.1 95da1452a75435200220a7075ca3893f.cloudfront.net (CloudFront) X-Amz-Cf-Id: si-9qnXgTfcuQo1JMKaSrYnzjdDMI8bG2CiWMUF6IDFLgXPlAkMfSg== Length: 34927688 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.21M 25s 3072K ........ ........ ........ ........ ........ ........ 18% 3.25M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 4.91M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 7.13M 8s 12288K ........ ........ ........ ........ ........ ........ 45% 7.65M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 10.3M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 12.5M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 12.9M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 15.7M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 16.8M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 19.4M 0s 33792K .... 100% 20.0M=6.1s 2016-05-09 17:27:20 (5.44 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34927688/34927688] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" < < //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" < < //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "pa-IN"); < < //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" > > //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" > > //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "pa-IN"); > > //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pa-IN\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d59 < rmdir "searchplugins/" 71d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1422025 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:27 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1553096 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:27 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1553095 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:27 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1290909 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:27 source/bin/searchplugins/amazondotcom.xml 1290908 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:27 source/bin/searchplugins/aol-web-search.xml 1356443 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:27 source/bin/searchplugins/bing.xml 1356442 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:27 source/bin/searchplugins/eBay.xml 1356441 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:27 source/bin/searchplugins/twitter.xml 1421976 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:27 source/bin/searchplugins/wikipedia.xml 1356439 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:27 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:27:54-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:27:59 GMT Keep-Alive: timeout=5, max=735 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.12M=0s 2016-05-09 17:27:57 (2.12 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pl/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pl/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:27:58-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pl/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42737394 Connection: keep-alive Date: Tue, 10 May 2016 00:28:01 GMT x-amz-replication-status: COMPLETED x-amz-version-id: kKdDF3sw2.vyPIHLxDOUcq8oLFUJ5fO_ Last-Modified: Tue, 03 May 2016 15:02:33 GMT ETag: "3806e33938f9f80dec34184c452c2d48" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 dc7c4fb5024ff022cad1642ec506a6e8.cloudfront.net (CloudFront) X-Amz-Cf-Id: y_5cRXtDOopv40PvpdvBa2L7rYs2oiAkGUVEL_lzEXBhid9jAcHtrg== Length: 42737394 (41M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 973K 40s 3072K ........ ........ ........ ........ ........ ........ 14% 2.51M 25s 6144K ........ ........ ........ ........ ........ ........ 22% 3.69M 18s 9216K ........ ........ ........ ........ ........ ........ 29% 4.80M 14s 12288K ........ ........ ........ ........ ........ ........ 36% 6.13M 11s 15360K ........ ........ ........ ........ ........ ........ 44% 9.74M 8s 18432K ........ ........ ........ ........ ........ ........ 51% 6.25M 7s 21504K ........ ........ ........ ........ ........ ........ 58% 6.29M 5s 24576K ........ ........ ........ ........ ........ ........ 66% 6.08M 4s 27648K ........ ........ ........ ........ ........ ........ 73% 6.82M 3s 30720K ........ ........ ........ ........ ........ ........ 80% 6.61M 2s 33792K ........ ........ ........ ........ ........ ........ 88% 6.86M 1s 36864K ........ ........ ........ ........ ........ ........ 95% 5.31M 0s 39936K ........ ........ ........ .... 100% 9.09M=10s 2016-05-09 17:28:08 (4.03 MB/s) - 'update/complete.mar' saved [42737394/42737394] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pl/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pl/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:28:09-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pl/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34867040 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:28:12 GMT ETag: "039319e2d183b12f2839e04798fb23b7" Last-Modified: Fri, 12 Feb 2016 21:49:48 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 8Zi9qmbLdz28_aKv9BHGzB7cnvcstDiw X-Cache: Miss from cloudfront Via: 1.1 11512f00e812993b9daa35c376d7cb20.cloudfront.net (CloudFront) X-Amz-Cf-Id: hmbvr--J6iMk1pMxf-m9ULViutnNU90sji2qMmZRwmmEXK29mwHY-g== Length: 34867040 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 990K 31s 3072K ........ ........ ........ ........ ........ ........ 18% 2.64M 19s 6144K ........ ........ ........ ........ ........ ........ 27% 3.35M 14s 9216K ........ ........ ........ ........ ........ ........ 36% 2.54M 11s 12288K ........ ........ ........ ........ ........ ........ 45% 2.16M 9s 15360K ........ ........ ........ ........ ........ ........ 54% 2.65M 7s 18432K ........ ........ ........ ........ ........ ........ 63% 2.86M 6s 21504K ........ ........ ........ ........ ........ ........ 72% 2.83M 4s 24576K ........ ........ ........ ........ ........ ........ 81% 2.98M 3s 27648K ........ ........ ........ ........ ........ ........ 90% 2.99M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 2.95M 0s 33792K .... 100% 2.57M=14s 2016-05-09 17:28:25 (2.36 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34867040/34867040] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pl/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pl/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:28:25-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pl/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35708360 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:28:28 GMT ETag: "147395394c075355f9bf6bd68ae97020" Last-Modified: Mon, 09 May 2016 22:57:11 GMT x-amz-replication-status: COMPLETED x-amz-version-id: kTTw2_8Ane4doWewAs6g4ArSh2_jZOXM X-Cache: Miss from cloudfront Via: 1.1 7db492e48a5d55351dcb787a8a14e113.cloudfront.net (CloudFront) X-Amz-Cf-Id: RUogvU6eh3cLnvmNOPwfK63UZLq9KWz6BLjoND0HCY1MH56z5NTccA== Length: 35708360 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 923K 34s 3072K ........ ........ ........ ........ ........ ........ 17% 2.17M 22s 6144K ........ ........ ........ ........ ........ ........ 26% 4.02M 15s 9216K ........ ........ ........ ........ ........ ........ 35% 5.38M 11s 12288K ........ ........ ........ ........ ........ ........ 44% 6.63M 8s 15360K ........ ........ ........ ........ ........ ........ 52% 7.94M 6s 18432K ........ ........ ........ ........ ........ ........ 61% 8.77M 4s 21504K ........ ........ ........ ........ ........ ........ 70% 12.5M 3s 24576K ........ ........ ........ ........ ........ ........ 79% 12.8M 2s 27648K ........ ........ ........ ........ ........ ........ 88% 17.4M 1s 30720K ........ ........ ........ ........ ........ ........ 96% 13.9M 0s 33792K ........ ........ 100% 42.1M=8.1s 2016-05-09 17:28:34 (4.22 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35708360/35708360] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/wolnelektury-pl.xml PREPARE REMOVEFILE searchplugins/wikipedia-pl.xml PREPARE REMOVEFILE searchplugins/pwn-pl.xml PREPARE REMOVEFILE searchplugins/merlin-pl.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/allegro-pl.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/pl.dic PREPARE REMOVEFILE dictionaries/pl.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/wolnelektury-pl.xml PREPARE ADD searchplugins/wikipedia-pl.xml PREPARE ADD searchplugins/pwn-pl.xml PREPARE ADD searchplugins/merlin-pl.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/allegro-pl.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/pl.dic PREPARE ADD dictionaries/pl.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/wolnelektury-pl.xml EXECUTE REMOVEFILE searchplugins/wikipedia-pl.xml EXECUTE REMOVEFILE searchplugins/pwn-pl.xml EXECUTE REMOVEFILE searchplugins/merlin-pl.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/allegro-pl.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/pl.dic EXECUTE REMOVEFILE dictionaries/pl.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/wolnelektury-pl.xml EXECUTE ADD searchplugins/wikipedia-pl.xml EXECUTE ADD searchplugins/pwn-pl.xml EXECUTE ADD searchplugins/merlin-pl.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/allegro-pl.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/pl.dic EXECUTE ADD dictionaries/pl.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/wolnelektury-pl.xml FINISH REMOVEFILE searchplugins/wikipedia-pl.xml FINISH REMOVEFILE searchplugins/pwn-pl.xml FINISH REMOVEFILE searchplugins/merlin-pl.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/allegro-pl.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/pl.dic FINISH REMOVEFILE dictionaries/pl.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/wolnelektury-pl.xml FINISH ADD searchplugins/wikipedia-pl.xml FINISH ADD searchplugins/pwn-pl.xml FINISH ADD searchplugins/merlin-pl.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/allegro-pl.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/pl.dic FINISH ADD dictionaries/pl.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "pl"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Rocznica,Urodziny,Biznes,Rozmowy,Klienci,Konkurencja,Ulubione,Kontynuacja,Prezenty,ÅšwiÄ™ta,PomysÅ‚y,Problemy,Spotkanie,Różne,Osobiste,Projekty,ÅšwiÄ™to paÅ„stwowe,Dostawcy,Podróż,Wakacje"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "pl"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pl\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Rocznica,Urodziny,Biznes,Rozmowy,Klienci,Konkurencja,Ulubione,Kontynuacja,Prezenty,ÅšwiÄ™ta,PomysÅ‚y,Problemy,Spotkanie,Różne,Osobiste,Projekty,ÅšwiÄ™to paÅ„stwowe,Dostawcy,Podróż,Wakacje"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/wolnelektury-pl.xml" < remove "searchplugins/wikipedia-pl.xml" < remove "searchplugins/pwn-pl.xml" < remove "searchplugins/merlin-pl.xml" < remove "searchplugins/google.xml" < remove "searchplugins/allegro-pl.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 70d61 < rmdir "searchplugins/" 72d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1815244 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:29 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1815243 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:29 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1815242 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:29 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1421982 2 -rw-r--r-- 1 cltbld Administrators 2261 May 17:29 source/bin/searchplugins/allegro-pl.xml 1487517 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:29 source/bin/searchplugins/google.xml 1487516 1 -rw-r--r-- 1 cltbld Administrators 1179 May 17:29 source/bin/searchplugins/merlin-pl.xml 1553051 2 -rw-r--r-- 1 cltbld Administrators 2066 May 17:29 source/bin/searchplugins/pwn-pl.xml 1553050 5 -rw-r--r-- 1 cltbld Administrators 9353 May 17:29 source/bin/searchplugins/wikipedia-pl.xml 1553049 1 -rw-r--r-- 1 cltbld Administrators 1238 May 17:29 source/bin/searchplugins/wolnelektury-pl.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:29:10-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:29:12 GMT Keep-Alive: timeout=5, max=958 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.08M=0s 2016-05-09 17:29:10 (2.08 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-BR/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-BR/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:29:11-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-BR/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41775330 Connection: keep-alive Date: Tue, 10 May 2016 00:29:14 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 2fj0emApXevE4lQod180EaIfVncpflmb Last-Modified: Tue, 03 May 2016 15:17:49 GMT ETag: "e83f94134dc699d74c3c27beb529d72e" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 95da1452a75435200220a7075ca3893f.cloudfront.net (CloudFront) X-Amz-Cf-Id: 2Ymq8pr5KhwvSK2k8KuueDzBJ2a6cmkJ68VzkxGNnjsw_ow3jIdZGA== Length: 41775330 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.20M 31s 3072K ........ ........ ........ ........ ........ ........ 15% 2.63M 21s 6144K ........ ........ ........ ........ ........ ........ 22% 3.73M 15s 9216K ........ ........ ........ ........ ........ ........ 30% 6.31M 11s 12288K ........ ........ ........ ........ ........ ........ 37% 8.07M 9s 15360K ........ ........ ........ ........ ........ ........ 45% 10.2M 7s 18432K ........ ........ ........ ........ ........ ........ 52% 10.4M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 13.1M 4s 24576K ........ ........ ........ ........ ........ ........ 67% 12.6M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 14.3M 2s 30720K ........ ........ ........ ........ ........ ........ 82% 15.6M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 15.4M 1s 36864K ........ ........ ........ ........ ........ ........ 97% 10.4M 0s 39936K ........ ..... 100% 9.37M=7.3s 2016-05-09 17:29:18 (5.44 MB/s) - 'update/complete.mar' saved [41775330/41775330] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pt-BR/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pt-BR/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:29:19-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pt-BR/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34115016 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:29:22 GMT ETag: "122f159caadb3be1eb54e99b2c327663" Last-Modified: Fri, 12 Feb 2016 21:49:51 GMT x-amz-replication-status: COMPLETED x-amz-version-id: joumztFITHVI61pn0w3KftUUIjXiufyO X-Cache: Miss from cloudfront Via: 1.1 6e65abb04cb818a6ec78111935b507f7.cloudfront.net (CloudFront) X-Amz-Cf-Id: c8BQ6hCYiQ-LUIN0jPwohr3MdJj-3os26PJOUCl4wXTbfTCTXEFZ8w== Length: 34115016 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.21M 24s 3072K ........ ........ ........ ........ ........ ........ 18% 3.27M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 5.02M 10s 9216K ........ ........ ........ ........ ........ ........ 36% 7.03M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 8.35M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 10.1M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 8.75M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 18.1M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 9.54M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 9.65M 1s 30720K ........ ........ ........ ........ ........ 100% 10.6M=6.5s 2016-05-09 17:29:27 (5.04 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34115016/34115016] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pt-BR/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pt-BR/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:29:27-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pt-BR/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34969952 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:29:30 GMT ETag: "b8a7b2163f6d66b9d87aa42f9573fb13" Last-Modified: Mon, 09 May 2016 23:15:21 GMT x-amz-replication-status: COMPLETED x-amz-version-id: QC0EwRIE052LlIy5RWhhU9tUqqG6rbhW X-Cache: Miss from cloudfront Via: 1.1 ff09df097f823b2834408d17e9779d62.cloudfront.net (CloudFront) X-Amz-Cf-Id: Uc6zIZjNqZLS5ImKvPyKdOqmmuEZ6cwBHODjo8mf84HCFOgS6RPGDA== Length: 34969952 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.57M 19s 3072K ........ ........ ........ ........ ........ ........ 17% 7.54M 11s 6144K ........ ........ ........ ........ ........ ........ 26% 9.37M 7s 9216K ........ ........ ........ ........ ........ ........ 35% 10.6M 5s 12288K ........ ........ ........ ........ ........ ........ 44% 12.4M 4s 15360K ........ ........ ........ ........ ........ ........ 53% 14.3M 3s 18432K ........ ........ ........ ........ ........ ........ 62% 16.0M 2s 21504K ........ ........ ........ ........ ........ ........ 71% 18.4M 1s 24576K ........ ........ ........ ........ ........ ........ 80% 19.0M 1s 27648K ........ ........ ........ ........ ........ ........ 89% 19.7M 0s 30720K ........ ........ ........ ........ ........ ........ 98% 25.8M 0s 33792K ..... 100% 24.0M=4.2s 2016-05-09 17:29:32 (8.02 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34969952/34969952] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/pt-BR.dic PREPARE REMOVEFILE dictionaries/pt-BR.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/pt-BR.dic PREPARE ADD dictionaries/pt-BR.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/pt-BR.dic EXECUTE REMOVEFILE dictionaries/pt-BR.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/pt-BR.dic EXECUTE ADD dictionaries/pt-BR.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/pt-BR.dic FINISH REMOVEFILE dictionaries/pt-BR.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/pt-BR.dic FINISH ADD dictionaries/pt-BR.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 47c47 < ErrorExtraFileExists=The application didn't leave an application data file. --- > ErrorExtraFileExists=O aplicativo não deixou um arquivo de dados. 50c50 < ErrorDumpFileExists=The application did not leave a crash dump file. --- > ErrorDumpFileExists=O aplicativo não deixou um arquivo dump. diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/dictionaries/pt-BR.dic target/bin/dictionaries/pt-BR.dic 1c1 < 40452 --- > 40821 87c87 < abertura/pER --- > abertura/phER 95a96 > abiogênese/p 326c327 < acatar/XYPLMDNv --- > acatar/XYPLDMNvS 338c339 < acelerar/XYPLScMDnBR --- > acelerar/XYPLDMBNWcnRS 419a421,422 > acolitar/XYPL > acólito/fp 430c433 < acontecer/XYPLM --- > acontecer/XYPLMS 493a497 > acumpliciar/XYPL 564c568 < adiantar/XYPLMDNW --- > adiantar/XYPLDMBNW 643a648 > adulterino/fp 648c653 < aduzir/ZYL --- > aduzir/ZYLc 748a754 > aerobarco/p 758a765 > Aerolíneas 845a853 > afoguear/ZYPL 1102a1111 > Alana 1287a1297 > alho-poró 1306a1317 > alienatório/fp 1336a1348 > Allende 1355c1367 < alocagem/p --- > alocagem/pR 1372c1384 < aloprar/XYPLBWc --- > aloprar/XYPLDBWc 1385a1398 > alquilar/XYPLDcn 1392a1406 > altanaria/f 1447a1462 > alvar/p 1493c1508 < amamentar/XYPLcD --- > amamentar/XYPLDcn 1531a1547 > amásio/fp 1553a1570 > ambiência/p 1589a1607 > americanófilo/fp 1654c1672,1673 < amordaçar/XYPL --- > amorável/pm > amordaçar/XYPLM 1757a1777 > ancho 1858a1879 > anglicista/p 1895a1917,1918 > animaçãozinha > animaçõezinhas 1899d1921 < animado/fplhs 1906c1928 < animar/XYPLDBNcnvRS --- > animar/XYPLDBNWcnvRS 1917d1938 < Aniston 2190d2210 < antitético/fpH 2354a2375 > apiário/p 2392a2414 > Apolônio 2527a2550 > Aquaplay 2544a2568 > aquilatar/XYPL 2585a2610 > Araruama 2599c2624 < árbitro/px --- > árbitro/fpx 2727c2752 < armamentista/p --- > armamentista/pS 2764d2788 < Arpoador 2861c2885 < arrítmico --- > arrítmico/fpA 2863c2887 < arrivista --- > arrivista/p 2949a2974 > artroscopia/p 2993a3019 > asinino/fp 3091c3117 < assintótico/fp --- > assintótico/fpH 3098a3125 > assistivo/fp 3118c3145 < assossegar/XYPL --- > assossegar/XYPLDS 3135a3163 > Astra 3169a3198 > ataraxia/p 3190a3220 > atêm 3201a3232 > atenho-me 3208a3240 > aterosclerose/pA 3229c3261,3262 < atinar/XYPL --- > atinar/XYPLcS > atinente/p 3239c3272,3276 < ativar/XYPLDcnRSI --- > ativar/XYPLDMcnRSI > atividade-fim > atividade-meio > atividades-fim > atividades-meio 3243d3279 < Atlântico 3279a3316 > atrabiliário/fp 3294d3330 < atratividade/p 3329c3365,3366 < atuarial/p --- > atuarial/pm > atuário/p 3331a3369 > atucanar/XYPL 3419a3458 > austeridade/pA 3421c3460 < austero/fpid --- > austero/fpi 3437a3477 > autoaceitar/XYPLc 3457a3498 > autocarregar/XYPLM 3542a3584,3585 > autogolpe/p > autogoverno/p 3558a3602 > autolimitar/XYPLc 3611c3655 < autoritário/fdp --- > autoritário/fpdH 3616a3661 > autorreferencial/p 3622a3668 > autorregularizar/XYPLDc 3624a3671 > autorreparar/XYPLcv 3630a3678 > autossabotar/XYPLD 3639a3688,3690 > autotrofia/pi > autotrófico/fp > autótrofo/fp 3733a3785 > AVG 3806c3858 < avoado/fp --- > avoar/XYPL 3889a3942 > baba-ovo/p 3920d3972 < bacharelando 3922a3975 > bacharelesco/fp 4007c4060 < baitola/ph --- > baitola/phG 4134c4187 < bandeira/ph --- > bandeira/phx 4195a4249 > baratinar/XYPL 4306a4361 > baseado/pl 4309a4365 > BASF 4314a4371 > basilar/p 4368c4425 < bater/XYPLMDN --- > bater/XYPLDMNWc 4456c4513 < beco/p --- > beco/pl 4491c4548 < Beirute --- > beirute/p 4498a4556 > beleguim/p 4629,4630c4687 < beneficente/p < beneficiado --- > beneficente/ps 4727c4784 < besta/pGh --- > besta/phmG 4791c4848 < bicameral/p --- > bicameral/pi 4899a4957 > binarismo/p 4920a4979 > biogenético/fp 4934c4993 < biomedicina --- > biomedicina/p 4957c5016 < biparental/p --- > biparental/pd 4977a5037 > birracial/p 5034c5094 < bizarria --- > bizarria/p 5056a5117 > Blatter 5086a5148 > bluesman 5221a5284 > bolchevizar/XYPLcn 5267a5331 > bombeabilidade/p 5387c5451 < borrifar/XYPLDM --- > borrifar/XYPLDMW 5575,5576c5639 < brilho/plA < brilhoso/fp --- > brilho/plwA 5654a5718 > brumário 5695a5760 > bucomaxilofacial/p 5720a5786 > bugueiro/fp 5748c5814 < bullying --- > bullying/A 5781c5847,5848 < burguês/fplhiA --- > burguesão/fp > burguês/fplhisA 5785a5853 > burnout 5787a5856 > burocratês 5826a5896 > BuzzFeed 5921a5992,5993 > caça-fantasmas > Caça-Fantasmas 5926a5999 > caça-palavra/p 5947c6020 < cacharel --- > cacharréu/p 5966a6040 > cacimba/ph 5983a6058 > cadaverina/p 6012c6087 < cães-guias --- > cães-guia/p 6023c6098 < cafetão/p --- > cafetão/px 6026c6101 < cafetina/p --- > cafetina/px 6061d6135 < câimbra/p 6088a6163 > cala-boca 6132a6208,6209 > caldeiraria/p > caldeireiro/fp 6232d6308 < camaroteiro 6243c6319 < cambiar/XYPL --- > cambiar/XYPLnR 6264a6341 > came/p 6345a6423 > canastríssimo/fp 6407c6485 < canhoto/fplhG --- > canhoto/fplhiG 6615c6693 < carbonizar/XYPLcDv --- > carbonizar/XYPLDcnvS 6642a6721 > cardiopulmonar/p 6646a6726 > cardioversão/p 6653a6734 > carenado/fp 6666c6747 < carga/p --- > carga/pEOS 6760c6841 < carótida --- > carótida/p 6773c6854 < carrancudo/fp --- > carrancudo/fplh 6777a6859 > carrara/p 6778a6861,6862 > carraspana/p > carreado/fp 6782,6783c6866 < carregado/fpsE < carregar/XYPLDMWcvRS --- > carregar/XYPLDMNWcvERS 6878c6961 < casar/XYPLSMvW --- > casar/XYPLDMWvRS 6962a7046 > catadura/p 7018c7102,7103 < cateter/pi --- > cateterismo/pE > cateter/p 7022a7108 > catiça/p 7233c7319 < centelha --- > centelha/ph 7259c7345 < centro/ptl --- > centro/pitl 7262,7263c7348 < centuplicadamente < centuplicar/XYPL --- > centuplicar/XYPLB 7294c7379 < cerimonial/pt --- > cerimonial/pmt 7323a7409 > cervídeo/fp 7389a7476 > chambre/p 7403a7491 > chanca/p 7494c7582 < checar/XYPLD --- > checar/XYPLDR 7521a7610 > cheião/fp 7579a7669 > chinelagem/p 7844a7935 > Cinemark 7875a7967 > cinzelar/XYPLMD 7942a8035 > cisplatino/fp 7980c8073 < civilizar/XYPLcDvB --- > civilizar/XYPLDBNWcv 7985a8079 > Clair 8049d8142 < claviculado 8051a8145 > claviculário/p 8108c8202 < clínico/fpE --- > clínico/fpEu 8167d8260 < CNT 8169a8263 > CNT/x 8273a8368 > codirigir/XYPL 8302a8398 > coestrelar/XYPL 8388a8485 > colendo/fp 8469a8567 > colunistazinho/fp 8571a8670 > comicidade/p 8600c8699 < comodista --- > comodista/p 8689a8789 > compliance 8764c8864 < comprobatório/fp --- > comprobatório/fpH 8797c8897 < computador/pl --- > computador/plE 8824a8925 > Concacaf 8849a8951 > concertação/p 8888a8991 > concórdia/p 8896a9000 > concretude/p 8921a9026 > condestável/p 8946c9051 < conectar/XYPLSR --- > conectar/XYPLvFSR 9123a9229 > consentâneo/fp 9137d9242 < conservado/fps 9139,9141c9244,9245 < conservadorismo/p < conserva/p < conservar/XYPLWnv --- > conserva/ph > conservar/XYPLNWnv 9274c9378 < consulente --- > consulente/p 9295c9399 < consumo/ptiPL --- > consumo/pitAPL 9314c9418 < contaminar/XYPLcDvSn --- > contaminar/XYPLDcnvAS 9326a9431 > contemporaneamente 9553c9658 < contrato/uplE --- > contrato/upltE 9694d9798 < convidado/fps 9696c9800 < convidar/XYPLDS --- > convidar/XYPLDNWS 9769a9874 > coonestar/XYPL 9883a9989 > Corona 9920c10026 < correção/p --- > correção/pF 10015c10121 < corromper/XYPLMD --- > corromper/XYPLDMv 10019c10125 < corrosivo/fpA --- > corrosivo/fpdA 10074c10180 < cosmopolita/ip --- > cosmopolita/piA 10086d10191 < Costa 10183c10288 < cozer/XYPLMD --- > cozer/XYPLDME 10185c10290 < cozinhar/XYPLv --- > cozinhar/XYPLvE 10206a10312 > cranioencefálico/fp 10209a10316 > craquear/ZYPLM 10220c10327 < cravar/XYPLcD --- > cravar/XYPLDWc 10227c10334 < cream --- > cream/a 10291c10398 < criado/fp --- > criado/fpx 10301c10408 < criar/XYPLDcvR --- > criar/XYPLDWcvR 10387a10495 > crômico/fp 10409a10518 > CrossFit 10559a10669 > curimba/p 10592a10703 > cusco/p 10632a10744 > CVT/a 10650a10763 > dachshund 10764a10878 > data-base 10765a10880 > datacenter/a 10766a10882 > data-limite 10768a10885 > datas-base/p 10769a10887 > datas-limite/p 10784c10902,10905 < d'Ãvila --- > d'Ãvila/! > d’Ãvila > D'Ãvila/! > D’Ãvila 10857a10979 > decíduo/fp 10883a11006 > déco 10969a11093 > defeso/p 11026c11150 < degelo --- > degelo/p 11116,11117c11240,11241 < demagogia/p < demagógico/fp --- > demagogia/pi > demagógico/fpH 11178a11303,11304 > demultiplexagem/p > demultiplexar/XYPLDc 11240c11366 < depenar/XYPL --- > depenar/XYPLD 11300a11427 > dermato/! 11307c11434 < dermocosmético/p --- > dermocosmético/fp 11331d11457 < desacatar/XYPLM 11347a11474 > deságua 11350a11478 > deságuam 11396d11523 < desassossegar/XYPLD 11403d11529 < desatinar/XYPLc 11529d11654 < descarga/p 11531a11657 > descarrego/p 11538a11665 > descenso/p 11675,11676c11802,11803 < desesperador/fpH < desesperar/XYPLBNn --- > desesperadoramente > desesperar/XYPLDBNn 11693d11819 < desfigurar/XYPLcDv 11911d12036 < desrespeitar/XYPLD 11913d12037 < desrespeitoso/pmf 12064a12189 > detergência/p 12201a12327 > devocional/p 12254c12380 < diálise --- > diálise/p 12290a12417 > Dick 12303d12429 < Dieckmann 12528c12654 < discrição --- > discrição/pI 12531c12657 < discriminar/XYPLcDnvBA --- > discriminar/XYPLDBcnvAI 12533c12659 < discriminatório/fp --- > discriminatório/fpI 12563a12690,12691 > dismorfia/pr > dismorfo/fp 12670c12798 < distintivo/fp --- > distintivo/fpm 12678d12805 < distraidamente 12682c12809 < distribuir/KPLcDv --- > distribuir/KPLDcvRu 12684a12812 > distritão/p 12685a12814 > distrofia/p 12704a12834 > diurese/p 12710c12840 < diva/ph --- > diva/phw 12737a12868 > divinal/p 13016c13147 < doutor/fp --- > doutor/fpl 13036a13168 > dracma/p 13087d13218 < Drupal 13205a13337 > ECG 13247a13380 > econômico-social/p 13263a13397 > ECU/p 13277c13411 < EDGE --- > Edge 13337a13472 > EEG 13350a13486 > Éfeso 13396c13532,13533 < Einstein --- > Einstein/EO > einsteiniano/fpE 13461a13599 > eletrocardiografia/pqr 13469c13607 < eletroeletrônico/p --- > eletroeletrônico/fp 13600c13738 < embalar/XYPLDNWES --- > embalar/XYPLDNWERS 13653a13792 > embornal/p 13810c13949 < empoeirar/XYPLS --- > empoeirar/XYPLMS 13823a13963 > empregaço/p 13833a13974 > empresa-fantasma 13839,13840c13980,13982 < emprestar/XYPLDvN < empréstimo/p --- > empresas-fantasma/p > emprestar/XYPLDNvR > empréstimo/pR 13864c14006 < encabulado/fp --- > encabular/XYPLS 13945a14088 > encimado/fp 14042c14185 < endotérmico --- > endotérmico/fp 14126c14269 < engavetar/XYPLMS --- > engavetar/XYPLDMS 14137c14280 < engessar/XYPLDM --- > engessar/XYPLDMS 14602c14745 < equinocial --- > equinocial/p 14648a14792 > erê/p 14655a14800 > ergometria/pr 14754c14899 < escalonar/XYPLRMD --- > escalonar/XYPLDMRS 14794a14940 > escarpa/p 14815a14962 > escoimado/fp 14858c15005 < escravagista/p --- > escravagista/pA 14881a15029 > escrotão/fp 14888a15037 > escudar/XYPL 14904c15053 < escuridão --- > escuridão/p 14943a15093 > esgar/p 15039c15189 < espaçar/XYPLMB --- > espaçar/XYPLDMB 15041c15191 < espacial/p --- > espacial/pdm 15056a15207 > España 15069a15221 > esparrela/p 15130a15283 > esperneio/p 15191a15345 > espojar/XYPL 15221d15374 < espremedela/p 15318a15472 > estamento/p 15363a15518 > estatina/p 15367a15523,15524 > estatólatra/p > estatolatria/p 15409c15566 < estereotipar/XYPL --- > estereotipar/XYPLDc 15496a15654 > estolar/XYPL 15591c15749 < estrutural/pmitO --- > estrutural/pmituO 15595d15752 < estudadamente 15599c15756 < estudar/XYPLRnW --- > estudar/XYPLBWnR 15606c15763 < estultície/p --- > estultícia/p 15647a15805 > Etevaldo 15768d15925 < Evernote 15789c15946 < evolutivo/fp --- > evolutivo/fpm 15863,15864c16020,16021 < execução/pR < executar/XYPLnvR --- > execução/pIR > executar/XYPLWnvR 16012a16170 > expositório/fp 16078a16237 > extraditório/fp 16090a16250 > extraparlamentar/p 16091a16252 > extrapauta/p 16168c16329 < facciosismo/p --- > faccioso/fpid 16306d16466 < fanzaço/fp 16326a16487 > farfalhar/XYPL 16339a16501 > farmacista/p 16362a16525 > far-se-iam 16437a16601 > fãzaço/fp 16452c16616 < Febem --- > Febem/x 16534c16698 < Femen --- > Femen/x 16566d16729 < Fergie 16614a16778 > Ferrorama 16634c16798 < fervo/p --- > fervo/pl 16733c16897 < figurar/XYPLcnvB --- > figurar/XYPLDMBcnvS 16788c16952 < filtragem/p --- > filtragem/pE 16850c17014 < fiscal/pmdti --- > fiscal/pmdtix 17031a17196 > fluorcarbono/p 17107a17273 > folgadão/fp 17157a17324 > forame/p 17207c17374,17375 < formosura --- > formosura/p > formulaico/fp 17213,17214d17380 < fornaça < fornaceiro 17346a17513 > Fragoso 17372c17539 < franco-atirador/p --- > franco-atirador/fp 17405a17573 > fraseologia/p 17442a17611 > fremente/p 17451c17620,17621 < frente/pt --- > frente/ph > frentista/px 17478a17649 > fricote/p 17974a18146 > gauche 17994c18166 < gay/pA --- > gay/pxA 18054a18227 > genésico/fp 18092a18266 > gentrificar/XYPLc 18183c18357 < getulista/p --- > getulista/pxA 18191a18366 > gianduia/p 18256a18432 > girocóptero/p 18332a18509 > gloss 18440a18618 > górgona/p 18477c18655 < governadoria/p --- > governadoria/pV 18545d18722 < Gramsci 18624d18800 < Greasemonkey 18644c18820 < greve/ptO --- > greve/pitO 18670a18847 > groove 18835d19011 < Gwen 18922a19099 > hangaragem/p 18939a19117 > Hare 18945d19122 < harmonicamente 18957a19135 > hashi/p 19033a19212 > hebreia/p 19116a19296 > hemodinâmico/fp 19121a19302 > hemoptise/p 19136a19318 > Henry 19157d19338 < Herchcovitch 19172a19354 > hermeneuta/p 19193c19375 < heroína/p --- > heroína/pxA 19196a19379 > heroizinho/p 19214a19398,19399 > heterotrofia/pi > heterotrófico/fp 19250a19436 > hidrofílico/fp 19253c19439 < hidrogenar/XYPLc --- > hidrogenar/XYPLcS 19264a19451 > hidrossanitário/fp 19328a19516 > hiperidrose/p 19334a19523 > hiperpigmentação/p 19352d19540 < HiPhone/p 19391a19580 > hipotenso/fp 19416a19606,19607 > historicismo/p > historicista/p 19424a19616 > hitchcockiano/fp 19470a19663 > homeotérmico/fp 19557c19750 < horrorizar/XYPL --- > horrorizar/XYPLn 19563d19755 < hortaliceira 19672a19865 > humoristazinho/fp 19916c20109 < IMDB --- > IMDb 19942c20135 < iminente/p --- > iminente/pm 19967c20160 < impacto/pA --- > impacto/pAE 19982c20175 < impeachment/aE --- > impeachment/aAE 19991a20185 > impedanciometria/p 20045c20239 < implantar/XYPLcR --- > implantar/XYPLcvR 20113a20308 > ímprobo/fp 20115d20309 < improducente 20164a20359 > imunodeficiente/p 20264c20459 < incêndio/pA --- > incêndio/pAO 20400a20596 > incoordenável/p 20430a20627 > incurado/fp 20435c20632 < incurso --- > incurso/fp 20478c20675 < indexar/XYPLDcv --- > indexar/XYPLDcvRS 20509a20707 > indiozinho/p 20517,20520d20714 < indiscrição/p < indiscriminação < indiscriminado/mfp < indiscriminável 20730a20925 > infracionário/fp 20858c21053 < inquisitivo/fp --- > inquisitivo/fpm 20904c21099,21100 < insocial --- > ínsito/fp > insocial/p 20927,20928c21123,21124 < inspetor/fpu < inspetor-geral --- > inspetor/fpux > inspetor-geral/x 20936c21132 < instabilizar/XYPL --- > instabilizar/XYPLc 21014a21211 > insubmergível/p 21039a21237 > insurrecional/p 21041,21043d21238 < insuspeição < insuspeitado/fp < insuspeito/fp 21080a21276 > intendente/p 21111,21113c21307,21308 < intercomunicação < intercomunicador/p < interconectado/fp --- > intercomunicar/XYPLDc > interconectar/XYPL 21431d21625 < inverdade/p 21479a21674 > iodado/fp 21507a21703 > ippon 21599a21796 > irresignado/fp 21849a22047 > Janot 21859a22058 > Jaque 21974a22174 > Jivago 22021a22222 > Johann 22062a22264 > jornalistazinho/fp 22088d22289 < Jovovich 22202a22404 > junkie/p 22347d22548 < Kidman 22394d22594 < Knightley 22413a22614 > Krishna 22456a22658 > lacanismo/p 22481a22684,22685 > lactato/p > lactente/p 22643c22847 < laranja/ph --- > laranja/phG 22741c22945 < lavatório --- > lavatório/p 22811a23016 > leggings 22853a23059 > leitorado/p 22855d23060 < Leitte 22941a23147 > Lesbos 23151c23357 < linear/pmdM --- > linear/pmdMu 23193a23400,23401 > lipoproteico/fp > lipoproteína/p 23202c23410 < liquidez --- > liquidez/I 23204c23412 < líquido/fp --- > líquido/fpI 23231a23440 > liteira/p 23270a23480 > livresco/fp 23310a23521 > lockout/a 23318a23530 > locus 23357a23570 > lomba/p 23364a23578 > Lombroso 23461a23676 > Lubrax 23545a23761 > lupanar/p 23558a23775 > lusófilo/fp 23592a23810 > LVII 23628a23847 > macarthista/p 23692a23912 > mad 23704c23924 < madrasta/p --- > madrasta/px 23731c23951 < máfia/p --- > máfia/pA 23787a24008 > Mahatma 23839a24061 > Málaga 24029c24251 < mamada/py --- > mamada/phy 24058a24281 > mancal/p 24072c24295 < mandachuva/p --- > mandachuva/px 24080c24303 < mandato/p --- > mandato/pl 24081a24305,24306 > mandatos-tampão/p > mandato-tampão 24172c24397 < manta/p --- > manta/ph 24304a24530 > marafo/p 24462a24689,24690 > marmoreio/p > marmóreo/fp 24465c24693 < marmorizar/XYPL --- > marmorizar/XYPLc 24495a24724 > marsala 24560a24790,24791 > massoterapeuta/p > massoterapia/p 24564a24796 > MasterChef 24671a24904 > maxilofacial/p 24677d24909 < Maxthon 24685a24918 > mazorca/p 24697a24931 > MDB 24735a24970 > Medellín 24740d24974 < MediaFire 24756d24989 < medicina 24757a24991 > medicina/p 24842a25077 > megastore/p 24952d25186 < mel/lw 24962c25196,25197 < membrana/p --- > mel/plw > membrana/pw 24971d25205 < memoriar/XYPL 24976c25210 < ménage --- > ménage/p 25041a25276 > mentirada/p 25199c25434 < meter/XYPLDW --- > meter/XYPLDWc 25203a25439 > metila/p 25318a25555 > microfilmado/fp 25343a25581 > micropigmentação/p 25394c25632 < Milão --- > milão/p 25651a25890 > mitral/p 25689a25929 > Möbius 25690a25931 > Moby 25732c25973 < modéstia --- > modéstia/pI 25814c26055 < moldar/XYPLcDv --- > moldar/XYPLDcvR 25871a26113,26114 > monetarização/pS > monetarizado/fpS 25889c26132 < monja/p --- > monja/px 25901a26145 > monocomando/p 25912a26157 > monofásico/fp 25966a26212 > montanhas-russas 25984a26231 > monturo/p 26011a26259 > morbidade/p 26288a26537 > multiparental/pd 26294c26543,26544 < multiplexado/p --- > multiplexagem/p > multiplexar/XYPLDc 26367a26618 > murmurinho/p 26441c26692 < nacional/pdmitAF --- > nacional/pdimtuAF 26444d26694 < NaCl 26478a26729 > Naná 26486d26736 < Nanini 26534a26785 > narval/p 26623a26875 > Neco 26631c26883 < necrosar/XYPLM --- > necrosar/XYPLMn 26682a26935 > negrada/p 26713,26714c26966 < neocolonialismo/p < neocolonialista --- > neocolonial/pti 26715a26968 > neoconstitucional/pi 26716a26970 > neofascismo/p 26744a26999 > nerdismo/p 26800a27056 > neuro/p 26949c27205 < nobre/pm --- > nobre/pms 26963a27220 > Noely 27058a27316 > nouveau 27134c27392 < nutricionista/p --- > nutricionista/px 27244c27502 < obsessor --- > obsessor/fp 27253a27512 > obstetriz/p 27489,27490c27748 < ofuscante/pA < ofuscar/XYPLMcv --- > ofuscar/XYPLDMcnvA 27497d27754 < Ohana 27570a27828 > oloroso/fp 27660c27918 < operar/XYPLcnv --- > operar/XYPLcnvE 27670a27929 > opiniãozinha 27712c27971 < orbital/p --- > orbital/pu 27719a27979 > ordálio/p 27792a28053 > orofacial/p 27797a28059 > orquidófilo/fp 27805a28068 > ortoépia/p 27819c28082 < orwelliano/fp --- > orwelliano/fpm 27868a28132 > otaku/p 27890a28155 > Ottawa 27978a28244 > oximetria/p 28017a28284 > pacoteiro/fp 28033c28300 < padrasto --- > padrasto/px 28101c28368 < palatável/p --- > palatável/pI 28185a28453 > Pan-Americano/p 28330a28599,28600 > parafilia/p > parafílico/fp 28380a28651 > paranista/px 28408a28680 > parça/px! 28543a28816 > passadão/fp 28569d28841 < passiva/p 28572c28844 < passivo/pfmd --- > passivo/fpimd 28611a28884,28885 > patela/p > patelar/p 28769a29044 > pechar/XYPL 28831a29107 > pedra-sabão 28834,28835c29110 < pedreira/p < pedreiro/p --- > pedreiro/fpx 28836a29112 > pedrona/p 28873c29149 < pelado/fplhGx --- > pelado/fplhsGx 29045a29322 > percuciente/p 29049a29327,29328 > percussivo/fpR > percutâneo/fp 29107a29387 > perfundir/XYPL 29111a29392 > perfusão/p 29135c29416 < periguete/ph --- > periguete/phx 29138a29420 > perinatal/p 29151a29434 > Periscope 29156a29440,29441 > peritoneal > peritônio/p 29191c29476 < pernoca/p --- > pernoca/ph 29194a29480 > pernosticismo/p 29253c29539 < personalismo/p --- > personalismo/pI 29255c29541 < personalista/p --- > personalista/pI 29287a29574 > pervasivo/fp 29349c29636 < pestífero --- > pestífero/p 29376a29664 > Petri 29491a29780 > pig/a 29860a30150 > pluricelular/p 29950a30241,30242 > podólatra/p > podolatria/p 30004c30296 < policial/px --- > policial/pAx 30066a30359 > político-ideológico/fp 30072c30365 < politizar/XYPLDcnRS --- > politizar/XYPLDcnvRS 30090c30383 < poluir/KPLDSNnv --- > poluir/KPLDNnvAS 30163a30457 > poperô/p 30175c30469 < populismo/p --- > populismo/pA 30478a30773,30774 > precordial/p > precórdio/p 30547c30843 < prejulgar/XYPLM --- > prejulgar/XYPLDMn 30589,30590c30885 < prenome < prenomeação --- > prenome/p 30600c30895 < preparar/XYPLDcNS --- > preparar/XYPLDNcES 30609a30905 > preposicionado/fp 30808a31105 > priápico/fp 30829c31126 < primeira-ministra/x --- > primeira-ministra/xV 30835,30836c31132,31133 < primeiro-ministro/x < primeiros-ministros/x --- > primeiro-ministro/xV > primeiros-ministros/xV 30898c31195 < probatório/pf --- > probatório/fpH 30918c31215 < processo/p --- > processo/pl 30953c31250 < producente --- > producente/pI 31045a31343 > proibição/pit 31049c31347 < proibir/YPLcDN --- > proibir/YPLDNW 31053a31352 > pró-impeachment 31065d31363 < prole 31066a31365 > prole/p 31104c31403 < pronto/fpmlhs --- > pronto/fplhmsE 31121a31421 > propeno 31156a31457,31458 > pró-reitor/fp > pró-reitoria/p 31171a31474 > prosódico/fp 31175c31478 < prospectivo/fp --- > prospectivo/fpm 31314,31315c31617 < provincianismo/p < provinciano/fpi --- > provinciano/fpim 31348a31651 > provocadoramente 31475a31779 > publicizar/XYPLc 31506a31811 > pudu/p 31535a31841 > pulley 31554a31861 > puncionar/XYPL 31574c31881 < punk/pa --- > punk/paO 31583a31891 > purezinho/p 31639a31948 > putrescina/p 31695a32005 > quadrigêmeo/fp 31718c32028 < qualificar/XYPLDNcnvEFRS --- > qualificar/XYPLDNcnvEFRSu 31775a32086 > quebradura/p 31789a32101 > queijada/ph 31932c32244 < quintal/p --- > quintal/pl 31952a32265 > quirela/ph 32039d32351 < Radeon 32043a32356 > radiância/p 32157a32471 > ranúnculo/p 32216a32531 > raspa/ph 32263a32579 > Rdio 32291c32607 < realities --- > realities/x 32351c32667 < rebuscar/XYPL --- > rebuscar/XYPLDM 32360d32675 < recambiar/XYPL 32364,32365d32678 < recargar/XYPL < recasar/XYPL 32388a32702 > recém-chamado/fp 32418a32733 > recém-importado/fp 32436a32752 > recender/XYPL 32451c32767 < rechear/ZYPL --- > rechear/ZYPLNW 32500c32816 < recorde/pt --- > recorde/ptx 32524a32841 > recursão/p 32541c32858 < rede/puL --- > rede/phuL 32556,32557d32872 < redinha/p < redistribuir/KPLc 32629c32944 < reforma/phiA --- > reforma/phiAEO 32652c32967 < refúgio/p --- > refúgio/px 32681a32997 > regimão/p 32684c33000 < regime/pO --- > regime/plO 32727a33044 > regulativo/fp 32779c33096 < relator/fpxV --- > relator/fpuxV 32943a33261 > renguear/ZYPL 32988d33305 < repercussivo 33052c33369 < reprimir/XYPLDv --- > reprimir/XYPLDNWv 33106c33423 < resenha/p --- > resenha/pt 33108c33425 < reserva/pthE --- > reserva/phtEx 33111a33429 > reservona/p 33156c33474 < respeitar/XYPLDnBN --- > respeitar/XYPLDBNnS 33159c33477 < respeitoso/fpm --- > respeitoso/fpmS 33229a33548 > restritor/fp 33309a33629 > retiro/p 33331,33332d33650 < retomar/XYPL < retoque/p 33336c33654 < retorno/p --- > retorno/plA 33360,33361c33678 < retroatividade/p < retroativo/fdmp --- > retroativo/fpdmI 33421,33422d33737 < revenda < revendedeira 33592a33908 > RIAA 33606,33607c33922 < ribeira/ph < ribeiro/pl --- > ribeiro/fplh 33608a33924 > ribombar/XYLn 33636c33952 < rifa/p --- > rifa/ph 33673c33989 < ripa --- > ripa/ph 33680c33996 < risca/p --- > risca/ph 33685c34001 < risonho/fp --- > risonho/fpm 33687c34003 < risoto/fp --- > risoto/pl 33707c34023 < Rivelino --- > Rivellino 33763a34080,34081 > rockabillies > rockabilly 33849a34168 > rola-bosta/p 33909a34229 > ronda/pht 33911d34230 < ronda/t 33978c34297 < roteiro/pl --- > roteiro/plE 33984c34303 < rotor/p --- > rotor/pE 34001c34320 < roupeiro/p --- > roupeiro/fp 34003d34321 < Rousey 34004a34323 > rousseauniano/fp 34137c34456 < sabatina/p --- > sabatina/pEO 34211,34212c34530,34531 < sacerdote/p < sacerdotisa/p --- > sacerdote/px > sacerdotisa/px 34283a34603 > sagital/p 34332a34653 > salesiano/fp 34347c34668 < salinizar/XYLPcS --- > salinizar/XYLPDcS 34371c34692 < salsicha/p --- > salsicha/ph 34408a34730 > sambiquira/p 34512a34835 > Sapopemba 34517c34840 < Saquarema --- > saquarema/p 34534a34858 > sarça/p 34622a34947 > sazonalizar/XYPLcS 34687a35013,35014 > sebastianismo/p > sebastianista/p 34713c35040 < secretária-geral/x --- > secretária-geral/xV 34762d35088 < Seedorf 34791d35116 < segurado/p 34927c35252 < senador/fpx --- > senador/fplx 35017c35342 < sequenciar/XYPLM --- > sequenciar/XYPLDM 35096a35422 > serrátil/a 35097a35424 > serrilha/p 35102a35430 > sérum/p 35165a35494,35495 > setor-chave > setores-chave 35234d35563 < Shogun 35281a35611 > sifão/p 35307a35638 > silagem/p 35450c35781 < sinistro/fmps --- > sinistro/fpims 35558a35890 > slackline/p 35696a36029 > socioafetivo/fp 35746c36079 < sofrer/XYPLMDv --- > sofrer/XYPLDMBv 35773c36106 < soldar/XYPLD --- > soldar/XYPLDvR 35812c36145 < soltura --- > soltura/p 35891a36225 > sopesar/XYPL 35944c36278 < sorver/XYPL --- > sorver/XYPLD 35952c36286 < sossegar/XYPLDB --- > sossegar/XYPLDBNW 36008d36341 < Spawn 36082d36414 < Stefani 36115a36448 > Stratocaster 36174c36507 < sublevação/p --- > sublevar/XYPLcn 36178d36510 < sublinear/p 36238d36569 < subterminal 36241d36571 < subtipo/p 36245d36574 < suburbano/fp 36390a36720 > Sundance 36398a36729 > superacostumado/fp 36399a36731 > superanimar/XYPLc 36416a36749 > superdetalhado/fpm 36421a36755 > supereconômico/fp 36431a36766 > superestrutura/p 36453a36789 > superimposição/p 36462a36799 > superlongo/fp 36467a36805 > superministério/p 36505d36842 < Supla 36510c36847 < suplente/p --- > suplente/px 36515d36851 < Suplicy 36539c36875 < surdez --- > surdez/p 36544d36879 < Surface 36552d36886 < Surita 36582d36915 < SUSE 36587c36920 < suspeição/p --- > suspeição/pI 36589,36590c36922,36923 < suspeito/fps < suspeitoso/pm --- > suspeito/fpsI > suspeitoso/fpm 36672c37005 < sutil/pm --- > sutil/pdm 36793a37127 > talho/p 36981c37315 < taxidermia/p --- > taxidermia/pt 37036c37370 < teclar/XYPL --- > teclar/XYPLD 37080a37415 > telecobrança/p 37101a37437 > Telegram 37123a37460 > teletipo/pt 37176c37513 < temporal/pdm --- > temporal/pdIm 37197a37535 > tenente-aviador 37199a37538 > tenentes-aviadores 37217c37556 < tensionar/XYPLDMn --- > tensionar/XYPLDMnE 37304c37643 < terminal/p --- > terminal/pdu 37317a37657 > termografia/pq 37319c37659 < termonuclear --- > termonuclear/p 37374a37715 > testagem/p 37465a37807 > Thoreau 37534a37877 > timidíssimo/fp 37543a37887 > timpânico/fp 37581c37925 < tipo/pl --- > tipo/plu 37626a37971 > titulagem/p 37665c38010 < toalheiro --- > toalheiro/p 37715c38060 < tomar/XYPLMD --- > tomar/XYPLDMR 37731a38077 > Tomorrowland 37779c38125 < toque/p --- > toque/pWR 37805a38152,38153 > toroidal/p > toroide/p 37968c38316 < trama/pu --- > trama/phu 38004c38352 < transa/p --- > transa/ph 38014a38363 > transcodificar/XYPLDc 38016a38366 > transcraniano/fp 38099c38449 < transplante/p --- > transplante/pEO 38286c38636 < triangular/pdcD --- > triangular/pXYPLDcd 38299c38649 < tribunal/p --- > tribunal/pl 38321c38671 < trienal --- > trienal/p 38341a38692 > trilionésimo/fp 38420a38772 > trombadão/fp 38428a38781 > trombo/p 38429a38783 > trombótico/fpA 38439a38794 > tropegamente 38448a38804 > troponina/p 38459c38815 < trouxa/ph --- > trouxa/phG 38580a38937 > turbodiesel 38647a39005 > Uber 38752a39111 > umami 38794c39153 < unicameral/p --- > unicameral/pi 38826a39186 > Univali 38853c39213 < urbano/fpdits --- > urbano/fpditsu 38982a39343 > vaguidão/p 39026a39388 > Valesca 39058c39420 < valor/pl --- > valor/plA 39125a39488 > variômetro/p 39139c39502 < vascularizar/XYPLc --- > vascularizar/XYPLcR 39177a39541 > Vectra 39181a39546 > védico/fp 39245c39610 < venda/pOEh --- > venda/phEOR 39248c39613,39614 < vender/XYPLDMvR --- > vendedor/fpx > vender/XYPLMvR 39317,39318c39683,39684 < verdadeiro/pfms < verdade/p --- > verdadeiro/fpmsI > verdade/pI 39360a39727 > VeriSign 39368a39736 > vermiforme/p 39406c39774 < vertiginoso/pmf --- > vertiginoso/fpmA 39419a39788 > Vespúcio 39486a39856 > Vibranium 39816c40186 < vitaminar/XYPLc --- > vitaminar/XYPLcR 39818d40187 < vitaminizar/XYPL 39906c40275 < voar/XYLDP --- > voar/XYLPD 39917c40286 < vocal/px --- > vocal/pmx 40005a40375 > VPS 40139d40508 < Wilker 40220a40590 > Xenofonte 40304c40674 < yakisoba --- > yakisoba/p 40429,40430c40799 < zonzear/ZYL < zonzo/p --- > zonzo/fp 40443a40813 > zulu/p 40446d40815 < Zune/p diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "pt-BR"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Bodas,Aniversário,Negócios,Ligações,Clientes,Concorrência,Favoritos,Retornos,Presentes,Feriados,Ideias,Problemas,Reunião,Miscelânea,Pessoal,Projetos,Feriado público,Posição,Fornecedores,Viagem,Férias"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "pt-BR"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-BR\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Bodas,Aniversário,Negócios,Ligações,Clientes,Concorrência,Favoritos,Retornos,Presentes,Feriados,Ideias,Problemas,Reunião,Miscelânea,Pessoal,Projetos,Feriado público,Posição,Fornecedores,Viagem,Férias"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d61 < rmdir "searchplugins/" 73d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 2077394 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:30 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 2077393 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:30 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 2011856 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:30 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1880738 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:30 source/bin/searchplugins/amazondotcom.xml 1815201 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:30 source/bin/searchplugins/aol-web-search.xml 1749664 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:30 source/bin/searchplugins/bing.xml 1684127 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:30 source/bin/searchplugins/eBay.xml 1618590 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:30 source/bin/searchplugins/twitter.xml 1684125 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:30 source/bin/searchplugins/wikipedia.xml 1684124 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:30 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:30:07-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:30:09 GMT Keep-Alive: timeout=5, max=294 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.11M=0s 2016-05-09 17:30:07 (2.11 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-PT/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-PT/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:30:08-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-PT/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41788979 Connection: keep-alive Date: Tue, 10 May 2016 00:30:11 GMT x-amz-replication-status: COMPLETED x-amz-version-id: S.f9cApoQyowWHNSG0XWryP1ULA80OY_ Last-Modified: Tue, 03 May 2016 15:32:04 GMT ETag: "acf0322098d2ba9056a7ea0f7b69ef20" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 f46e4d7bc5419470a70eb57aa9c935c8.cloudfront.net (CloudFront) X-Amz-Cf-Id: fomxSrP-FjptXIo4OIeWzYyb94LKKVscRINF_E-mCXqdhe5_D_XvPQ== Length: 41788979 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.62M 23s 3072K ........ ........ ........ ........ ........ ........ 15% 6.24M 13s 6144K ........ ........ ........ ........ ........ ........ 22% 7.60M 9s 9216K ........ ........ ........ ........ ........ ........ 30% 11.4M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 10.2M 5s 15360K ........ ........ ........ ........ ........ ........ 45% 15.8M 4s 18432K ........ ........ ........ ........ ........ ........ 52% 14.0M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 17.9M 3s 24576K ........ ........ ........ ........ ........ ........ 67% 18.7M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 18.9M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 20.2M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 27.5M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 5.45M 0s 39936K ........ ..... 100% 6.60M=5.1s 2016-05-09 17:30:13 (7.79 MB/s) - 'update/complete.mar' saved [41788979/41788979] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pt-PT/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pt-PT/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:30:14-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/pt-PT/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34150448 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:30:17 GMT ETag: "261fdb630f4d4cbee4bfe27a6469fae8" Last-Modified: Fri, 12 Feb 2016 21:49:53 GMT x-amz-replication-status: COMPLETED x-amz-version-id: vojoryezw6hZ.686G2qpB6h2.cR_xwYX X-Cache: Miss from cloudfront Via: 1.1 6be093c16fa776bbd432bbe9bd03f6af.cloudfront.net (CloudFront) X-Amz-Cf-Id: e9xGkBo3Mbm1iO3e54bvvHKXLx1fgJZD1L55nqmrGmLPVtnfGyY6eQ== Length: 34150448 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.56M 19s 3072K ........ ........ ........ ........ ........ ........ 18% 7.57M 10s 6144K ........ ........ ........ ........ ........ ........ 27% 9.47M 7s 9216K ........ ........ ........ ........ ........ ........ 36% 9.77M 5s 12288K ........ ........ ........ ........ ........ ........ 46% 12.6M 4s 15360K ........ ........ ........ ........ ........ ........ 55% 13.1M 3s 18432K ........ ........ ........ ........ ........ ........ 64% 17.6M 2s 21504K ........ ........ ........ ........ ........ ........ 73% 18.2M 1s 24576K ........ ........ ........ ........ ........ ........ 82% 17.3M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 19.1M 0s 30720K ........ ........ ........ ........ ........ . 100% 19.1M=4.2s 2016-05-09 17:30:19 (7.74 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34150448/34150448] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pt-PT/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pt-PT/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:30:20-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/pt-PT/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34998688 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:30:22 GMT ETag: "c856f0455581fe8e5815f3d5ef02181b" Last-Modified: Mon, 09 May 2016 23:33:40 GMT x-amz-replication-status: COMPLETED x-amz-version-id: HZji7XsGzp0NOLGOG26RDIjOD05HjCLB X-Cache: Miss from cloudfront Via: 1.1 4d4153e76bb2810aa1d7a86323288fb2.cloudfront.net (CloudFront) X-Amz-Cf-Id: vexCXQmv1a5x-Tfw9jddjvw6rWgRfU7kuFhA261y1skxav4-b6Wccg== Length: 34998688 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.46M 21s 3072K ........ ........ ........ ........ ........ ........ 17% 4.76M 12s 6144K ........ ........ ........ ........ ........ ........ 26% 6.57M 8s 9216K ........ ........ ........ ........ ........ ........ 35% 8.73M 6s 12288K ........ ........ ........ ........ ........ ........ 44% 10.3M 5s 15360K ........ ........ ........ ........ ........ ........ 53% 11.7M 3s 18432K ........ ........ ........ ........ ........ ........ 62% 16.7M 2s 21504K ........ ........ ........ ........ ........ ........ 71% 13.4M 2s 24576K ........ ........ ........ ........ ........ ........ 80% 18.4M 1s 27648K ........ ........ ........ ........ ........ ........ 89% 19.0M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 20.0M 0s 33792K ...... 100% 38.3M=4.9s 2016-05-09 17:30:25 (6.79 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34998688/34998688] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/wikipedia-ptpt.xml PREPARE REMOVEFILE searchplugins/sapo.xml PREPARE REMOVEFILE searchplugins/priberam.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/amazon-en-GB.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/pt_PT.dic PREPARE REMOVEFILE dictionaries/pt_PT.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/wikipedia-ptpt.xml PREPARE ADD searchplugins/sapo.xml PREPARE ADD searchplugins/priberam.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/amazon-en-GB.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/pt_PT.dic PREPARE ADD dictionaries/pt_PT.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/wikipedia-ptpt.xml EXECUTE REMOVEFILE searchplugins/sapo.xml EXECUTE REMOVEFILE searchplugins/priberam.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/amazon-en-GB.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/pt_PT.dic EXECUTE REMOVEFILE dictionaries/pt_PT.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/wikipedia-ptpt.xml EXECUTE ADD searchplugins/sapo.xml EXECUTE ADD searchplugins/priberam.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/amazon-en-GB.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/pt_PT.dic EXECUTE ADD dictionaries/pt_PT.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/wikipedia-ptpt.xml FINISH REMOVEFILE searchplugins/sapo.xml FINISH REMOVEFILE searchplugins/priberam.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/amazon-en-GB.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/pt_PT.dic FINISH REMOVEFILE dictionaries/pt_PT.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/wikipedia-ptpt.xml FINISH ADD searchplugins/sapo.xml FINISH ADD searchplugins/priberam.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/amazon-en-GB.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/pt_PT.dic FINISH ADD dictionaries/pt_PT.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 4d3 < 12c11 < CrashReporterTitle=Relator de Falhas --- > CrashReporterTitle=Relator de falhas 14c13 < CrashReporterVendorTitle=Relator de Falhas do %s --- > CrashReporterVendorTitle=Relator de falhas da %s 16c15 < CrashReporterErrorText=A aplicação teve um problema e falhou.\n\nInfelizmente o relator de falhas não consegue submeter o relatório desta falha.\n\nDetalhes: %s --- > CrashReporterErrorText=A aplicação teve um problema e falhou.\n\nInfelizmente, o relator de falhas não consegue submeter o relatório desta falha.\n\nDetalhes: %s 18c17 < CrashReporterProductErrorText2=O %s teve um problema e falhou.\n\nInfelizmente o relator de falhas não consegue submeter o relatório desta falha.\n\nDetalhes: %s --- > CrashReporterProductErrorText2=O %s teve um problema e falhou.\n\nInfelizmente o relator de falhas não consegue submeter um relatório de falha.\n\nDetalhes: %s 21,22c20,21 < CrashReporterDescriptionText2=O %s teve um problema e falhou.\n\nPara nos ajudar a diagnosticar e reparar a falha, pode-nos enviar um relatório de erro. < CrashReporterDefault=Esta aplicação é executada após uma falha para reportar o problema ao fabricante da aplicação. Não pode ser executada directamente. --- > CrashReporterDescriptionText2=O %s teve um problema e falhou.\n\nPara nos ajudar a diagnosticar e reparar a falha, pode enviar-nos um relatório de falha. > CrashReporterDefault=Esta aplicação é executada após uma falha para reportar o problema ao fabricante da aplicação. Não pode ser executada diretamente. 24,25c23,24 < ViewReportTitle=Conteúdo do Relatório < CommentGrayText=Adicione um comentário. Nota: O comentários são visíveis publicamente --- > ViewReportTitle=Conteúdo do relatório > CommentGrayText=Adicione um comentário (os comentários são visíveis publicamente) 28c27 < CheckSendReport=Diga à %s sobre esta falha para que a possam reparar --- > CheckSendReport=Informar a %s sobre esta falha para que a possam resolver 31,32c30,31 < EmailGrayText=Introduza aqui o seu endereço de correio < ReportPreSubmit2=O relatório da falha irá ser submetido antes de sair ou reiniciar. --- > EmailGrayText=Digite o seu endereço de email aqui > ReportPreSubmit2=O seu relatório de falha irá ser submetido antes de sair ou reiniciar. 36c35 < ReportResubmit=A re-enviar o relatório que anteriormente falhou o envio… --- > ReportResubmit=A reenviar o relatório que não foi enviado anteriormente… 43d41 < 49c47 < ErrorExtraFileExists=A aplicação não deixou um ficheiro de dados da aplicação. --- > ErrorExtraFileExists=A aplicação não deixou um ficheiro de dados. 52,53c50,51 < ErrorDumpFileExists=A aplicação não deixou um ficheiro dump da falha. < ErrorDumpFileMove=Não foi possível mover o dump do erro. --- > ErrorDumpFileExists=A aplicação não deixou um ficheiro dump de falha. > ErrorDumpFileMove=Não foi possível mover o dump da falha. 57c55 < ErrorCreateDumpDir=Não foi possível criar a directoria dump. --- > ErrorCreateDumpDir=Não foi possível criar o diretório dump. 59,60c57 < ErrorEndOfLife=A versão do %s que está a utilizar já não é suportada. Os relatórios de falhas já não são aceites para esta versão. Considere em actualizar para uma versão suportada. < --- > ErrorEndOfLife=A versão do %s que está a utilizar já não é suportada. Os relatórios de falhas já não são aceites para esta versão. Considere a atualização para uma versão suportada. diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "pt-PT"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "pt-PT"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_7-00000\l10n\pt-PT\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,13d8 < remove "searchplugins/wikipedia-ptpt.xml" < remove "searchplugins/sapo.xml" < remove "searchplugins/priberam.xml" < remove "searchplugins/google.xml" < remove "searchplugins/amazon-en-GB.xml" 15a11 > remove "prldap60.dll" 24,26d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 30d22 < remove "mozalloc.dll" 35a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 42,44c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 47,49c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d61 < rmdir "searchplugins/" 71d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ diff -r source/bin/updater.ini target/bin/updater.ini 7c7,8 < Info=O Thunderbird está a instalar as atualizações e será iniciado brevemente...; This Source Code Form is subject to the terms of the Mozilla Public --- > Info=O Thunderbird está a instalar as atualizações e será iniciado brevemente… > ; This Source Code Form is subject to the terms of the Mozilla Public Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3322581 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:30 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3191508 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:30 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3322579 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:30 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 2011811 1 -rw-r--r-- 1 cltbld Administrators 1688 May 17:30 source/bin/searchplugins/amazon-en-GB.xml 2077346 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:30 source/bin/searchplugins/google.xml 2011809 1 -rw-r--r-- 1 cltbld Administrators 1742 May 17:30 source/bin/searchplugins/priberam.xml 1946272 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:30 source/bin/searchplugins/sapo.xml 1880735 1 -rw-r--r-- 1 cltbld Administrators 1350 May 17:30 source/bin/searchplugins/wikipedia-ptpt.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:31:00-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:31:02 GMT Keep-Alive: timeout=5, max=859 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.12M=0s 2016-05-09 17:31:01 (2.12 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/rm/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/rm/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:31:01-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/rm/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41600008 Connection: keep-alive Date: Tue, 10 May 2016 00:31:04 GMT x-amz-replication-status: COMPLETED x-amz-version-id: MoMbDWRJ3tYC7iJ8aLbllLzp9sDDoTL4 Last-Modified: Tue, 03 May 2016 14:29:17 GMT ETag: "2d01551b62ebed12cdfe008255b32bb4" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 4d4153e76bb2810aa1d7a86323288fb2.cloudfront.net (CloudFront) X-Amz-Cf-Id: ySCOeDG_z97ynDCGpIqUPIpDVairwlY40zIMrzCEjoMKYzgyA_Werw== Length: 41600008 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.53M 24s 3072K ........ ........ ........ ........ ........ ........ 15% 6.43M 14s 6144K ........ ........ ........ ........ ........ ........ 22% 8.95M 9s 9216K ........ ........ ........ ........ ........ ........ 30% 7.85M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 7.57M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 7.63M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 7.67M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 8.41M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 8.56M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 9.21M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 8.52M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 8.80M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 9.26M 0s 39936K ........ .. 100% 14.2M=6.4s 2016-05-09 17:31:08 (6.17 MB/s) - 'update/complete.mar' saved [41600008/41600008] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/rm/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/rm/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:31:09-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/rm/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33963248 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:31:11 GMT ETag: "b226a4aa01ac0a819238c12e3a558eca" Last-Modified: Fri, 12 Feb 2016 21:49:57 GMT x-amz-replication-status: COMPLETED x-amz-version-id: FWTZ1XUlTd7z3Ks7KS9U4owG6YUg5LHB X-Cache: Miss from cloudfront Via: 1.1 5574699f9d8b8aad21acf2edbb25dc62.cloudfront.net (CloudFront) X-Amz-Cf-Id: DRlbUFn6LJK4J18f5yJ_tOiyX6WBWZK-RqqWsqdAHESkrZC-JEhOGA== Length: 33963248 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.22M 24s 3072K ........ ........ ........ ........ ........ ........ 18% 3.26M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 5.37M 10s 9216K ........ ........ ........ ........ ........ ........ 37% 6.24M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 9.05M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 9.46M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 12.4M 3s 21504K ........ ........ ........ ........ ........ ........ 74% 15.1M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 14.4M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 18.4M 0s 30720K ........ ........ ........ ........ ...... 100% 21.6M=6.0s 2016-05-09 17:31:16 (5.41 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33963248/33963248] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/rm/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/rm/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:31:16-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/rm/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34823232 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:31:18 GMT ETag: "9d3d9350d237f29d83c7396a6aa19200" Last-Modified: Mon, 09 May 2016 20:31:41 GMT x-amz-replication-status: COMPLETED x-amz-version-id: gtZvUpAkScYvrfSviRp.KNhE4R1tfti_ X-Cache: Miss from cloudfront Via: 1.1 75d3bdff1b8eb2920f04077d77f16ca0.cloudfront.net (CloudFront) X-Amz-Cf-Id: sM5xJJIR3WN3E8C9tlbjTUj-zt9viVW3pG4mpIeNTYk9tMJKeDsHHQ== Length: 34823232 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 764K 41s 3072K ........ ........ ........ ........ ........ ........ 18% 3.53M 22s 6144K ........ ........ ........ ........ ........ ........ 27% 5.09M 15s 9216K ........ ........ ........ ........ ........ ........ 36% 6.32M 10s 12288K ........ ........ ........ ........ ........ ........ 45% 7.32M 8s 15360K ........ ........ ........ ........ ........ ........ 54% 8.94M 6s 18432K ........ ........ ........ ........ ........ ........ 63% 10.6M 4s 21504K ........ ........ ........ ........ ........ ........ 72% 10.7M 3s 24576K ........ ........ ........ ........ ........ ........ 81% 12.7M 2s 27648K ........ ........ ........ ........ ........ ........ 90% 14.3M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 14.0M 0s 33792K ... 100% 17.3M=7.9s 2016-05-09 17:31:25 (4.19 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34823232/34823232] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo-ch.xml PREPARE REMOVEFILE searchplugins/wikipedia-rm.xml PREPARE REMOVEFILE searchplugins/pledarigrond.xml PREPARE REMOVEFILE searchplugins/leo_ende_de.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo-ch.xml PREPARE ADD searchplugins/wikipedia-rm.xml PREPARE ADD searchplugins/pledarigrond.xml PREPARE ADD searchplugins/leo_ende_de.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo-ch.xml EXECUTE REMOVEFILE searchplugins/wikipedia-rm.xml EXECUTE REMOVEFILE searchplugins/pledarigrond.xml EXECUTE REMOVEFILE searchplugins/leo_ende_de.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo-ch.xml EXECUTE ADD searchplugins/wikipedia-rm.xml EXECUTE ADD searchplugins/pledarigrond.xml EXECUTE ADD searchplugins/leo_ende_de.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo-ch.xml FINISH REMOVEFILE searchplugins/wikipedia-rm.xml FINISH REMOVEFILE searchplugins/pledarigrond.xml FINISH REMOVEFILE searchplugins/leo_ende_de.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo-ch.xml FINISH ADD searchplugins/wikipedia-rm.xml FINISH ADD searchplugins/pledarigrond.xml FINISH ADD searchplugins/leo_ende_de.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/bing.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 1,3c1,3 < ; This Source Code Form is subject to the terms of the Mozilla Public < ; License, v. 2.0. If a copy of the MPL was not distributed with this < ; file, You can obtain one at http://mozilla.org/MPL/2.0/. --- > # This Source Code Form is subject to the terms of the Mozilla Public > # License, v. 2.0. If a copy of the MPL was not distributed with this > # file, You can obtain one at http://mozilla.org/MPL/2.0/. diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "rm"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\rm\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\rm\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\rm\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\rm\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "rm"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\rm\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Giubileum,Anniversari,Fatschenta,Telefons,Clients,Concurrenza,Cumpraders,Favurits,Successiun,Regals,Vacanzas,Ideas,Problems,Seduta,Varia,Persunal,Projects,Firads,Furniturs,Viadis,Congedi"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yahoo-ch.xml" < remove "searchplugins/wikipedia-rm.xml" < remove "searchplugins/pledarigrond.xml" < remove "searchplugins/leo_ende_de.xml" < remove "searchplugins/google.xml" < remove "searchplugins/bing.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ diff -r source/bin/updater.ini target/bin/updater.ini 1,3c1,3 < ; This Source Code Form is subject to the terms of the Mozilla Public < ; License, v. 2.0. If a copy of the MPL was not distributed with this < ; file, You can obtain one at http://mozilla.org/MPL/2.0/. --- > # This Source Code Form is subject to the terms of the Mozilla Public > # License, v. 2.0. If a copy of the MPL was not distributed with this > # file, You can obtain one at http://mozilla.org/MPL/2.0/. 5c5 < ; This file is in the UTF-8 encoding --- > # This file is in the UTF-8 encoding Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3453646 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:31 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3388109 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:31 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3453644 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:31 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3256998 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:31 source/bin/searchplugins/bing.xml 3256997 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:31 source/bin/searchplugins/google.xml 3256996 4 -rw-r--r-- 1 cltbld Administrators 7011 May 17:31 source/bin/searchplugins/leo_ende_de.xml 3256995 1 -rw-r--r-- 1 cltbld Administrators 1331 May 17:31 source/bin/searchplugins/pledarigrond.xml 3322530 1 -rw-r--r-- 1 cltbld Administrators 1340 May 17:31 source/bin/searchplugins/wikipedia-rm.xml 3256993 1 -rw-r--r-- 1 cltbld Administrators 1267 May 17:31 source/bin/searchplugins/yahoo-ch.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:31:59-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:32:01 GMT Keep-Alive: timeout=5, max=898 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.82M=0s 2016-05-09 17:31:59 (1.82 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ro/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ro/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:32:00-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ro/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42239221 Connection: keep-alive Date: Tue, 10 May 2016 00:32:03 GMT x-amz-replication-status: COMPLETED x-amz-version-id: hkAbeOkMqkFgcoSm_K1xWuEevIP.q54e Last-Modified: Tue, 03 May 2016 14:44:23 GMT ETag: "b3ef748b7054abb59cebcef502f13ffe" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 7db492e48a5d55351dcb787a8a14e113.cloudfront.net (CloudFront) X-Amz-Cf-Id: PamFzzJtP8v1_sB51XDpLAcdVuqfdsXQAm-NN-887mziWtCsHIxTvQ== Length: 42239221 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 954K 40s 3072K ........ ........ ........ ........ ........ ........ 14% 2.52M 25s 6144K ........ ........ ........ ........ ........ ........ 22% 3.45M 18s 9216K ........ ........ ........ ........ ........ ........ 29% 4.87M 14s 12288K ........ ........ ........ ........ ........ ........ 37% 5.95M 11s 15360K ........ ........ ........ ........ ........ ........ 44% 6.41M 9s 18432K ........ ........ ........ ........ ........ ........ 52% 5.37M 7s 21504K ........ ........ ........ ........ ........ ........ 59% 5.77M 5s 24576K ........ ........ ........ ........ ........ ........ 67% 6.10M 4s 27648K ........ ........ ........ ........ ........ ........ 74% 6.37M 3s 30720K ........ ........ ........ ........ ........ ........ 81% 6.76M 2s 33792K ........ ........ ........ ........ ........ ........ 89% 7.12M 1s 36864K ........ ........ ........ ........ ........ ........ 96% 6.81M 0s 39936K ........ ........ .... 100% 7.38M=10s 2016-05-09 17:32:10 (3.88 MB/s) - 'update/complete.mar' saved [42239221/42239221] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ro/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ro/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:32:11-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ro/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34465704 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:32:14 GMT ETag: "b9b088190fc2e312e74b7ac9514d4686" Last-Modified: Fri, 12 Feb 2016 21:49:58 GMT x-amz-replication-status: COMPLETED x-amz-version-id: IAa__qUbk8nY_xjvjp0ho9m2FRr0hCZP X-Cache: Miss from cloudfront Via: 1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront) X-Amz-Cf-Id: UT-mIkhTqhGo-sbwhBzX69NTJ1R38PcezgSayRmMQa6QV7eROiBXCA== Length: 34465704 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.28M 23s 3072K ........ ........ ........ ........ ........ ........ 18% 4.12M 14s 6144K ........ ........ ........ ........ ........ ........ 27% 5.43M 10s 9216K ........ ........ ........ ........ ........ ........ 36% 6.78M 7s 12288K ........ ........ ........ ........ ........ ........ 45% 8.32M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 9.50M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 10.2M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 12.6M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 12.8M 1s 27648K ........ ........ ........ ........ ........ ........ 91% 17.4M 1s 30720K ........ ........ ........ ........ ........ ..... 100% 15.0M=5.9s 2016-05-09 17:32:18 (5.59 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34465704/34465704] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ro/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ro/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:32:19-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ro/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35315992 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:32:21 GMT ETag: "1c838bbfd0a8535a58d2b4565c5d436c" Last-Modified: Mon, 09 May 2016 20:51:59 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 64BzcOYqOvB2f1L8wtcnC99Cw1mbEQ7b X-Cache: Miss from cloudfront Via: 1.1 4d4153e76bb2810aa1d7a86323288fb2.cloudfront.net (CloudFront) X-Amz-Cf-Id: bKYgGdzb-2EYpu-9GhubGMLlbGUFBlrgWvgavohOhawxxH7Wu2NO9g== Length: 35315992 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.38M 22s 3072K ........ ........ ........ ........ ........ ........ 17% 3.97M 13s 6144K ........ ........ ........ ........ ........ ........ 26% 5.69M 9s 9216K ........ ........ ........ ........ ........ ........ 35% 7.22M 7s 12288K ........ ........ ........ ........ ........ ........ 44% 9.45M 5s 15360K ........ ........ ........ ........ ........ ........ 53% 10.5M 4s 18432K ........ ........ ........ ........ ........ ........ 62% 12.7M 3s 21504K ........ ........ ........ ........ ........ ........ 71% 15.8M 2s 24576K ........ ........ ........ ........ ........ ........ 80% 15.6M 1s 27648K ........ ........ ........ ........ ........ ........ 89% 18.6M 1s 30720K ........ ........ ........ ........ ........ ........ 97% 19.5M 0s 33792K ........ .. 100% 30.5M=5.4s 2016-05-09 17:32:25 (6.21 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35315992/35315992] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipediaro.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/ro.dic PREPARE REMOVEFILE dictionaries/ro.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipediaro.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/ro.dic PREPARE ADD dictionaries/ro.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipediaro.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/ro.dic EXECUTE REMOVEFILE dictionaries/ro.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipediaro.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/ro.dic EXECUTE ADD dictionaries/ro.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipediaro.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/ro.dic FINISH REMOVEFILE dictionaries/ro.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipediaro.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/ro.dic FINISH ADD dictionaries/ro.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 11c11 < CrashReporterTitle=Raportor de probleme --- > CrashReporterTitle=Raportor de defecÈ›iuni 13c13 < CrashReporterVendorTitle=Raportor de probleme cu %s --- > CrashReporterVendorTitle=Raportor de defecÈ›iuni %s 15c15 < CrashReporterErrorText=AplicaÈ›ia s-a terminat neaÈ™teptat.\n\nDin nefericire, raportorul de defecte nu poate trimite nimic în acest caz.\n\nDetalii: %s --- > CrashReporterErrorText=AplicaÈ›ia a întâlnit o problemă È™i s-a închis neaÈ™teptat.\n\nDin nefericire, raportorul de defecÈ›iuni nu poate să trimită un raport pentru aceasăt defecÈ›iune.\n\nDetalii: %s 17c17 < CrashReporterProductErrorText2=%s s-a terminat neaÈ™teptat.\n\nDin nefericire, raportorul de defecte nu poate trimite date despre problemă.\n\nDetalii: %s --- > CrashReporterProductErrorText2=%s a întâlnit o problemă È™i s-a închis neaÈ™teptat.\n\nDin nefericire, raportorul de defecÈ›iuni nu poate să trimită un raport de defecÈ›iuni.\n\nDetalii: %s 20c20 < CrashReporterDescriptionText2=%s s-a terminat neaÈ™teptat.\n\nPentru a ne ajuta să diagnosticăm È™i să reparăm problema, ne puteÈ›i trimite un raport despre ea. --- > CrashReporterDescriptionText2=%s a întâlnit o problemă È™i s-a închis neaÈ™teptat.\n\nPentru a ne ajuta să diagnosticăm È™i să reparăm problema, ne puteÈ›i trimite un raport de defecÈ›iuni. 22c22 < Details=Detalii... --- > Details=Detalii… 25c25 < ExtraReportInfo=Acest raport conÈ›ine informaÈ›ii despre stadiul aplicaÈ›iei înainte de a se încheia neaÈ™teptat. --- > ExtraReportInfo=Acest raport conÈ›ine È™i informaÈ›ii tehnice cu privire la stadiul aplicaÈ›iei când s-a închis neaÈ™teptat. 31c31 < ReportPreSubmit2=Raportul de eroare va fi trimis înainte să ieÈ™iÈ›i sau după repornire. --- > ReportPreSubmit2=Raportul de defecÈ›iuni va fi trimis înainte să ieÈ™iÈ›i sau după repornire. 35c35 < ReportResubmit=Se retrimit rapoartele a căror trimitere a eÈ™uat... --- > ReportResubmit=Se retrimit rapoartele a căror trimitere a eÈ™uat… 53,54c53,54 < ErrorNoServerURL=AplicaÈ›ia nu a specificat un server către care să fie raportată problema. < ErrorNoSettingsPath=Nu se găsesc setările raportorului de probleme. --- > ErrorNoServerURL=AplicaÈ›ia nu a specificat un server către care să fie raportată defecÈ›iunea. > ErrorNoSettingsPath=Nu se găsesc setările raportorului de defecÈ›iuni. 57c57 < ErrorEndOfLife=Versiunea %s pe care o folosiÈ›i nu mai este suportată. Rapoartele de defecte nu mai sunt acceptate pentru această versiune. Vă sugerăm să luaÈ›i în considerare actualizarea la o versiune suportată. --- > ErrorEndOfLife=Versiunea %s pe care o folosiÈ›i nu mai este suportată. Rapoartele de defecÈ›iuni nu mai sunt acceptate pentru această versiune. Vă rugăm să luaÈ›i în considerare trecerea la o versiune suportată. diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ro"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ro"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ro\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,13d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipediaro.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/amazondotcom.xml" 15a11 > remove "prldap60.dll" 24,26d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 30d22 < remove "mozalloc.dll" 35a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 42,44c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 47,49c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d61 < rmdir "searchplugins/" 71d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3715793 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:32 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3650256 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:32 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3715791 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:32 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3453607 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:32 source/bin/searchplugins/amazondotcom.xml 3453606 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:32 source/bin/searchplugins/bing.xml 3453605 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:32 source/bin/searchplugins/eBay.xml 3453604 1 -rw-r--r-- 1 cltbld Administrators 1342 May 17:32 source/bin/searchplugins/wikipediaro.xml 3453603 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:32 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:33:00-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:33:02 GMT Keep-Alive: timeout=5, max=983 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:33:00 (2.10 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ru/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ru/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:33:00-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ru/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42153178 Connection: keep-alive Date: Tue, 10 May 2016 00:33:04 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 1ZqukSCCaOIGHmOylQMH.WrlsBDGgRn1 Last-Modified: Tue, 03 May 2016 14:59:59 GMT ETag: "2cbe6c4a179006b8b9d3b53a0c97d475" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront) X-Amz-Cf-Id: rheUhZSlrVNxyo2GiWKqPMzr7g7Wvg_x4SFFBvQ6jwwYKkoQbeI3Xg== Length: 42153178 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.37M 27s 3072K ........ ........ ........ ........ ........ ........ 14% 2.29M 20s 6144K ........ ........ ........ ........ ........ ........ 22% 1.87M 18s 9216K ........ ........ ........ ........ ........ ........ 29% 1.41M 17s 12288K ........ ........ ........ ........ ........ ........ 37% 858K 18s 15360K ........ ........ ........ ........ ........ ........ 44% 903K 18s 18432K ........ ........ ........ ........ ........ ........ 52% 1.22M 15s 21504K ........ ........ ........ ........ ........ ........ 59% 1.35M 13s 24576K ........ ........ ........ ........ ........ ........ 67% 1.51M 10s 27648K ........ ........ ........ ........ ........ ........ 74% 1.52M 8s 30720K ........ ........ ........ ........ ........ ........ 82% 1.49M 5s 33792K ........ ........ ........ ........ ........ ........ 89% 2.17M 3s 36864K ........ ........ ........ ........ ........ ........ 97% 2.90M 1s 39936K ........ ........ ... 100% 3.20M=28s 2016-05-09 17:33:29 (1.45 MB/s) - 'update/complete.mar' saved [42153178/42153178] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ru/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ru/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:33:30-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ru/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34409360 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:33:32 GMT ETag: "8d91933301f2a751baee630be300507e" Last-Modified: Fri, 12 Feb 2016 21:50:01 GMT x-amz-replication-status: COMPLETED x-amz-version-id: wT14eEHGwGKS8F0gXQHLXwJmxnjnahay X-Cache: Miss from cloudfront Via: 1.1 aa96a51fedae85199c643eb5c8eca4e4.cloudfront.net (CloudFront) X-Amz-Cf-Id: 1TpKY5qbKGGmEXj4mW5N8QBr0Jqp2foTpTlUxkzSm8lT9qAgqyxchA== Length: 34409360 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.39M 21s 3072K ........ ........ ........ ........ ........ ........ 18% 7.57M 11s 6144K ........ ........ ........ ........ ........ ........ 27% 7.26M 8s 9216K ........ ........ ........ ........ ........ ........ 36% 6.31M 6s 12288K ........ ........ ........ ........ ........ ........ 45% 6.67M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 7.39M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 7.53M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 7.61M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 7.81M 1s 27648K ........ ........ ........ ........ ........ ........ 91% 8.43M 1s 30720K ........ ........ ........ ........ ........ ..... 100% 7.69M=6.2s 2016-05-09 17:33:37 (5.30 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34409360/34409360] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ru/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ru/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:33:37-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ru/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35253880 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:33:40 GMT ETag: "cbf5b68a43d88ba81f3c306e420f035e" Last-Modified: Mon, 09 May 2016 21:10:28 GMT x-amz-replication-status: COMPLETED x-amz-version-id: tZyLTdj_MURIGeyCtDBr.H108QdxZnoE X-Cache: Miss from cloudfront Via: 1.1 515297ac55a7ae01bf8c7d03df4fecb1.cloudfront.net (CloudFront) X-Amz-Cf-Id: MV0WGMV__YlBDsr59b-OeIFEUh8d5Wala1aCtVUbjLNXop7PbTeTPg== Length: 35253880 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 994K 32s 3072K ........ ........ ........ ........ ........ ........ 17% 1.58M 23s 6144K ........ ........ ........ ........ ........ ........ 26% 1.58M 19s 9216K ........ ........ ........ ........ ........ ........ 35% 1.81M 15s 12288K ........ ........ ........ ........ ........ ........ 44% 2.24M 12s 15360K ........ ........ ........ ........ ........ ........ 53% 2.51M 10s 18432K ........ ........ ........ ........ ........ ........ 62% 2.51M 7s 21504K ........ ........ ........ ........ ........ ........ 71% 2.71M 5s 24576K ........ ........ ........ ........ ........ ........ 80% 2.62M 4s 27648K ........ ........ ........ ........ ........ ........ 89% 3.35M 2s 30720K ........ ........ ........ ........ ........ ........ 98% 4.88M 0s 33792K ........ . 100% 6.22M=16s 2016-05-09 17:33:54 (2.08 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35253880/35253880] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yandex.xml PREPARE REMOVEFILE searchplugins/yandex-slovari.xml PREPARE REMOVEFILE searchplugins/wikipedia-ru.xml PREPARE REMOVEFILE searchplugins/priceru.xml PREPARE REMOVEFILE searchplugins/ozonru.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/duckduckgo-ru.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/ru.dic PREPARE REMOVEFILE dictionaries/ru.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yandex.xml PREPARE ADD searchplugins/yandex-slovari.xml PREPARE ADD searchplugins/wikipedia-ru.xml PREPARE ADD searchplugins/priceru.xml PREPARE ADD searchplugins/ozonru.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/duckduckgo-ru.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/ru.dic PREPARE ADD dictionaries/ru.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yandex.xml EXECUTE REMOVEFILE searchplugins/yandex-slovari.xml EXECUTE REMOVEFILE searchplugins/wikipedia-ru.xml EXECUTE REMOVEFILE searchplugins/priceru.xml EXECUTE REMOVEFILE searchplugins/ozonru.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/duckduckgo-ru.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/ru.dic EXECUTE REMOVEFILE dictionaries/ru.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yandex.xml EXECUTE ADD searchplugins/yandex-slovari.xml EXECUTE ADD searchplugins/wikipedia-ru.xml EXECUTE ADD searchplugins/priceru.xml EXECUTE ADD searchplugins/ozonru.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/duckduckgo-ru.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/ru.dic EXECUTE ADD dictionaries/ru.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yandex.xml FINISH REMOVEFILE searchplugins/yandex-slovari.xml FINISH REMOVEFILE searchplugins/wikipedia-ru.xml FINISH REMOVEFILE searchplugins/priceru.xml FINISH REMOVEFILE searchplugins/ozonru.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/duckduckgo-ru.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/ru.dic FINISH REMOVEFILE dictionaries/ru.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yandex.xml FINISH ADD searchplugins/yandex-slovari.xml FINISH ADD searchplugins/wikipedia-ru.xml FINISH ADD searchplugins/priceru.xml FINISH ADD searchplugins/ozonru.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/duckduckgo-ru.xml FINISH ADD searchplugins/bing.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/ru.dic FINISH ADD dictionaries/ru.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ru"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Годовщины,Дни рождениÑ,БизнеÑ,Звонки,Клиенты,КонкурÑÑ‹,Заказчики,Избранное,Ответы,Подарки,ОтпуÑк,Идеи,Доходы,Разное,Личное,Проекты,Праздники,Ð’Ñтречи,ПоÑтавщики,ПутешеÑтвиÑ,Каникулы"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ru"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Годовщины,Дни рождениÑ,БизнеÑ,Звонки,Клиенты,КонкурÑÑ‹,Заказчики,Избранное,Ответы,Подарки,ОтпуÑк,Идеи,Доходы,Разное,Личное,Проекты,Праздники,Ð’Ñтречи,ПоÑтавщики,ПутешеÑтвиÑ,Каникулы"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/yandex.xml" < remove "searchplugins/yandex-slovari.xml" < remove "searchplugins/wikipedia-ru.xml" < remove "searchplugins/priceru.xml" < remove "searchplugins/ozonru.xml" < remove "searchplugins/google.xml" < remove "searchplugins/duckduckgo-ru.xml" < remove "searchplugins/bing.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 72d61 < rmdir "searchplugins/" 74d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3846872 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:34 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3715799 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:34 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3781334 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:34 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3453612 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:34 source/bin/searchplugins/bing.xml 3519147 1 -rw-r--r-- 1 cltbld Administrators 1664 May 17:34 source/bin/searchplugins/duckduckgo-ru.xml 3519146 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:34 source/bin/searchplugins/google.xml 3584681 3 -rw-r--r-- 1 cltbld Administrators 5804 May 17:34 source/bin/searchplugins/ozonru.xml 3584680 1 -rw-r--r-- 1 cltbld Administrators 1370 May 17:34 source/bin/searchplugins/priceru.xml 3650215 5 -rw-r--r-- 1 cltbld Administrators 9413 May 17:34 source/bin/searchplugins/wikipedia-ru.xml 3650214 1 -rw-r--r-- 1 cltbld Administrators 1794 May 17:34 source/bin/searchplugins/yandex-slovari.xml 3650213 4 -rw-r--r-- 1 cltbld Administrators 7674 May 17:34 source/bin/searchplugins/yandex.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:34:29-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:34:31 GMT Keep-Alive: timeout=5, max=972 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.87M=0s 2016-05-09 17:34:30 (1.87 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/si/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/si/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:34:30-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/si/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41668002 Connection: keep-alive Date: Tue, 10 May 2016 00:34:33 GMT x-amz-replication-status: COMPLETED x-amz-version-id: hhx4mWQYNx1gvNByVpRZw2eposJ_t1s9 Last-Modified: Tue, 03 May 2016 15:14:52 GMT ETag: "e6b7f4ff9343d09970caf1496fea6cbe" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 8d667b66bfb5cc8a8898a76f2ecc1d5a.cloudfront.net (CloudFront) X-Amz-Cf-Id: KQOSuX_JZYb6sV59vRQ0K0HVbNq3CSBs-d9dKudbnXhBLKOS1DtgYA== Length: 41668002 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 781K 48s 3072K ........ ........ ........ ........ ........ ........ 15% 995K 39s 6144K ........ ........ ........ ........ ........ ........ 22% 2.06M 29s 9216K ........ ........ ........ ........ ........ ........ 30% 3.55M 22s 12288K ........ ........ ........ ........ ........ ........ 37% 5.48M 16s 15360K ........ ........ ........ ........ ........ ........ 45% 6.46M 12s 18432K ........ ........ ........ ........ ........ ........ 52% 5.92M 10s 21504K ........ ........ ........ ........ ........ ........ 60% 6.49M 7s 24576K ........ ........ ........ ........ ........ ........ 67% 7.09M 6s 27648K ........ ........ ........ ........ ........ ........ 75% 7.16M 4s 30720K ........ ........ ........ ........ ........ ........ 83% 7.53M 3s 33792K ........ ........ ........ ........ ........ ........ 90% 7.82M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 7.92M 0s 39936K ........ ... 100% 7.27M=13s 2016-05-09 17:34:44 (2.96 MB/s) - 'update/complete.mar' saved [41668002/41668002] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/si/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/si/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:34:45-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/si/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34092984 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:34:47 GMT ETag: "95c02272a8204dd96d5035eac42d4c20" Last-Modified: Fri, 12 Feb 2016 21:50:03 GMT x-amz-replication-status: COMPLETED x-amz-version-id: as1_YB51QTdVJo_StV7Ytb5BN3mys3oz X-Cache: Miss from cloudfront Via: 1.1 6e65abb04cb818a6ec78111935b507f7.cloudfront.net (CloudFront) X-Amz-Cf-Id: Bauw5vFwl62G4UMU1Wky0F-0oYvnN2-S3h-B5SEq2Nvnh7WjEOC0Dw== Length: 34092984 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.45M 20s 3072K ........ ........ ........ ........ ........ ........ 18% 5.70M 11s 6144K ........ ........ ........ ........ ........ ........ 27% 7.54M 8s 9216K ........ ........ ........ ........ ........ ........ 36% 7.53M 6s 12288K ........ ........ ........ ........ ........ ........ 46% 9.72M 4s 15360K ........ ........ ........ ........ ........ ........ 55% 7.61M 3s 18432K ........ ........ ........ ........ ........ ........ 64% 7.65M 2s 21504K ........ ........ ........ ........ ........ ........ 73% 9.26M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 8.62M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 8.22M 0s 30720K ........ ........ ........ ........ ........ 100% 10.4M=5.8s 2016-05-09 17:34:51 (5.65 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34092984/34092984] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/si/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/si/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:34:52-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/si/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34939768 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:34:54 GMT ETag: "8914feb3d196ab6309bf581de82a1552" Last-Modified: Mon, 09 May 2016 21:30:03 GMT x-amz-replication-status: COMPLETED x-amz-version-id: _rNCR1mVARvIY.rdC_Reqs5eTiUeZRqp X-Cache: Miss from cloudfront Via: 1.1 ccf10d437e3b13a9b947840075a4df94.cloudfront.net (CloudFront) X-Amz-Cf-Id: X0s4ezuPokg214m-6jvV-DvTSMrFwtXgpGE9OwDm6So3qA8heu10ag== Length: 34939768 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.49M 20s 3072K ........ ........ ........ ........ ........ ........ 18% 7.44M 11s 6144K ........ ........ ........ ........ ........ ........ 27% 9.33M 7s 9216K ........ ........ ........ ........ ........ ........ 36% 11.2M 5s 12288K ........ ........ ........ ........ ........ ........ 45% 9.60M 4s 15360K ........ ........ ........ ........ ........ ........ 54% 9.65M 3s 18432K ........ ........ ........ ........ ........ ........ 63% 12.7M 2s 21504K ........ ........ ........ ........ ........ ........ 72% 8.84M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 9.61M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 9.26M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 9.44M 0s 33792K ..... 100% 12.3M=5.2s 2016-05-09 17:34:58 (6.43 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34939768/34939768] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "si"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "si"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d59 < rmdir "searchplugins/" 71d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3977947 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:35 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 4109018 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:35 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 4109017 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:35 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3715757 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:35 source/bin/searchplugins/amazondotcom.xml 3650220 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:35 source/bin/searchplugins/aol-web-search.xml 3715755 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:35 source/bin/searchplugins/bing.xml 3715754 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:35 source/bin/searchplugins/eBay.xml 3781289 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:35 source/bin/searchplugins/twitter.xml 3781288 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:35 source/bin/searchplugins/wikipedia.xml 3846823 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:35 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:35:32-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:35:34 GMT Keep-Alive: timeout=5, max=995 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.16M=0s 2016-05-09 17:35:32 (2.16 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sk/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sk/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:35:33-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sk/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42513509 Connection: keep-alive Date: Tue, 10 May 2016 00:35:36 GMT x-amz-replication-status: COMPLETED x-amz-version-id: ndrJLfEx90gUpLgdiFGcYOaTSzINkasP Last-Modified: Tue, 03 May 2016 15:29:53 GMT ETag: "06a4c83bc1fdd7738b326ebf2d034a8e" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 fc7da6323a08a2c16d48dd4939ce0898.cloudfront.net (CloudFront) X-Amz-Cf-Id: X-PXfVyy7-PxplzVFbsAt3-ShSbNInsQ2o5ueC6klKngLrsUF-2AcA== Length: 42513509 (41M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.49M 25s 3072K ........ ........ ........ ........ ........ ........ 14% 4.35M 16s 6144K ........ ........ ........ ........ ........ ........ 22% 6.31M 11s 9216K ........ ........ ........ ........ ........ ........ 29% 7.58M 9s 12288K ........ ........ ........ ........ ........ ........ 36% 6.93M 7s 15360K ........ ........ ........ ........ ........ ........ 44% 5.49M 6s 18432K ........ ........ ........ ........ ........ ........ 51% 5.71M 5s 21504K ........ ........ ........ ........ ........ ........ 59% 5.72M 4s 24576K ........ ........ ........ ........ ........ ........ 66% 6.24M 3s 27648K ........ ........ ........ ........ ........ ........ 73% 5.69M 2s 30720K ........ ........ ........ ........ ........ ........ 81% 5.64M 2s 33792K ........ ........ ........ ........ ........ ........ 88% 6.39M 1s 36864K ........ ........ ........ ........ ........ ........ 96% 6.44M 0s 39936K ........ ........ ........ 100% 7.10M=8.3s 2016-05-09 17:35:42 (4.89 MB/s) - 'update/complete.mar' saved [42513509/42513509] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sk/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sk/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:35:43-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sk/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34669536 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:35:45 GMT ETag: "b2d7392c83770791c47562f397c07ffc" Last-Modified: Fri, 12 Feb 2016 21:50:06 GMT x-amz-replication-status: COMPLETED x-amz-version-id: oH5FfqwgknGldqznx_Lcwfkkg5JlIJp. X-Cache: Miss from cloudfront Via: 1.1 ca024aca72de992a25bcd7fdcfe84b67.cloudfront.net (CloudFront) X-Amz-Cf-Id: oiTTdT4DkkWWonvZEZUWDvpN6IL75DgU9vskS-wHfvlPhxOzC_qkqQ== Length: 34669536 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.39M 22s 3072K ........ ........ ........ ........ ........ ........ 18% 3.88M 13s 6144K ........ ........ ........ ........ ........ ........ 27% 6.09M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 7.56M 7s 12288K ........ ........ ........ ........ ........ ........ 45% 9.35M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 9.96M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 12.6M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 17.3M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 13.6M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 18.5M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 19.1M 0s 33792K . 100% 59.5M=5.4s 2016-05-09 17:35:49 (6.13 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34669536/34669536] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sk/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sk/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:35:49-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sk/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35522384 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:35:52 GMT ETag: "640228e7d72b3755eb5dfe5101a8fc86" Last-Modified: Mon, 09 May 2016 21:50:57 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 9dJC3v5AnC9MHWU0bGj19EQ1.SMwZPSs X-Cache: Miss from cloudfront Via: 1.1 9767e262e4af15c8d83a726bb0f44fa5.cloudfront.net (CloudFront) X-Amz-Cf-Id: GhMtYUAFyKr98gQ_fCXcCIvFdv5sS3c0epSki671l1cMIyK6IUASTQ== Length: 35522384 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.44M 21s 3072K ........ ........ ........ ........ ........ ........ 17% 4.05M 13s 6144K ........ ........ ........ ........ ........ ........ 26% 5.62M 9s 9216K ........ ........ ........ ........ ........ ........ 35% 7.54M 7s 12288K ........ ........ ........ ........ ........ ........ 44% 9.37M 5s 15360K ........ ........ ........ ........ ........ ........ 53% 9.79M 4s 18432K ........ ........ ........ ........ ........ ........ 61% 13.4M 3s 21504K ........ ........ ........ ........ ........ ........ 70% 16.6M 2s 24576K ........ ........ ........ ........ ........ ........ 79% 17.9M 1s 27648K ........ ........ ........ ........ ........ ........ 88% 12.5M 1s 30720K ........ ........ ........ ........ ........ ........ 97% 15.2M 0s 33792K ........ ...... 100% 8.37M=5.5s 2016-05-09 17:35:56 (6.16 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35522384/35522384] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/zoznam-sk.xml PREPARE REMOVEFILE searchplugins/wikipedia-sk.xml PREPARE REMOVEFILE searchplugins/slovnik-sk.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/azet-sk.xml PREPARE REMOVEFILE searchplugins/atlas-sk.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/sk.dic PREPARE REMOVEFILE dictionaries/sk.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/zoznam-sk.xml PREPARE ADD searchplugins/wikipedia-sk.xml PREPARE ADD searchplugins/slovnik-sk.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/azet-sk.xml PREPARE ADD searchplugins/atlas-sk.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/sk.dic PREPARE ADD dictionaries/sk.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/zoznam-sk.xml EXECUTE REMOVEFILE searchplugins/wikipedia-sk.xml EXECUTE REMOVEFILE searchplugins/slovnik-sk.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/azet-sk.xml EXECUTE REMOVEFILE searchplugins/atlas-sk.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/sk.dic EXECUTE REMOVEFILE dictionaries/sk.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/zoznam-sk.xml EXECUTE ADD searchplugins/wikipedia-sk.xml EXECUTE ADD searchplugins/slovnik-sk.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/azet-sk.xml EXECUTE ADD searchplugins/atlas-sk.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/sk.dic EXECUTE ADD dictionaries/sk.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/zoznam-sk.xml FINISH REMOVEFILE searchplugins/wikipedia-sk.xml FINISH REMOVEFILE searchplugins/slovnik-sk.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/azet-sk.xml FINISH REMOVEFILE searchplugins/atlas-sk.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/sk.dic FINISH REMOVEFILE dictionaries/sk.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/zoznam-sk.xml FINISH ADD searchplugins/wikipedia-sk.xml FINISH ADD searchplugins/slovnik-sk.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/azet-sk.xml FINISH ADD searchplugins/atlas-sk.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/sk.dic FINISH ADD dictionaries/sk.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "sk"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" < pref("calendar.categories.names", "VýroÄie,Narodeniny,Jednanie,Telefonát,Klienti,Súťaže,Zákazník,Obľúbené,Sledovanie,DarÄek,Voľný Äas,Nápady,Problémy,Stretnutie,Rôzne,Súkromné,Projekty,Sviatok,Stav,Dodávatelia,Cestovanie,Dovolenka"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "sk"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\sk\calendar\lightning-l10n.js" > pref("calendar.categories.names", "VýroÄie,Narodeniny,Jednanie,Telefonát,Klienti,Súťaže,Zákazník,Obľúbené,Sledovanie,DarÄek,Voľný Äas,Nápady,Problémy,Stretnutie,Rôzne,Súkromné,Projekty,Sviatok,Stav,Dodávatelia,Cestovanie,Dovolenka"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/zoznam-sk.xml" < remove "searchplugins/wikipedia-sk.xml" < remove "searchplugins/slovnik-sk.xml" < remove "searchplugins/google.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/azet-sk.xml" < remove "searchplugins/atlas-sk.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 72d61 < rmdir "searchplugins/" 74d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3257056 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:36 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 4043487 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:36 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3191518 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:36 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3846832 1 -rw-r--r-- 1 cltbld Administrators 1540 May 17:36 source/bin/searchplugins/atlas-sk.xml 3912367 1 -rw-r--r-- 1 cltbld Administrators 1380 May 17:36 source/bin/searchplugins/azet-sk.xml 4043438 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:36 source/bin/searchplugins/bing.xml 3912365 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:36 source/bin/searchplugins/eBay.xml 3846828 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:36 source/bin/searchplugins/google.xml 3912363 1 -rw-r--r-- 1 cltbld Administrators 1430 May 17:36 source/bin/searchplugins/slovnik-sk.xml 3912362 1 -rw-r--r-- 1 cltbld Administrators 1054 May 17:36 source/bin/searchplugins/wikipedia-sk.xml 3977897 1 -rw-r--r-- 1 cltbld Administrators 830 May 17:36 source/bin/searchplugins/zoznam-sk.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:36:31-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:36:33 GMT Keep-Alive: timeout=5, max=964 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:36:31 (2.10 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sl/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sl/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:36:32-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sl/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41609453 Connection: keep-alive Date: Tue, 10 May 2016 00:36:35 GMT x-amz-replication-status: COMPLETED x-amz-version-id: ybe_5sA3P0Z9Lb5P7xNMUi3l6Q2hCfGg Last-Modified: Tue, 03 May 2016 14:19:52 GMT ETag: "8dd85b20509ea1232949a8ab1f88c925" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 96255a5b0caf50bcafcd101c1ff13691.cloudfront.net (CloudFront) X-Amz-Cf-Id: N4fb8sqSBVHwbSWToF7QTeyCEyZO0PdUgEQr1s5_kw_4y4jwy707Vg== Length: 41609453 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.41M 26s 3072K ........ ........ ........ ........ ........ ........ 15% 5.20M 15s 6144K ........ ........ ........ ........ ........ ........ 22% 6.64M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 8.82M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 10.1M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 12.3M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 12.9M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 17.8M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 13.8M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 19.0M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 28.0M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 20.3M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 21.7M 0s 39936K ........ .. 100% 46.4M=5.2s 2016-05-09 17:36:37 (7.60 MB/s) - 'update/complete.mar' saved [41609453/41609453] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sl/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sl/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:36:38-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sl/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33969864 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:36:41 GMT ETag: "f1f96db2c2a59609080eaf7dd7e17e3e" Last-Modified: Fri, 12 Feb 2016 21:50:09 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 7z4Vxe8kbLpgeVP3W9UVC5qI5gTCpRAO X-Cache: Miss from cloudfront Via: 1.1 6eaa7f856e226a0db7cef6201d3b8393.cloudfront.net (CloudFront) X-Amz-Cf-Id: TEenr_kWsyk9WpRf0xhKskaa1IcSYq4JzEqXQIaT4XsQpWpQExVnDg== Length: 33969864 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.25M 24s 3072K ........ ........ ........ ........ ........ ........ 18% 3.65M 14s 6144K ........ ........ ........ ........ ........ ........ 27% 4.70M 10s 9216K ........ ........ ........ ........ ........ ........ 37% 5.97M 7s 12288K ........ ........ ........ ........ ........ ........ 46% 7.85M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 8.77M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 9.85M 3s 21504K ........ ........ ........ ........ ........ ........ 74% 10.8M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 11.5M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 12.8M 0s 30720K ........ ........ ........ ........ ...... 100% 15.0M=6.3s 2016-05-09 17:36:45 (5.12 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33969864/33969864] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sl/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sl/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:36:46-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sl/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34824936 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:36:48 GMT ETag: "e28f0c417b41ad3cfc28e3e20aba9338" Last-Modified: Mon, 09 May 2016 20:30:44 GMT x-amz-replication-status: COMPLETED x-amz-version-id: M_bCgJkz6zkcM4V50mdrQ99hXRW3BNnA X-Cache: Miss from cloudfront Via: 1.1 3344ddc09ccf1d185bb41add18940cc4.cloudfront.net (CloudFront) X-Amz-Cf-Id: wkyP3fAQP51qQGpVEaRciKnWZRzNRj7VBfkT6n4m37Pq9LEEH35s_A== Length: 34824936 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.12M 27s 3072K ........ ........ ........ ........ ........ ........ 18% 3.32M 16s 6144K ........ ........ ........ ........ ........ ........ 27% 4.93M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 7.09M 8s 12288K ........ ........ ........ ........ ........ ........ 45% 8.28M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 11.2M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 11.0M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 15.7M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 14.3M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 18.5M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 19.2M 0s 33792K ... 100% 59.2M=6.2s 2016-05-09 17:36:53 (5.32 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34824936/34824936] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/wikipedia-sl.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/odpiralni.xml PREPARE REMOVEFILE searchplugins/najdi-si.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/ceneji.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/wikipedia-sl.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/odpiralni.xml PREPARE ADD searchplugins/najdi-si.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/ceneji.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/wikipedia-sl.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/odpiralni.xml EXECUTE REMOVEFILE searchplugins/najdi-si.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/ceneji.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/wikipedia-sl.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/odpiralni.xml EXECUTE ADD searchplugins/najdi-si.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/ceneji.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/wikipedia-sl.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/odpiralni.xml FINISH REMOVEFILE searchplugins/najdi-si.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/ceneji.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/wikipedia-sl.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/odpiralni.xml FINISH ADD searchplugins/najdi-si.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/ceneji.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 1,3c1,3 < ; This Source Code Form is subject to the terms of the Mozilla Public < ; License, v. 2.0. If a copy of the MPL was not distributed with this < ; file, You can obtain one at http://mozilla.org/MPL/2.0/. --- > # This Source Code Form is subject to the terms of the Mozilla Public > # License, v. 2.0. If a copy of the MPL was not distributed with this > # file, You can obtain one at http://mozilla.org/MPL/2.0/. 5c5 < ; This file is in the UTF-8 encoding --- > # This file is in the UTF-8 encoding 13c13 < ; LOCALIZATION NOTE (CrashReporterVendorTitle): %s is replaced with the vendor name. (i.e. "Mozilla") --- > # LOCALIZATION NOTE (CrashReporterVendorTitle): %s is replaced with the vendor name. (i.e. "Mozilla") 15c15 < ; LOCALIZATION NOTE (CrashReporterErrorText): %s is replaced with another string containing detailed information. --- > # LOCALIZATION NOTE (CrashReporterErrorText): %s is replaced with another string containing detailed information. 17c17 < ; LOCALIZATION NOTE (CrashReporterProductErrorText2): The first %s is replaced with the product name (i.e. "Firefox"), the second is replaced with another string containing detailed information. These two substitutions can not be reordered! --- > # LOCALIZATION NOTE (CrashReporterProductErrorText2): The first %s is replaced with the product name (i.e. "Firefox"), the second is replaced with another string containing detailed information. These two substitutions can not be reordered! 20c20 < ; LOCALIZATION NOTE (CrashReporterDescriptionText2): The %s is replaced with the product name. --- > # LOCALIZATION NOTE (CrashReporterDescriptionText2): The %s is replaced with the product name. 27c27 < ; LOCALIZATION NOTE (CheckSendReport): The %s is replaced with the vendor name. --- > # LOCALIZATION NOTE (CheckSendReport): The %s is replaced with the vendor name. 37c37 < ; LOCALIZATION NOTE (Quit2): The %s is replaced with the product name. --- > # LOCALIZATION NOTE (Quit2): The %s is replaced with the product name. 39c39 < ; LOCALIZATION NOTE (Restart): The %s is replaced with the product name. --- > # LOCALIZATION NOTE (Restart): The %s is replaced with the product name. 43c43,44 < ; LOCALIZATION NOTE (CrashID): The %s is replaced with the Crash ID from the server, which is a string like abc12345-6789-0abc-def1-23456abcdef1 --- > > # LOCALIZATION NOTE (CrashID): The %s is replaced with the Crash ID from the server, which is a string like abc12345-6789-0abc-def1-23456abcdef1 45c46 < ; LOCALIZATION NOTE (CrashDetailsURL): The %s is replaced with a URL that the user can visit to view the crash details. --- > # LOCALIZATION NOTE (CrashDetailsURL): The %s is replaced with a URL that the user can visit to view the crash details. 57c58 < ; LOCALIZATION NOTE (ErrorEndOfLife): The %s is replaced with the product name. --- > # LOCALIZATION NOTE (ErrorEndOfLife): The %s is replaced with the product name. 58a60 > diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "sl"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Obletnica,Rojstni dan,Poslovno,Klici,Klienti,Konkurenca,Stranke,Priljubljeno,Aktualno,Darila,Prazniki,Ideje,Težave,Razno,Osebno,Projekti,Državni prazniki,Status,Dobavitelji,Potovanja,PoÄitnice"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "sl"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sl\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Obletnica,Rojstni dan,Poslovno,Klici,Klienti,Konkurenca,Stranke,Priljubljeno,Aktualno,Darila,Prazniki,Ideje,Težave,Razno,Osebno,Projekti,Državni prazniki,Status,Dobavitelji,Potovanja,PoÄitnice"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/wikipedia-sl.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/odpiralni.xml" < remove "searchplugins/najdi-si.xml" < remove "searchplugins/google.xml" < remove "searchplugins/ceneji.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ diff -r source/bin/updater.ini target/bin/updater.ini 1,4c1,5 < ; This Source Code Form is subject to the terms of the Mozilla Public < ; License, v. 2.0. If a copy of the MPL was not distributed with this < ; file, You can obtain one at http://mozilla.org/MPL/2.0/. < ; This file is in the UTF-8 encoding --- > # This Source Code Form is subject to the terms of the Mozilla Public > # License, v. 2.0. If a copy of the MPL was not distributed with this > # file, You can obtain one at http://mozilla.org/MPL/2.0/. > > # This file is in the UTF-8 encoding 6c7 < Title=\u0020Posodobitev Thunderbird --- > Title=Posodobitev za Thunderbird Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3388120 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:37 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3257047 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:37 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3322582 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:37 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 4043440 6 -rw-r--r-- 1 cltbld Administrators 10971 May 17:37 source/bin/searchplugins/ceneji.xml 4108975 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:37 source/bin/searchplugins/google.xml 3191470 1 -rw-r--r-- 1 cltbld Administrators 1596 May 17:37 source/bin/searchplugins/najdi-si.xml 4108973 2 -rw-r--r-- 1 cltbld Administrators 3797 May 17:37 source/bin/searchplugins/odpiralni.xml 4043436 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:37 source/bin/searchplugins/twitter.xml 4108971 1 -rw-r--r-- 1 cltbld Administrators 1494 May 17:37 source/bin/searchplugins/wikipedia-sl.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:37:27-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:37:30 GMT Keep-Alive: timeout=5, max=990 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.14M=0s 2016-05-09 17:37:28 (2.14 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sq/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sq/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:37:28-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sq/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41605146 Connection: keep-alive Date: Tue, 10 May 2016 00:37:31 GMT x-amz-replication-status: COMPLETED x-amz-version-id: G2qIzZ5atasIT4Wkldgplfc_aUp.e7ut Last-Modified: Tue, 03 May 2016 14:35:03 GMT ETag: "08d1d55685e6cfea75cb07c8c7b7c235" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 75d3bdff1b8eb2920f04077d77f16ca0.cloudfront.net (CloudFront) X-Amz-Cf-Id: 6sn5HXUjUTskkNgr1zT-nFoxq1Rhnb22tIwjn82Qzm7khm1EWEIsGQ== Length: 41605146 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.51M 24s 3072K ........ ........ ........ ........ ........ ........ 15% 4.21M 15s 6144K ........ ........ ........ ........ ........ ........ 22% 6.26M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 7.62M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 9.48M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 12.3M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 12.7M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 13.3M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 17.9M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 18.8M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 19.5M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 28.3M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 17.4M 0s 39936K ........ .. 100% 50.6M=5.4s 2016-05-09 17:37:34 (7.38 MB/s) - 'update/complete.mar' saved [41605146/41605146] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sq/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sq/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:37:35-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sq/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33978128 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:37:38 GMT ETag: "0dbaca70f6d2ac034f44e9323bbaf277" Last-Modified: Fri, 12 Feb 2016 21:50:11 GMT x-amz-replication-status: COMPLETED x-amz-version-id: aWZVOWIs1wDCogKM0jwnkoUOTY9KZjwY X-Cache: Miss from cloudfront Via: 1.1 02192a27c967e955f8c815efa939bfc8.cloudfront.net (CloudFront) X-Amz-Cf-Id: ppLbvLqPUr1BlyAyz5zyUPHs_8KKHmKXoUnnPeNCwtdS1pX2B8xenA== Length: 33978128 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.10M 27s 3072K ........ ........ ........ ........ ........ ........ 18% 3.16M 16s 6144K ........ ........ ........ ........ ........ ........ 27% 4.76M 11s 9216K ........ ........ ........ ........ ........ ........ 37% 7.41M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 7.70M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 11.7M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 10.1M 3s 21504K ........ ........ ........ ........ ........ ........ 74% 16.9M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 13.4M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 18.3M 0s 30720K ........ ........ ........ ........ ...... 100% 13.7M=6.4s 2016-05-09 17:37:42 (5.07 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33978128/33978128] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sq/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sq/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:37:43-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sq/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34832328 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:37:45 GMT ETag: "2477c6ef13769d8d27d38155f04f7c52" Last-Modified: Mon, 09 May 2016 20:48:30 GMT x-amz-replication-status: COMPLETED x-amz-version-id: UFHweBJzpzkhmLFV5BmPEGiCYf3Uqizs X-Cache: Miss from cloudfront Via: 1.1 990c804118e679d7ea0f4d3ca3cc4534.cloudfront.net (CloudFront) X-Amz-Cf-Id: l_4H-vu4Jw-02CLgDRoLU8kc6B1BKOVphOIZDtwpWYil7a6AeV6VtA== Length: 34832328 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.16M 26s 3072K ........ ........ ........ ........ ........ ........ 18% 3.21M 16s 6144K ........ ........ ........ ........ ........ ........ 27% 5.26M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 7.42M 8s 12288K ........ ........ ........ ........ ........ ........ 45% 7.73M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 9.90M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 12.1M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 17.0M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 13.1M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 18.2M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 18.6M 0s 33792K ... 100% 61.2M=6.2s 2016-05-09 17:37:50 (5.39 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34832328/34832328] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia-sq.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia-sq.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia-sq.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia-sq.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia-sq.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia-sq.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "sq"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Biznes,Blerës,Çështje,Datëlindje,Dhurata,Furnitorë,Ide,Klientë,Konkurrencë,Leje,Mbledhje,Ndjekje,Personale,Përvjetor,Projekte,Pushime,Festa,Status,Të ndryshme,Të parapëlqyera,Thirrje,Udhëtime"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "sq"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sq\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Biznes,Blerës,Çështje,Datëlindje,Dhurata,Furnitorë,Ide,Klientë,Konkurrencë,Leje,Mbledhje,Ndjekje,Personale,Përvjetor,Projekte,Pushime,Festa,Status,Të ndryshme,Të parapëlqyera,Thirrje,Udhëtime"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia-sq.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/amazondotcom.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3453660 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3519195 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3650266 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3257010 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:38 source/bin/searchplugins/amazondotcom.xml 3257009 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:38 source/bin/searchplugins/bing.xml 3191472 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:38 source/bin/searchplugins/eBay.xml 3257007 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:38 source/bin/searchplugins/twitter.xml 3388078 1 -rw-r--r-- 1 cltbld Administrators 1343 May 17:38 source/bin/searchplugins/wikipedia-sq.xml 3257005 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:38 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:38:24-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:38:26 GMT Keep-Alive: timeout=5, max=976 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.07M=0s 2016-05-09 17:38:24 (2.07 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sr/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sr/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:38:25-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sr/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 43573823 Connection: keep-alive Date: Tue, 10 May 2016 00:38:28 GMT x-amz-replication-status: COMPLETED x-amz-version-id: HKL5b_q5zMGOMA0fZGt8kY49RgsTU9x6 Last-Modified: Tue, 03 May 2016 14:50:52 GMT ETag: "5b15ed1b56726247c37b9010f5198330" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 30bb04916f91d64c600e15c15000042d.cloudfront.net (CloudFront) X-Amz-Cf-Id: eJFNiintdoX6OiVnT0Y0nDD6O-5If2IRjnlffDaxDxyK16pvarZU2Q== Length: 43573823 (42M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.42M 27s 3072K ........ ........ ........ ........ ........ ........ 14% 5.03M 16s 6144K ........ ........ ........ ........ ........ ........ 21% 5.02M 12s 9216K ........ ........ ........ ........ ........ ........ 28% 6.97M 9s 12288K ........ ........ ........ ........ ........ ........ 36% 7.32M 7s 15360K ........ ........ ........ ........ ........ ........ 43% 9.52M 6s 18432K ........ ........ ........ ........ ........ ........ 50% 11.4M 5s 21504K ........ ........ ........ ........ ........ ........ 57% 13.4M 4s 24576K ........ ........ ........ ........ ........ ........ 64% 12.7M 3s 27648K ........ ........ ........ ........ ........ ........ 72% 12.3M 2s 30720K ........ ........ ........ ........ ........ ........ 79% 12.3M 1s 33792K ........ ........ ........ ........ ........ ........ 86% 13.3M 1s 36864K ........ ........ ........ ........ ........ ........ 93% 16.7M 0s 39936K ........ ........ ........ ........ ........ 100% 17.9M=6.2s 2016-05-09 17:38:32 (6.67 MB/s) - 'update/complete.mar' saved [43573823/43573823] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sr/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sr/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:38:33-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sr/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35244360 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:38:35 GMT ETag: "27600721fd7048455c4f9b8658a000e7" Last-Modified: Fri, 12 Feb 2016 21:50:14 GMT x-amz-replication-status: COMPLETED x-amz-version-id: .kXn4XftP8VNWDBJihcIDQo2kdCRJQi7 X-Cache: Miss from cloudfront Via: 1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront) X-Amz-Cf-Id: 9Scewucs0XmQwpc6BYolJjEgMLe_Y7a6eLify5Ho7Dudn8VX25a9Bw== Length: 35244360 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.36M 23s 3072K ........ ........ ........ ........ ........ ........ 17% 4.11M 14s 6144K ........ ........ ........ ........ ........ ........ 26% 4.85M 10s 9216K ........ ........ ........ ........ ........ ........ 35% 6.31M 7s 12288K ........ ........ ........ ........ ........ ........ 44% 7.66M 5s 15360K ........ ........ ........ ........ ........ ........ 53% 9.43M 4s 18432K ........ ........ ........ ........ ........ ........ 62% 9.65M 3s 21504K ........ ........ ........ ........ ........ ........ 71% 12.2M 2s 24576K ........ ........ ........ ........ ........ ........ 80% 12.5M 1s 27648K ........ ........ ........ ........ ........ ........ 89% 12.9M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 17.6M 0s 33792K ........ . 100% 9.29M=6.0s 2016-05-09 17:38:39 (5.60 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [35244360/35244360] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sr/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sr/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:38:40-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sr/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 36091640 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:38:42 GMT ETag: "8ef1f4360c35776325a3f52e04c88000" Last-Modified: Mon, 09 May 2016 21:06:35 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 6uf5j0u0WZ_n5k9WjYmIcm4k_hVJfn47 X-Cache: Miss from cloudfront Via: 1.1 ff09df097f823b2834408d17e9779d62.cloudfront.net (CloudFront) X-Amz-Cf-Id: dkeUPGBwkCHe8aHU8xeaUMZJfnU-Px5wG3ZVWUEUtWzC3Gia7jdR7g== Length: 36091640 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.71M 18s 3072K ........ ........ ........ ........ ........ ........ 17% 5.63M 11s 6144K ........ ........ ........ ........ ........ ........ 26% 6.00M 8s 9216K ........ ........ ........ ........ ........ ........ 34% 6.20M 6s 12288K ........ ........ ........ ........ ........ ........ 43% 4.70M 5s 15360K ........ ........ ........ ........ ........ ........ 52% 4.76M 4s 18432K ........ ........ ........ ........ ........ ........ 61% 5.06M 3s 21504K ........ ........ ........ ........ ........ ........ 69% 5.85M 2s 24576K ........ ........ ........ ........ ........ ........ 78% 5.45M 2s 27648K ........ ........ ........ ........ ........ ........ 87% 5.46M 1s 30720K ........ ........ ........ ........ ........ ........ 95% 6.33M 0s 33792K ........ ........ ...... 100% 6.04M=7.5s 2016-05-09 17:38:48 (4.62 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [36091640/36091640] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/sr.dic PREPARE REMOVEFILE dictionaries/sr.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/sr.dic PREPARE ADD dictionaries/sr.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/sr.dic EXECUTE REMOVEFILE dictionaries/sr.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/sr.dic EXECUTE ADD dictionaries/sr.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/sr.dic FINISH REMOVEFILE dictionaries/sr.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/sr.dic FINISH ADD dictionaries/sr.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" < < //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" < < //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "sr"); < < //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" > > //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" > > //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "sr"); > > //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sr\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/google.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 72d61 < rmdir "searchplugins/" 74d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 3781346 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:39 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3715809 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:39 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3715808 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:39 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3322550 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:39 source/bin/searchplugins/amazondotcom.xml 3388085 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:39 source/bin/searchplugins/aol-web-search.xml 3388084 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:39 source/bin/searchplugins/bing.xml 3453619 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:39 source/bin/searchplugins/eBay.xml 3453618 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:39 source/bin/searchplugins/google.xml 3453617 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:39 source/bin/searchplugins/twitter.xml 3388080 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:39 source/bin/searchplugins/wikipedia.xml 3453615 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:39 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:39:24-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:39:26 GMT Keep-Alive: timeout=5, max=887 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.07M=0s 2016-05-09 17:39:25 (2.07 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sv-SE/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sv-SE/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:39:25-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sv-SE/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42232568 Connection: keep-alive Date: Tue, 10 May 2016 00:39:28 GMT x-amz-replication-status: COMPLETED x-amz-version-id: THwFGQGeOnHfur451oZut9_op9fAgByI Last-Modified: Tue, 03 May 2016 15:06:16 GMT ETag: "e8b8fdfbb6c9e9407966bb5ab778e31e" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 6e65abb04cb818a6ec78111935b507f7.cloudfront.net (CloudFront) X-Amz-Cf-Id: 0UGQyas-xiix5gyWCrZTwtsBBAcOYBv0mrMFPWhSb3iV5rSTMs_yKA== Length: 42232568 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.40M 27s 3072K ........ ........ ........ ........ ........ ........ 14% 4.68M 16s 6144K ........ ........ ........ ........ ........ ........ 22% 6.27M 11s 9216K ........ ........ ........ ........ ........ ........ 29% 7.58M 9s 12288K ........ ........ ........ ........ ........ ........ 37% 9.59M 7s 15360K ........ ........ ........ ........ ........ ........ 44% 12.1M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 12.6M 4s 21504K ........ ........ ........ ........ ........ ........ 59% 13.7M 3s 24576K ........ ........ ........ ........ ........ ........ 67% 17.2M 2s 27648K ........ ........ ........ ........ ........ ........ 74% 18.7M 2s 30720K ........ ........ ........ ........ ........ ........ 81% 19.6M 1s 33792K ........ ........ ........ ........ ........ ........ 89% 27.9M 1s 36864K ........ ........ ........ ........ ........ ........ 96% 20.5M 0s 39936K ........ ........ .... 100% 20.5M=5.5s 2016-05-09 17:39:31 (7.36 MB/s) - 'update/complete.mar' saved [42232568/42232568] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sv-SE/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sv-SE/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:39:32-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/sv-SE/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34512064 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:39:34 GMT ETag: "2ef5873ed6e2fd20e063692303c155f1" Last-Modified: Fri, 12 Feb 2016 21:49:34 GMT x-amz-replication-status: COMPLETED x-amz-version-id: _Hojpwh41Xg5U.hOKGfoF716TUj6WHXO X-Cache: Miss from cloudfront Via: 1.1 dc7c4fb5024ff022cad1642ec506a6e8.cloudfront.net (CloudFront) X-Amz-Cf-Id: 4_44bAK684C_zLFxW3fgq-ybMnWnxQUdKbiDBICrq1zpuypvSydvFg== Length: 34512064 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.36M 22s 3072K ........ ........ ........ ........ ........ ........ 18% 4.11M 13s 6144K ........ ........ ........ ........ ........ ........ 27% 5.69M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 7.63M 7s 12288K ........ ........ ........ ........ ........ ........ 45% 9.37M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 11.6M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 12.7M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 14.1M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 17.9M 1s 27648K ........ ........ ........ ........ ........ ........ 91% 18.6M 1s 30720K ........ ........ ........ ........ ........ ...... 100% 18.9M=5.4s 2016-05-09 17:39:38 (6.13 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34512064/34512064] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sv-SE/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sv-SE/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:39:38-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/sv-SE/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35361264 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:39:41 GMT ETag: "949f0f13c1a6320e596148858857c9b4" Last-Modified: Mon, 09 May 2016 21:24:33 GMT x-amz-replication-status: COMPLETED x-amz-version-id: qMF0mBi_5SLxjui.aIHsZYhe9B4Y..eF X-Cache: Miss from cloudfront Via: 1.1 30bb04916f91d64c600e15c15000042d.cloudfront.net (CloudFront) X-Amz-Cf-Id: LyN1xBtK2yLcizaMjAC43-bFG3xsTijWLXsewnIo6g_KJvAb7a-AyQ== Length: 35361264 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.34M 23s 3072K ........ ........ ........ ........ ........ ........ 17% 7.59M 12s 6144K ........ ........ ........ ........ ........ ........ 26% 10.1M 8s 9216K ........ ........ ........ ........ ........ ........ 35% 12.5M 6s 12288K ........ ........ ........ ........ ........ ........ 44% 15.8M 4s 15360K ........ ........ ........ ........ ........ ........ 53% 13.4M 3s 18432K ........ ........ ........ ........ ........ ........ 62% 18.2M 2s 21504K ........ ........ ........ ........ ........ ........ 71% 18.9M 2s 24576K ........ ........ ........ ........ ........ ........ 80% 20.7M 1s 27648K ........ ........ ........ ........ ........ ........ 88% 20.1M 1s 30720K ........ ........ ........ ........ ........ ........ 97% 28.5M 0s 33792K ........ ... 100% 14.4M=4.4s 2016-05-09 17:39:44 (7.73 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35361264/35361264] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia-sv-SE.xml PREPARE REMOVEFILE searchplugins/tyda-sv-SE.xml PREPARE REMOVEFILE searchplugins/prisjakt-sv-SE.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/sv.dic PREPARE REMOVEFILE dictionaries/sv.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia-sv-SE.xml PREPARE ADD searchplugins/tyda-sv-SE.xml PREPARE ADD searchplugins/prisjakt-sv-SE.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/sv.dic PREPARE ADD dictionaries/sv.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia-sv-SE.xml EXECUTE REMOVEFILE searchplugins/tyda-sv-SE.xml EXECUTE REMOVEFILE searchplugins/prisjakt-sv-SE.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/sv.dic EXECUTE REMOVEFILE dictionaries/sv.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia-sv-SE.xml EXECUTE ADD searchplugins/tyda-sv-SE.xml EXECUTE ADD searchplugins/prisjakt-sv-SE.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/sv.dic EXECUTE ADD dictionaries/sv.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia-sv-SE.xml FINISH REMOVEFILE searchplugins/tyda-sv-SE.xml FINISH REMOVEFILE searchplugins/prisjakt-sv-SE.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/sv.dic FINISH REMOVEFILE dictionaries/sv.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia-sv-SE.xml FINISH ADD searchplugins/tyda-sv-SE.xml FINISH ADD searchplugins/prisjakt-sv-SE.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/bing.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/sv.dic FINISH ADD dictionaries/sv.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "sv-SE"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "sv-SE"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\l10n\sv-SE\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Affärer,Allmänna helgdagar,Diverse,Favoriter,FrÃ¥gor,Födelsedag,Helgdag,Idéer,Klienter,Kunder,Leverantörer,Möten,Personligt,Presenter,Projekt,Resa,Samtal,Semester,Status,Tävling,Uppföljning,Ã…rsdag"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia-sv-SE.xml" < remove "searchplugins/tyda-sv-SE.xml" < remove "searchplugins/prisjakt-sv-SE.xml" < remove "searchplugins/google.xml" < remove "searchplugins/bing.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 70d61 < rmdir "searchplugins/" 72d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 4043492 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:40 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 3846883 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:40 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 3977954 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:40 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3519158 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:40 source/bin/searchplugins/bing.xml 3584693 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:40 source/bin/searchplugins/google.xml 3584692 2 -rw-r--r-- 1 cltbld Administrators 2910 May 17:40 source/bin/searchplugins/prisjakt-sv-SE.xml 3650227 1 -rw-r--r-- 1 cltbld Administrators 1184 May 17:40 source/bin/searchplugins/tyda-sv-SE.xml 3650226 5 -rw-r--r-- 1 cltbld Administrators 9356 May 17:40 source/bin/searchplugins/wikipedia-sv-SE.xml 3650225 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:40 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:40:18-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:40:21 GMT Keep-Alive: timeout=5, max=944 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.95M=0s 2016-05-09 17:40:19 (1.95 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ta-LK/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ta-LK/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:40:19-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ta-LK/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41693486 Connection: keep-alive Date: Tue, 10 May 2016 00:40:22 GMT x-amz-replication-status: COMPLETED x-amz-version-id: p.2CX7tlahBxzhrSmIhIx77XlLl_9xKF Last-Modified: Tue, 03 May 2016 15:21:56 GMT ETag: "8a2d90ce5b2a6238f07ab1ad2adff73d" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 6be093c16fa776bbd432bbe9bd03f6af.cloudfront.net (CloudFront) X-Amz-Cf-Id: Jln1d1t-iG9UVa9afJcViyJyfK1OInpzQKQ0_O8Lqp_Qwn7-hXFPIg== Length: 41693486 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 626K 60s 3072K ........ ........ ........ ........ ........ ........ 15% 1.52M 39s 6144K ........ ........ ........ ........ ........ ........ 22% 2.79M 27s 9216K ........ ........ ........ ........ ........ ........ 30% 3.82M 20s 12288K ........ ........ ........ ........ ........ ........ 37% 2.19M 17s 15360K ........ ........ ........ ........ ........ ........ 45% 2.43M 14s 18432K ........ ........ ........ ........ ........ ........ 52% 2.86M 11s 21504K ........ ........ ........ ........ ........ ........ 60% 3.16M 9s 24576K ........ ........ ........ ........ ........ ........ 67% 3.22M 7s 27648K ........ ........ ........ ........ ........ ........ 75% 3.19M 5s 30720K ........ ........ ........ ........ ........ ........ 82% 3.14M 3s 33792K ........ ........ ........ ........ ........ ........ 90% 3.43M 2s 36864K ........ ........ ........ ........ ........ ........ 98% 5.12M 0s 39936K ........ .... 100% 5.61M=18s 2016-05-09 17:40:37 (2.24 MB/s) - 'update/complete.mar' saved [41693486/41693486] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ta-LK/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ta-LK/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:40:38-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/ta-LK/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34111920 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:40:41 GMT ETag: "5c2d57a4cef6f3531951ee2d1a10f705" Last-Modified: Fri, 12 Feb 2016 21:49:35 GMT x-amz-replication-status: COMPLETED x-amz-version-id: A.EBBEBJsIiZlKsF6XERV2UOE6RM.Jwd X-Cache: Miss from cloudfront Via: 1.1 4d4153e76bb2810aa1d7a86323288fb2.cloudfront.net (CloudFront) X-Amz-Cf-Id: aIeV7beoFLC5hF4aD-18tv6ZieFQkN4VyG-3XDPY4uqapAYsZxZaTw== Length: 34111920 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.15M 26s 3072K ........ ........ ........ ........ ........ ........ 18% 3.03M 16s 6144K ........ ........ ........ ........ ........ ........ 27% 5.09M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 6.77M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 7.79M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 9.02M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 9.82M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 9.28M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 7.74M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 9.35M 1s 30720K ........ ........ ........ ........ ........ 100% 9.91M=6.9s 2016-05-09 17:40:46 (4.69 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34111920/34111920] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ta-LK/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ta-LK/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:40:46-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ta-LK/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34965968 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:40:49 GMT ETag: "2f9746d3b1fb5bb15a40a98f5a7c2d3e" Last-Modified: Mon, 09 May 2016 21:42:46 GMT x-amz-replication-status: COMPLETED x-amz-version-id: G8Z_gn1WZvoczIuaFfX0emQDAsHQKnEU X-Cache: Miss from cloudfront Via: 1.1 8e86372eaaa62fc64b70e7bcde725dd9.cloudfront.net (CloudFront) X-Amz-Cf-Id: XIejXidLdEU03MVzvPqgLN6tM3pV4wt97VCg8FyheCFa-XjEcrJ5FQ== Length: 34965968 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.29M 24s 3072K ........ ........ ........ ........ ........ ........ 17% 3.51M 15s 6144K ........ ........ ........ ........ ........ ........ 26% 5.28M 10s 9216K ........ ........ ........ ........ ........ ........ 35% 7.02M 7s 12288K ........ ........ ........ ........ ........ ........ 44% 8.55M 6s 15360K ........ ........ ........ ........ ........ ........ 53% 8.24M 4s 18432K ........ ........ ........ ........ ........ ........ 62% 11.0M 3s 21504K ........ ........ ........ ........ ........ ........ 71% 8.65M 2s 24576K ........ ........ ........ ........ ........ ........ 80% 8.38M 1s 27648K ........ ........ ........ ........ ........ ........ 89% 9.43M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 9.27M 0s 33792K ..... 100% 524K=7.2s 2016-05-09 17:40:54 (4.64 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34965968/34965968] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ta-LK"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_9-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ta-LK"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_9-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d59 < rmdir "searchplugins/" 71d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 4109033 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:41 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5288680 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:41 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5288679 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:41 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 3846841 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:41 source/bin/searchplugins/amazondotcom.xml 3912376 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:41 source/bin/searchplugins/aol-web-search.xml 3846839 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:41 source/bin/searchplugins/bing.xml 3715766 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:41 source/bin/searchplugins/eBay.xml 3781301 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:41 source/bin/searchplugins/twitter.xml 3781300 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:41 source/bin/searchplugins/wikipedia.xml 3846835 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:41 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:41:28-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:41:31 GMT Keep-Alive: timeout=5, max=999 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.71M=0s 2016-05-09 17:41:29 (1.71 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/tr/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/tr/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:41:29-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/tr/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41603851 Connection: keep-alive Date: Tue, 10 May 2016 00:41:32 GMT x-amz-replication-status: COMPLETED x-amz-version-id: NxoKlfaRBf.srRWYxrNXQB3fp4ewIn9V Last-Modified: Tue, 03 May 2016 14:18:11 GMT ETag: "3d7f3255ea969f2c92de39cfa1665abb" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 0ffb9964022445351e635c66ad0176ff.cloudfront.net (CloudFront) X-Amz-Cf-Id: aCm9uMNUvJPPtogOJ8KpCNeGaV3TN9aUMkviKiorXgfezNsH4QS66A== Length: 41603851 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.19M 31s 3072K ........ ........ ........ ........ ........ ........ 15% 3.46M 19s 6144K ........ ........ ........ ........ ........ ........ 22% 5.42M 13s 9216K ........ ........ ........ ........ ........ ........ 30% 7.51M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 7.93M 8s 15360K ........ ........ ........ ........ ........ ........ 45% 9.19M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 7.61M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 7.66M 4s 24576K ........ ........ ........ ........ ........ ........ 68% 9.25M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 9.25M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 7.81M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 9.15M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 6.31M 0s 39936K ........ .. 100% 7.82M=7.7s 2016-05-09 17:41:37 (5.12 MB/s) - 'update/complete.mar' saved [41603851/41603851] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/tr/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/tr/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:41:38-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/tr/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33975824 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:41:41 GMT ETag: "845efd0684590edf20db8589a6cc1844" Last-Modified: Fri, 12 Feb 2016 21:49:37 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Lqa39IKFFdjcxfPjmJTub.DUBFYm0pOf X-Cache: Miss from cloudfront Via: 1.1 88972e3933cc06dd11a6fa704a208631.cloudfront.net (CloudFront) X-Amz-Cf-Id: V2h7dl0gCHkMVrjJUt6p7Wt9JzbfgTAgSZ9nJKvIi3soXlWOTiDvdA== Length: 33975824 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.18M 25s 3072K ........ ........ ........ ........ ........ ........ 18% 3.15M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 4.65M 11s 9216K ........ ........ ........ ........ ........ ........ 37% 6.66M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 8.43M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 10.5M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 12.3M 3s 21504K ........ ........ ........ ........ ........ ........ 74% 14.7M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 13.3M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 18.2M 0s 30720K ........ ........ ........ ........ ...... 100% 20.6M=6.2s 2016-05-09 17:41:45 (5.25 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33975824/33975824] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/tr/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/tr/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:41:46-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/tr/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34827176 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:41:48 GMT ETag: "c24f06174b839f808d3e294db5f431dc" Last-Modified: Mon, 09 May 2016 20:20:58 GMT x-amz-replication-status: COMPLETED x-amz-version-id: lKAf7oYzXC6X.YO709eVOYRYy7JPPFlM X-Cache: Miss from cloudfront Via: 1.1 4a7b695b8ae560fe9087da065a2b7812.cloudfront.net (CloudFront) X-Amz-Cf-Id: IN9fZSFMIg05CtLC9jP9lCUFkm8fKZJWbp3Yu7hxNWxoAQ3CGAF0tw== Length: 34827176 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.46M 21s 3072K ........ ........ ........ ........ ........ ........ 18% 4.49M 12s 6144K ........ ........ ........ ........ ........ ........ 27% 5.87M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 8.51M 6s 12288K ........ ........ ........ ........ ........ ........ 45% 9.61M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 10.6M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 15.3M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 13.9M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 18.3M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 18.5M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 8.40M 0s 33792K ... 100% 5.39M=5.3s 2016-05-09 17:41:52 (6.25 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34827176/34827176] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yandex-tr.xml PREPARE REMOVEFILE searchplugins/wikipedia-tr.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yandex-tr.xml PREPARE ADD searchplugins/wikipedia-tr.xml PREPARE ADD searchplugins/google.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yandex-tr.xml EXECUTE REMOVEFILE searchplugins/wikipedia-tr.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yandex-tr.xml EXECUTE ADD searchplugins/wikipedia-tr.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yandex-tr.xml FINISH REMOVEFILE searchplugins/wikipedia-tr.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yandex-tr.xml FINISH ADD searchplugins/wikipedia-tr.xml FINISH ADD searchplugins/google.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "tr"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "tr"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\tr\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,11d8 < remove "searchplugins/yandex-tr.xml" < remove "searchplugins/wikipedia-tr.xml" < remove "searchplugins/google.xml" 13a11 > remove "prldap60.dll" 22,24d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 28d22 < remove "mozalloc.dll" 33a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 40,42c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 45,47c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 65d59 < rmdir "searchplugins/" 67d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 4174559 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:42 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5419742 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:42 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5485277 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:42 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 4043447 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:42 source/bin/searchplugins/google.xml 3912374 2 -rw-r--r-- 1 cltbld Administrators 2223 May 17:42 source/bin/searchplugins/wikipedia-tr.xml 3977909 2 -rw-r--r-- 1 cltbld Administrators 2618 May 17:42 source/bin/searchplugins/yandex-tr.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:42:26-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:42:28 GMT Keep-Alive: timeout=5, max=895 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.06M=0s 2016-05-09 17:42:26 (2.06 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/uk/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/uk/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:42:27-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/uk/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42070304 Connection: keep-alive Date: Tue, 10 May 2016 00:42:30 GMT x-amz-replication-status: COMPLETED x-amz-version-id: oaKA3uknvdneOZkOqOMG2DNME7sD7nvG Last-Modified: Tue, 03 May 2016 14:34:10 GMT ETag: "0f15044b8de69747b32d1fd05977a0b7" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 990c804118e679d7ea0f4d3ca3cc4534.cloudfront.net (CloudFront) X-Amz-Cf-Id: P-Oeb4890jpgslvRzvLi-6t1zLGKwiJX3nRh719bg-sC5uEpHAStjA== Length: 42070304 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.51M 25s 3072K ........ ........ ........ ........ ........ ........ 14% 9.31M 13s 6144K ........ ........ ........ ........ ........ ........ 22% 11.3M 9s 9216K ........ ........ ........ ........ ........ ........ 29% 6.82M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 6.40M 6s 15360K ........ ........ ........ ........ ........ ........ 44% 6.41M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 6.74M 4s 21504K ........ ........ ........ ........ ........ ........ 59% 6.78M 3s 24576K ........ ........ ........ ........ ........ ........ 67% 6.86M 3s 27648K ........ ........ ........ ........ ........ ........ 74% 6.83M 2s 30720K ........ ........ ........ ........ ........ ........ 82% 6.83M 1s 33792K ........ ........ ........ ........ ........ ........ 89% 6.88M 1s 36864K ........ ........ ........ ........ ........ ........ 97% 7.95M 0s 39936K ........ ........ . 100% 8.22M=7.1s 2016-05-09 17:42:34 (5.65 MB/s) - 'update/complete.mar' saved [42070304/42070304] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/uk/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/uk/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:42:36-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/uk/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34440056 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:42:38 GMT ETag: "71a725b656fd8806ee9bf483a0e6bf8f" Last-Modified: Fri, 12 Feb 2016 21:49:38 GMT x-amz-replication-status: COMPLETED x-amz-version-id: uq2nftN4T5DNgwa4KU23HB3NXuoMwefm X-Cache: Miss from cloudfront Via: 1.1 95da1452a75435200220a7075ca3893f.cloudfront.net (CloudFront) X-Amz-Cf-Id: 7OfkSsLTifLTGemb_LQnc0xARnHZtmsnMro3hlTHTTPA36Vy_BffpQ== Length: 34440056 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.28M 23s 3072K ........ ........ ........ ........ ........ ........ 18% 3.24M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 5.25M 10s 9216K ........ ........ ........ ........ ........ ........ 36% 6.70M 7s 12288K ........ ........ ........ ........ ........ ........ 45% 8.80M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 10.3M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 11.8M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 16.0M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 14.2M 1s 27648K ........ ........ ........ ........ ........ ........ 91% 18.5M 1s 30720K ........ ........ ........ ........ ........ ..... 100% 18.5M=5.9s 2016-05-09 17:42:42 (5.58 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34440056/34440056] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/uk/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/uk/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:42:43-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/uk/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35299392 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:42:45 GMT ETag: "6367aab28928c9d89d792e64f251961c" Last-Modified: Mon, 09 May 2016 20:39:17 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 5qsRLEDdbaM9UnBS8GPAzjG_o.0qxFLz X-Cache: Miss from cloudfront Via: 1.1 2239f0bfe6d7427183a4e375c4638619.cloudfront.net (CloudFront) X-Amz-Cf-Id: qECuAYq7jXRcX4sHcxZFovGX1hM0w_KADFMTff8pCOZV3LHN8ntXnw== Length: 35299392 (34M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.68M 18s 3072K ........ ........ ........ ........ ........ ........ 17% 7.01M 10s 6144K ........ ........ ........ ........ ........ ........ 26% 9.18M 7s 9216K ........ ........ ........ ........ ........ ........ 35% 12.3M 5s 12288K ........ ........ ........ ........ ........ ........ 44% 16.4M 4s 15360K ........ ........ ........ ........ ........ ........ 53% 17.5M 3s 18432K ........ ........ ........ ........ ........ ........ 62% 10.6M 2s 21504K ........ ........ ........ ........ ........ ........ 71% 14.3M 1s 24576K ........ ........ ........ ........ ........ ........ 80% 8.51M 1s 27648K ........ ........ ........ ........ ........ ........ 89% 11.7M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 14.0M 0s 33792K ........ .. 100% 15.5M=4.5s 2016-05-09 17:42:48 (7.48 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35299392/35299392] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/uk.dic PREPARE REMOVEFILE dictionaries/uk.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/uk.dic PREPARE ADD dictionaries/uk.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/uk.dic EXECUTE REMOVEFILE dictionaries/uk.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/uk.dic EXECUTE ADD dictionaries/uk.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/uk.dic FINISH REMOVEFILE dictionaries/uk.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/uk.dic FINISH ADD dictionaries/uk.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 1c1,5 < ; This file is in the UTF-8 encoding --- > # This Source Code Form is subject to the terms of the Mozilla Public > # License, v. 2.0. If a copy of the MPL was not distributed with this > # file, You can obtain one at http://mozilla.org/MPL/2.0/. > > # This file is in the UTF-8 encoding 9c13 < ; LOCALIZATION NOTE (CrashReporterVendorTitle): %s is replaced with the vendor name. (i.e. "Mozilla") --- > # LOCALIZATION NOTE (CrashReporterVendorTitle): %s is replaced with the vendor name. (i.e. "Mozilla") 11,14c15,18 < ; LOCALIZATION NOTE (CrashReporterErrorText): %s is replaced with another string containing detailed information. < CrashReporterErrorText=Програма зіткнулаÑÑŒ з проблемою та впала.\n\nÐа жаль, доповідач про аварії не здатен надіÑлати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ цю аварію.\n\nПодробиці: %s < ; LOCALIZATION NOTE (CrashReporterProductErrorText2): The first %s is replaced with the product name (i.e. "Firefox"), the second is replaced with another string containing detailed information. These two substitutions can not be reordered! < CrashReporterProductErrorText2=%s зіткнувÑÑ Ð· проблемою Ñ– впав.\n\nÐа жаль, доповідач про аварії не здатен надіÑлати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ цю аварію.\n\nПодробиці: %s --- > # LOCALIZATION NOTE (CrashReporterErrorText): %s is replaced with another string containing detailed information. > CrashReporterErrorText=Програма зіткнулаÑÑŒ з проблемою Ñ– впала.\n\nÐа жаль, не вдалоÑÑ Ð½Ð°Ð´Ñ–Ñлати звіт про це падіннÑ.\n\nПодробиці: %s > # LOCALIZATION NOTE (CrashReporterProductErrorText2): The first %s is replaced with the product name (i.e. "Firefox"), the second is replaced with another string containing detailed information. These two substitutions can not be reordered! > CrashReporterProductErrorText2=%s зіткнувÑÑ Ð· проблемою Ñ– впав.\n\nÐа жаль, не вдалоÑÑ Ð½Ð°Ð´Ñ–Ñлати звіт про падіннÑ.\n\nПодробиці: %s 16,17c20,21 < ; LOCALIZATION NOTE (CrashReporterDescriptionText2): The %s is replaced with the product name. < CrashReporterDescriptionText2=%s зіткнувÑÑ Ð· проблемою Ñ– впав.\n\nЩоб допомогти нам розібратиÑÑŒ та виправити проблему ви можете надіÑлати нам Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ аварію. --- > # LOCALIZATION NOTE (CrashReporterDescriptionText2): The %s is replaced with the product name. > CrashReporterDescriptionText2=%s зіткнувÑÑ Ð· проблемою Ñ– впав.\n\nЩоб допомогти нам розібратиÑÑŒ Ñ– виправити проблему, ви можете надіÑлати звіт про падіннÑ. 23,24c27,28 < ; LOCALIZATION NOTE (CheckSendReport): The %s is replaced with the vendor name. < CheckSendReport=Повідомте %s про цю аварію, щоб вони змогли Ñ—Ñ— виправити --- > # LOCALIZATION NOTE (CheckSendReport): The %s is replaced with the vendor name. > CheckSendReport=Повідомте %s про це падіннÑ, щоб вони змогли владнати проблему 28c32 < ReportPreSubmit2=Ваш звіт про аварію буде надіÑлано до того, Ñк ви закриєте або перезавантажите програму. --- > ReportPreSubmit2=Ваш звіт про Ð¿Ð°Ð´Ñ–Ð½Ð½Ñ Ð±ÑƒÐ´Ðµ надіÑлано перед тим, Ñк ви закриєте або перезапуÑтите програму. 33c37 < ; LOCALIZATION NOTE (Quit2): The %s is replaced with the product name. --- > # LOCALIZATION NOTE (Quit2): The %s is replaced with the product name. 35c39 < ; LOCALIZATION NOTE (Restart): The %s is replaced with the product name. --- > # LOCALIZATION NOTE (Restart): The %s is replaced with the product name. 39c43,44 < ; LOCALIZATION NOTE (CrashID): The %s is replaced with the Crash ID from the server, which is a string like abc12345-6789-0abc-def1-23456abcdef1 --- > > # LOCALIZATION NOTE (CrashID): The %s is replaced with the Crash ID from the server, which is a string like abc12345-6789-0abc-def1-23456abcdef1 41c46 < ; LOCALIZATION NOTE (CrashDetailsURL): The %s is replaced with a URL that the user can visit to view the crash details. --- > # LOCALIZATION NOTE (CrashDetailsURL): The %s is replaced with a URL that the user can visit to view the crash details. 53c58 < ; LOCALIZATION NOTE (ErrorEndOfLife): The %s is replaced with the product name. --- > # LOCALIZATION NOTE (ErrorEndOfLife): The %s is replaced with the product name. 54a60 > diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "uk"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "uk"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\uk\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d61 < rmdir "searchplugins/" 73d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ diff -r source/bin/updater.ini target/bin/updater.ini 1c1,5 < ; This file is in the UTF-8 encoding --- > # This Source Code Form is subject to the terms of the Mozilla Public > # License, v. 2.0. If a copy of the MPL was not distributed with this > # file, You can obtain one at http://mozilla.org/MPL/2.0/. > > # This file is in the UTF-8 encoding 3d6 < Info=Thunderbird вÑтановлює оновленнÑ. Він запуÑтитьÑÑ Ð·Ð° мить… 4a8 > Info=Thunderbird вÑтановлює оновленнÑ. Він запуÑтитьÑÑ Ð·Ð° мить… Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 5681895 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:43 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5681894 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:43 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5485285 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:43 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5288637 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:43 source/bin/searchplugins/amazondotcom.xml 5354172 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:43 source/bin/searchplugins/aol-web-search.xml 4174523 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:43 source/bin/searchplugins/bing.xml 5354170 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:43 source/bin/searchplugins/eBay.xml 5288633 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:43 source/bin/searchplugins/twitter.xml 5354168 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:43 source/bin/searchplugins/wikipedia.xml 5288631 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:43 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:43:23-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:43:25 GMT Keep-Alive: timeout=5, max=871 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:43:24 (2.10 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/vi/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/vi/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:43:24-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/vi/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41688847 Connection: keep-alive Date: Tue, 10 May 2016 00:43:27 GMT x-amz-replication-status: COMPLETED x-amz-version-id: D4e0qd9Uc4Nj8XJBhnH1U3ZzQ1xwY8Mr Last-Modified: Tue, 03 May 2016 14:48:32 GMT ETag: "fb7a30a7cfd1fbbb1ce96eba9f69995f" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 ccf10d437e3b13a9b947840075a4df94.cloudfront.net (CloudFront) X-Amz-Cf-Id: _cPy0pqZSSTuz6mzDCj2XGbx5l03-4mxAxI0Orrgr5q4aaW0os3yXA== Length: 41688847 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.35M 27s 3072K ........ ........ ........ ........ ........ ........ 15% 7.56M 15s 6144K ........ ........ ........ ........ ........ ........ 22% 12.6M 10s 9216K ........ ........ ........ ........ ........ ........ 30% 17.3M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 11.5M 5s 15360K ........ ........ ........ ........ ........ ........ 45% 13.7M 4s 18432K ........ ........ ........ ........ ........ ........ 52% 14.2M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 16.3M 3s 24576K ........ ........ ........ ........ ........ ........ 67% 18.7M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 20.7M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 21.7M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 24.6M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 24.3M 0s 39936K ........ .... 100% 26.4M=4.6s 2016-05-09 17:43:29 (8.59 MB/s) - 'update/complete.mar' saved [41688847/41688847] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/vi/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/vi/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:43:30-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/vi/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34082248 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:43:32 GMT ETag: "a92b66da07955447661e48ff95b0df14" Last-Modified: Fri, 12 Feb 2016 21:49:40 GMT x-amz-replication-status: COMPLETED x-amz-version-id: q8Sw1Gtovc0nH3xZ.msbe6EVEDmRiehp X-Cache: Miss from cloudfront Via: 1.1 4a55d86b7263f73c6817c7c25d4b3643.cloudfront.net (CloudFront) X-Amz-Cf-Id: 4SWswR8ujMZ3HtQcruiTWVqNhhptb43_F6dfgj8hX3ajBVINpMmAzg== Length: 34082248 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.12M 26s 3072K ........ ........ ........ ........ ........ ........ 18% 3.06M 16s 6144K ........ ........ ........ ........ ........ ........ 27% 4.75M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 6.58M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 8.66M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 10.1M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 11.5M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 14.1M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 7.46M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 5.69M 1s 30720K ........ ........ ........ ........ ........ 100% 5.03M=7.3s 2016-05-09 17:43:38 (4.46 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34082248/34082248] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/vi/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/vi/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:43:38-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/vi/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34932520 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:43:41 GMT ETag: "750bb835a86ea360a9c957bda9bbfe56" Last-Modified: Mon, 09 May 2016 20:57:49 GMT x-amz-replication-status: COMPLETED x-amz-version-id: g9ssAkcJw.wDlC43astIW0ZhNqOLbwR8 X-Cache: Miss from cloudfront Via: 1.1 4a55d86b7263f73c6817c7c25d4b3643.cloudfront.net (CloudFront) X-Amz-Cf-Id: gRbiGMbyQapd0wYJMVciuQBbBKfxC64cVbB5ivYDMdABH7vYzgt77g== Length: 34932520 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.44M 21s 3072K ........ ........ ........ ........ ........ ........ 18% 4.27M 13s 6144K ........ ........ ........ ........ ........ ........ 27% 6.30M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 7.74M 6s 12288K ........ ........ ........ ........ ........ ........ 45% 10.0M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 11.2M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 13.9M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 14.9M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 17.7M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 18.7M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 19.5M 0s 33792K ..... 100% 45.9M=5.1s 2016-05-09 17:43:44 (6.51 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34932520/34932520] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/vi-x-KieuMoi.[KhongChuan].dic PREPARE REMOVEFILE dictionaries/vi-x-KieuMoi.[KhongChuan].aff PREPARE REMOVEFILE dictionaries/vi-x-KieuCu.[Chuan].dic PREPARE REMOVEFILE dictionaries/vi-x-KieuCu.[Chuan].aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/vi-x-KieuMoi.[KhongChuan].dic PREPARE ADD dictionaries/vi-x-KieuMoi.[KhongChuan].aff PREPARE ADD dictionaries/vi-x-KieuCu.[Chuan].dic PREPARE ADD dictionaries/vi-x-KieuCu.[Chuan].aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/vi-x-KieuMoi.[KhongChuan].dic EXECUTE REMOVEFILE dictionaries/vi-x-KieuMoi.[KhongChuan].aff EXECUTE REMOVEFILE dictionaries/vi-x-KieuCu.[Chuan].dic EXECUTE REMOVEFILE dictionaries/vi-x-KieuCu.[Chuan].aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/vi-x-KieuMoi.[KhongChuan].dic EXECUTE ADD dictionaries/vi-x-KieuMoi.[KhongChuan].aff EXECUTE ADD dictionaries/vi-x-KieuCu.[Chuan].dic EXECUTE ADD dictionaries/vi-x-KieuCu.[Chuan].aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/vi-x-KieuMoi.[KhongChuan].dic FINISH REMOVEFILE dictionaries/vi-x-KieuMoi.[KhongChuan].aff FINISH REMOVEFILE dictionaries/vi-x-KieuCu.[Chuan].dic FINISH REMOVEFILE dictionaries/vi-x-KieuCu.[Chuan].aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/vi-x-KieuMoi.[KhongChuan].dic FINISH ADD dictionaries/vi-x-KieuMoi.[KhongChuan].aff FINISH ADD dictionaries/vi-x-KieuCu.[Chuan].dic FINISH ADD dictionaries/vi-x-KieuCu.[Chuan].aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" < < //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" < < //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "vi"); < < //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Lá»… kỉ niệm,Sinh nhật,Kinh doanh,Cuá»™c gá»i,Khách hàng,Thi thố,Ưa thích,Theo dõi,Quà tặng,Ngày lá»…,à kiến,Vấn Ä‘á»,Há»p mặt,Linh tinh,Cá nhân,Dá»± án,Ngày lá»… Công cá»™ng,Trạng thái,Nhà cung cấp,Du lịch,Tham quan"); --- > //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" > > //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" > > //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "vi"); > > //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\vi\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Lá»… kỉ niệm,Sinh nhật,Kinh doanh,Cuá»™c gá»i,Khách hàng,Thi thố,Ưa thích,Theo dõi,Quà tặng,Ngày lá»…,à kiến,Vấn Ä‘á»,Há»p mặt,Linh tinh,Cá nhân,Dá»± án,Ngày lá»… Công cá»™ng,Trạng thái,Nhà cung cấp,Du lịch,Tham quan"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 73d63 < rmdir "searchplugins/" 75d64 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 5812971 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:44 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5681898 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:44 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5747433 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:44 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5485247 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:44 source/bin/searchplugins/amazondotcom.xml 5354174 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:44 source/bin/searchplugins/aol-web-search.xml 5485245 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:44 source/bin/searchplugins/bing.xml 5550780 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:44 source/bin/searchplugins/eBay.xml 5419707 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:44 source/bin/searchplugins/twitter.xml 5550778 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:44 source/bin/searchplugins/wikipedia.xml 5485241 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:44 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:44:20-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:44:22 GMT Keep-Alive: timeout=5, max=974 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.14M=0s 2016-05-09 17:44:20 (2.14 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-CN/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-CN/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:44:20-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-CN/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41613413 Connection: keep-alive Date: Tue, 10 May 2016 00:44:23 GMT x-amz-replication-status: COMPLETED x-amz-version-id: rSUnzYb_MDdZbuTLNT2H0DpgMCtgrKAT Last-Modified: Tue, 03 May 2016 15:03:00 GMT ETag: "c65dd1c315056c377819823050d71a2f" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 f0ef92e52918ab5129ebd66f2f633cbb.cloudfront.net (CloudFront) X-Amz-Cf-Id: uxkqZ3J71WI3RGIHv1Unr4W35FwNDS_rYIZFqYNIA71U_Dc25Z1kTA== Length: 41613413 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.59M 23s 3072K ........ ........ ........ ........ ........ ........ 15% 5.36M 14s 6144K ........ ........ ........ ........ ........ ........ 22% 6.39M 10s 9216K ........ ........ ........ ........ ........ ........ 30% 9.33M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 9.67M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 12.5M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 15.5M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 14.6M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 18.3M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 19.1M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 19.8M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 29.4M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 21.2M 0s 39936K ........ .. 100% 55.9M=4.9s 2016-05-09 17:44:26 (8.08 MB/s) - 'update/complete.mar' saved [41613413/41613413] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/zh-CN/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/zh-CN/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:44:27-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/zh-CN/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33996352 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:44:30 GMT ETag: "5c775cd7a4766d0c9877a0d4559ba1cb" Last-Modified: Fri, 12 Feb 2016 21:49:38 GMT x-amz-replication-status: COMPLETED x-amz-version-id: JMgLuUw6JjN0j27CczkktA0axT1OJjab X-Cache: Miss from cloudfront Via: 1.1 d01884a3320364227d925bce1a38f0ad.cloudfront.net (CloudFront) X-Amz-Cf-Id: aUgnHYrz9KffMvfyhZHEiFBLjO5lHtqJDj1wnruQHLAZJw--gW48cg== Length: 33996352 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.49M 20s 3072K ........ ........ ........ ........ ........ ........ 18% 4.77M 12s 6144K ........ ........ ........ ........ ........ ........ 27% 7.18M 8s 9216K ........ ........ ........ ........ ........ ........ 37% 8.11M 6s 12288K ........ ........ ........ ........ ........ ........ 46% 11.3M 4s 15360K ........ ........ ........ ........ ........ ........ 55% 10.6M 3s 18432K ........ ........ ........ ........ ........ ........ 64% 12.6M 2s 21504K ........ ........ ........ ........ ........ ........ 74% 12.2M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 9.82M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 12.0M 0s 30720K ........ ........ ........ ........ ...... 100% 10.4M=5.3s 2016-05-09 17:44:33 (6.17 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [33996352/33996352] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/zh-CN/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/zh-CN/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:44:34-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/zh-CN/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34847680 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:44:36 GMT ETag: "f5ffb1159a7f63b6222f2a6b0899f0be" Last-Modified: Mon, 09 May 2016 21:16:37 GMT x-amz-replication-status: COMPLETED x-amz-version-id: o69tB9O3kJrFdCfw8WCn0dIezfofK6hY X-Cache: Miss from cloudfront Via: 1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront) X-Amz-Cf-Id: UNWbidDpJFiAeEI77lPMTa2F_0-d68i6xIxmuBcONXxL_DYPWWET2Q== Length: 34847680 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.41M 21s 3072K ........ ........ ........ ........ ........ ........ 18% 5.72M 12s 6144K ........ ........ ........ ........ ........ ........ 27% 5.58M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 6.33M 6s 12288K ........ ........ ........ ........ ........ ........ 45% 6.64M 5s 15360K ........ ........ ........ ........ ........ ........ 54% 6.64M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 6.69M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 6.62M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 6.82M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 7.56M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 6.56M 0s 33792K ... 100% 3.77M=6.8s 2016-05-09 17:44:41 (4.87 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34847680/34847680] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "zh-CN"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" < pref("calendar.categories.names", "周年纪念,生日,商务,打电è¯,客人,竞争,客户,收è—,åŽç»­,礼物,å‡æ—¥,点å­,问题,其他,个人,项目,公共å‡æ—¥,状æ€,供应商,æ—…è¡Œ,休å‡"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "zh-CN"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-CN\calendar\lightning-l10n.js" > pref("calendar.categories.names", "周年纪念,生日,商务,打电è¯,客人,竞争,客户,收è—,åŽç»­,礼物,å‡æ—¥,点å­,问题,其他,个人,项目,公共å‡æ—¥,状æ€,供应商,æ—…è¡Œ,休å‡"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d59 < rmdir "searchplugins/" 71d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 6075119 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:45 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 6075118 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:45 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 6075117 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:45 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5616321 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:45 source/bin/searchplugins/amazondotcom.xml 5419712 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:45 source/bin/searchplugins/aol-web-search.xml 5681855 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:45 source/bin/searchplugins/bing.xml 5550782 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:45 source/bin/searchplugins/eBay.xml 5681853 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:45 source/bin/searchplugins/twitter.xml 5747388 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:45 source/bin/searchplugins/wikipedia.xml 5616315 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:45 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:45:16-- https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:45:18 GMT Keep-Alive: timeout=5, max=995 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.99M=0s 2016-05-09 17:45:16 (1.99 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-TW/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-TW/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:45:17-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-TW/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41844154 Connection: keep-alive Date: Tue, 10 May 2016 00:45:20 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 7fDP29FjdokhTExLjO3MfUJd2cugAuZa Last-Modified: Tue, 03 May 2016 15:17:40 GMT ETag: "2389e48ef31f4bffa4e0f2a2bb40ecb7" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 9767e262e4af15c8d83a726bb0f44fa5.cloudfront.net (CloudFront) X-Amz-Cf-Id: lGWtFCkvThq4p9lDw_lLv9f15b1puTU4JYwEe3EDoU6KFopiILdHcw== Length: 41844154 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.42M 26s 3072K ........ ........ ........ ........ ........ ........ 15% 4.73M 15s 6144K ........ ........ ........ ........ ........ ........ 22% 6.62M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 8.87M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 9.98M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 12.4M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 12.9M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 17.0M 3s 24576K ........ ........ ........ ........ ........ ........ 67% 14.1M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 19.3M 2s 30720K ........ ........ ........ ........ ........ ........ 82% 25.6M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 20.3M 1s 36864K ........ ........ ........ ........ ........ ........ 97% 22.4M 0s 39936K ........ ...... 100% 35.4M=5.3s 2016-05-09 17:45:22 (7.56 MB/s) - 'update/complete.mar' saved [41844154/41844154] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/zh-TW/Thunderbird Setup 38.6.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.6.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/zh-TW/Thunderbird Setup 38.6.0.exe'] --2016-05-09 17:45:23-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.6.0/win32/zh-TW/Thunderbird%20Setup%2038.6.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34171608 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:45:26 GMT ETag: "b4ae5ffc98a53489d0e56164688a9d3e" Last-Modified: Fri, 12 Feb 2016 21:49:40 GMT x-amz-replication-status: COMPLETED x-amz-version-id: LePAqaUxVaZolDiAkEWPmiY_XXuNksnJ X-Cache: Miss from cloudfront Via: 1.1 515297ac55a7ae01bf8c7d03df4fecb1.cloudfront.net (CloudFront) X-Amz-Cf-Id: lRiU77Ccl24lzPPJ-kHGMeekKftfDsW6xPTsKq_YzBPbL_FBOC-y_w== Length: 34171608 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.6.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 772K 39s 3072K ........ ........ ........ ........ ........ ........ 18% 2.36M 23s 6144K ........ ........ ........ ........ ........ ........ 27% 3.82M 16s 9216K ........ ........ ........ ........ ........ ........ 36% 6.28M 11s 12288K ........ ........ ........ ........ ........ ........ 46% 7.60M 8s 15360K ........ ........ ........ ........ ........ ........ 55% 9.50M 6s 18432K ........ ........ ........ ........ ........ ........ 64% 12.2M 4s 21504K ........ ........ ........ ........ ........ ........ 73% 12.8M 3s 24576K ........ ........ ........ ........ ........ ........ 82% 17.5M 2s 27648K ........ ........ ........ ........ ........ ........ 92% 13.7M 1s 30720K ........ ........ ........ ........ ........ . 100% 25.0M=8.2s 2016-05-09 17:45:32 (3.98 MB/s) - 'Thunderbird Setup 38.6.0.exe' saved [34171608/34171608] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/zh-TW/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/zh-TW/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:45:33-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/zh-TW/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35025144 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:45:35 GMT ETag: "7a8d6c07e4b28cccdc2240cefa668cfc" Last-Modified: Mon, 09 May 2016 21:35:05 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 1jjD8tsZxfXe8vEI0bSumawFuzZzfYHI X-Cache: Miss from cloudfront Via: 1.1 96255a5b0caf50bcafcd101c1ff13691.cloudfront.net (CloudFront) X-Amz-Cf-Id: j5eA8InCnxTiqQUW3C37u4KXdlU7bMiDt_HE83kOLHbKO4VzWYIY-Q== Length: 35025144 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 1.21M 25s 3072K ........ ........ ........ ........ ........ ........ 17% 2.03M 18s 6144K ........ ........ ........ ........ ........ ........ 26% 2.39M 14s 9216K ........ ........ ........ ........ ........ ........ 35% 2.38M 12s 12288K ........ ........ ........ ........ ........ ........ 44% 2.35M 10s 15360K ........ ........ ........ ........ ........ ........ 53% 2.37M 8s 18432K ........ ........ ........ ........ ........ ........ 62% 2.41M 6s 21504K ........ ........ ........ ........ ........ ........ 71% 2.93M 4s 24576K ........ ........ ........ ........ ........ ........ 80% 3.15M 3s 27648K ........ ........ ........ ........ ........ ........ 89% 3.46M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 3.86M 0s 33792K ...... 100% 4.61M=14s 2016-05-09 17:45:48 (2.39 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35025144/35025144] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo-zh-TW.xml PREPARE REMOVEFILE searchplugins/yahoo-bid-zh-TW.xml PREPARE REMOVEFILE searchplugins/wikipedia-zh-TW.xml PREPARE REMOVEFILE searchplugins/ipeen-zh-TW.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/google-maps-zh-TW.xml PREPARE REMOVEFILE searchplugins/findbook-zh-TW.xml PREPARE REMOVEFILE searchplugins/chunghwapost-zh-TW.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/en-US.dic PREPARE REMOVEFILE dictionaries/en-US.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo-zh-TW.xml PREPARE ADD searchplugins/yahoo-bid-zh-TW.xml PREPARE ADD searchplugins/wikipedia-zh-TW.xml PREPARE ADD searchplugins/ipeen-zh-TW.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/google-maps-zh-TW.xml PREPARE ADD searchplugins/findbook-zh-TW.xml PREPARE ADD searchplugins/chunghwapost-zh-TW.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/en-US.dic PREPARE ADD dictionaries/en-US.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo-zh-TW.xml EXECUTE REMOVEFILE searchplugins/yahoo-bid-zh-TW.xml EXECUTE REMOVEFILE searchplugins/wikipedia-zh-TW.xml EXECUTE REMOVEFILE searchplugins/ipeen-zh-TW.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/google-maps-zh-TW.xml EXECUTE REMOVEFILE searchplugins/findbook-zh-TW.xml EXECUTE REMOVEFILE searchplugins/chunghwapost-zh-TW.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/en-US.dic EXECUTE REMOVEFILE dictionaries/en-US.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo-zh-TW.xml EXECUTE ADD searchplugins/yahoo-bid-zh-TW.xml EXECUTE ADD searchplugins/wikipedia-zh-TW.xml EXECUTE ADD searchplugins/ipeen-zh-TW.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/google-maps-zh-TW.xml EXECUTE ADD searchplugins/findbook-zh-TW.xml EXECUTE ADD searchplugins/chunghwapost-zh-TW.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/en-US.dic EXECUTE ADD dictionaries/en-US.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo-zh-TW.xml FINISH REMOVEFILE searchplugins/yahoo-bid-zh-TW.xml FINISH REMOVEFILE searchplugins/wikipedia-zh-TW.xml FINISH REMOVEFILE searchplugins/ipeen-zh-TW.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/google-maps-zh-TW.xml FINISH REMOVEFILE searchplugins/findbook-zh-TW.xml FINISH REMOVEFILE searchplugins/chunghwapost-zh-TW.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/en-US.dic FINISH REMOVEFILE dictionaries/en-US.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo-zh-TW.xml FINISH ADD searchplugins/yahoo-bid-zh-TW.xml FINISH ADD searchplugins/wikipedia-zh-TW.xml FINISH ADD searchplugins/ipeen-zh-TW.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/google-maps-zh-TW.xml FINISH ADD searchplugins/findbook-zh-TW.xml FINISH ADD searchplugins/chunghwapost-zh-TW.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/en-US.dic FINISH ADD dictionaries/en-US.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 25c25 < CommentGrayText=加上附註 (附註是大家都看得到的) --- > CommentGrayText=加上附註(附註會是公開å¯è¦‹çš„) diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "zh-TW"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" < pref("calendar.categories.names", "週年紀念,生日,業務,電話,客戶,競爭,顧客,我的最愛,追蹤,禮物,å‡æ—¥,構想,爭議,雜項,個人,計劃,國定å‡æ—¥,狀態,供應商,æ—…éŠ,å‡æœŸ"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "zh-TW"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_10-0000\l10n\zh-TW\calendar\lightning-l10n.js" > pref("calendar.categories.names", "週年紀念,生日,業務,電話,客戶,競爭,顧客,我的最愛,追蹤,禮物,å‡æ—¥,構想,爭議,雜項,個人,計劃,國定å‡æ—¥,狀態,供應商,æ—…éŠ,å‡æœŸ"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/yahoo-zh-TW.xml" < remove "searchplugins/yahoo-bid-zh-TW.xml" < remove "searchplugins/wikipedia-zh-TW.xml" < remove "searchplugins/ipeen-zh-TW.xml" < remove "searchplugins/google.xml" < remove "searchplugins/google-maps-zh-TW.xml" < remove "searchplugins/findbook-zh-TW.xml" < remove "searchplugins/chunghwapost-zh-TW.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 72d61 < rmdir "searchplugins/" 74d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 6271732 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:46 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 6140659 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:46 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 6206194 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:46 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5812932 2 -rw-r--r-- 1 cltbld Administrators 2530 May 17:46 source/bin/searchplugins/chunghwapost-zh-TW.xml 5878467 2 -rw-r--r-- 1 cltbld Administrators 2217 May 17:46 source/bin/searchplugins/findbook-zh-TW.xml 6009538 2 -rw-r--r-- 1 cltbld Administrators 2311 May 17:46 source/bin/searchplugins/google-maps-zh-TW.xml 5812929 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:46 source/bin/searchplugins/google.xml 5616320 1 -rw-r--r-- 1 cltbld Administrators 959 May 17:46 source/bin/searchplugins/ipeen-zh-TW.xml 5878463 1 -rw-r--r-- 1 cltbld Administrators 1172 May 17:46 source/bin/searchplugins/wikipedia-zh-TW.xml 5747390 1 -rw-r--r-- 1 cltbld Administrators 870 May 17:46 source/bin/searchplugins/yahoo-bid-zh-TW.xml 5878461 1 -rw-r--r-- 1 cltbld Administrators 1105 May 17:46 source/bin/searchplugins/yahoo-zh-TW.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:46:23-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:46:25 GMT Keep-Alive: timeout=5, max=953 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.13M=0s 2016-05-09 17:46:23 (2.13 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/de/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/de/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:46:24-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/de/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41611650 Connection: keep-alive Date: Tue, 10 May 2016 00:27:51 GMT x-amz-replication-status: COMPLETED x-amz-version-id: .uT311LFMFMqPXXWfXdKqFJpPwanT2QX Last-Modified: Tue, 03 May 2016 15:19:44 GMT ETag: "82174c1625a5861e14984b4576c2ef8f" Accept-Ranges: bytes Server: AmazonS3 Age: 1116 X-Cache: Hit from cloudfront Via: 1.1 5574699f9d8b8aad21acf2edbb25dc62.cloudfront.net (CloudFront) X-Amz-Cf-Id: TOYl6f8NUrLr-d0QnDisjxBMML78Lkw43Zt1WgYRTSsgCh2Salf_nQ== Length: 41611650 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 737K 51s 3072K ........ ........ ........ ........ ........ ........ 15% 2.53M 30s 6144K ........ ........ ........ ........ ........ ........ 22% 4.22M 21s 9216K ........ ........ ........ ........ ........ ........ 30% 5.49M 15s 12288K ........ ........ ........ ........ ........ ........ 37% 7.73M 12s 15360K ........ ........ ........ ........ ........ ........ 45% 9.36M 9s 18432K ........ ........ ........ ........ ........ ........ 52% 12.4M 7s 21504K ........ ........ ........ ........ ........ ........ 60% 12.7M 5s 24576K ........ ........ ........ ........ ........ ........ 68% 13.4M 4s 27648K ........ ........ ........ ........ ........ ........ 75% 18.0M 3s 30720K ........ ........ ........ ........ ........ ........ 83% 18.4M 2s 33792K ........ ........ ........ ........ ........ ........ 90% 16.5M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 21.8M 0s 39936K ........ .. 100% 10.5M=8.7s 2016-05-09 17:46:33 (4.54 MB/s) - 'update/complete.mar' saved [41611650/41611650] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/de/Thunderbird Setup 38.5.1.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.5.1.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/de/Thunderbird Setup 38.5.1.exe'] --2016-05-09 17:46:34-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/de/Thunderbird%20Setup%2038.5.1.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33940552 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:46:36 GMT ETag: "02f1a62228a70c3863f1211d6c157b86" Last-Modified: Thu, 07 Jan 2016 15:00:49 GMT x-amz-replication-status: COMPLETED x-amz-version-id: xg8CuyWXnDPED2Z.LLl5sMKRg83ov1sb X-Cache: Miss from cloudfront Via: 1.1 2239f0bfe6d7427183a4e375c4638619.cloudfront.net (CloudFront) X-Amz-Cf-Id: lqTiCUZZD75XkXD3xjZgNQlbJTPWp2tpE4UiZ6SqRe3j45zwC4s-fA== Length: 33940552 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.5.1.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.19M 25s 3072K ........ ........ ........ ........ ........ ........ 18% 3.17M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 5.18M 10s 9216K ........ ........ ........ ........ ........ ........ 37% 6.61M 8s 12288K ........ ........ ........ ........ ........ ........ 46% 8.53M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 10.5M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 12.5M 3s 21504K ........ ........ ........ ........ ........ ........ 74% 12.9M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 10.6M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 9.70M 0s 30720K ........ ........ ........ ........ ..... 100% 11.8M=6.4s 2016-05-09 17:46:41 (5.06 MB/s) - 'Thunderbird Setup 38.5.1.exe' saved [33940552/33940552] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/de/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/de/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:46:41-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/de/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34815304 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:28:07 GMT ETag: "634eef7a4b38d79e593950375d6dd5f0" Last-Modified: Mon, 09 May 2016 21:40:05 GMT x-amz-replication-status: COMPLETED x-amz-version-id: uOX8WY9NkdwwbUl8FEw2nML_8g17.8xi Age: 1116 X-Cache: Hit from cloudfront Via: 1.1 990c804118e679d7ea0f4d3ca3cc4534.cloudfront.net (CloudFront) X-Amz-Cf-Id: ZsnEHuyJW-EPiFgWg7d7eiLPgsYookjrkUnc0piODbzKpfLXCRKymg== Length: 34815304 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.14M 26s 3072K ........ ........ ........ ........ ........ ........ 18% 3.41M 16s 6144K ........ ........ ........ ........ ........ ........ 27% 5.39M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 6.37M 8s 12288K ........ ........ ........ ........ ........ ........ 45% 9.27M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 8.26M 4s 18432K ........ ........ ........ ........ ........ ........ 63% 10.3M 3s 21504K ........ ........ ........ ........ ........ ........ 72% 9.11M 2s 24576K ........ ........ ........ ........ ........ ........ 81% 7.28M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 5.97M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 6.80M 0s 33792K ... 100% 5.96M=7.2s 2016-05-09 17:46:49 (4.59 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34815304/34815304] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo-de.xml PREPARE REMOVEFILE searchplugins/wikipedia-de.xml PREPARE REMOVEFILE searchplugins/twitter-de.xml PREPARE REMOVEFILE searchplugins/eBay-de.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/amazondotcom-de.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo-de.xml PREPARE ADD searchplugins/wikipedia-de.xml PREPARE ADD searchplugins/twitter-de.xml PREPARE ADD searchplugins/eBay-de.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/amazondotcom-de.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo-de.xml EXECUTE REMOVEFILE searchplugins/wikipedia-de.xml EXECUTE REMOVEFILE searchplugins/twitter-de.xml EXECUTE REMOVEFILE searchplugins/eBay-de.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/amazondotcom-de.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo-de.xml EXECUTE ADD searchplugins/wikipedia-de.xml EXECUTE ADD searchplugins/twitter-de.xml EXECUTE ADD searchplugins/eBay-de.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/amazondotcom-de.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo-de.xml FINISH REMOVEFILE searchplugins/wikipedia-de.xml FINISH REMOVEFILE searchplugins/twitter-de.xml FINISH REMOVEFILE searchplugins/eBay-de.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/amazondotcom-de.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo-de.xml FINISH ADD searchplugins/wikipedia-de.xml FINISH ADD searchplugins/twitter-de.xml FINISH ADD searchplugins/eBay-de.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/amazondotcom-de.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "de"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Jubiläum,Geburtstag,Geschäft,Anrufe,Klienten,Konkurrenz,Kunde,Favoriten,Nachgehen,Geschenke,Ferien,Ideen,Fragen,Verschiedenes,Persönlich,Projekte,Feiertag,Status,Lieferanten,Reise,Urlaub"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "de"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Jubiläum,Geburtstag,Geschäft,Anrufe,Klienten,Konkurrenz,Kunde,Favoriten,Nachgehen,Geschenke,Ferien,Ideen,Fragen,Verschiedenes,Persönlich,Projekte,Feiertag,Status,Lieferanten,Reise,Urlaub"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yahoo-de.xml" < remove "searchplugins/wikipedia-de.xml" < remove "searchplugins/twitter-de.xml" < remove "searchplugins/eBay-de.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/amazondotcom-de.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 5419764 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:47 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5288691 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:47 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5354226 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:47 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 6009540 1 -rw-r--r-- 1 cltbld Administrators 1298 May 17:47 source/bin/searchplugins/amazondotcom-de.xml 6075075 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:47 source/bin/searchplugins/bing.xml 6206146 1 -rw-r--r-- 1 cltbld Administrators 1153 May 17:47 source/bin/searchplugins/eBay-de.xml 6009537 1 -rw-r--r-- 1 cltbld Administrators 890 May 17:47 source/bin/searchplugins/twitter-de.xml 5812928 1 -rw-r--r-- 1 cltbld Administrators 1128 May 17:47 source/bin/searchplugins/wikipedia-de.xml 6075071 1 -rw-r--r-- 1 cltbld Administrators 1046 May 17:47 source/bin/searchplugins/yahoo-de.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.1.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:47:23-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:47:25 GMT Keep-Alive: timeout=5, max=877 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.98M=0s 2016-05-09 17:47:23 (1.98 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/en-US/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/en-US/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:47:24-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/en-US/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41840327 Connection: keep-alive Date: Tue, 10 May 2016 00:31:52 GMT x-amz-replication-status: COMPLETED x-amz-version-id: R9YW9c2YnKsljKpep7EYd.N.97Ooub1k Last-Modified: Tue, 03 May 2016 13:50:11 GMT ETag: "3597d44e62a697c70a5caaf12ac0c1ce" Accept-Ranges: bytes Server: AmazonS3 Age: 935 X-Cache: Hit from cloudfront Via: 1.1 8e86372eaaa62fc64b70e7bcde725dd9.cloudfront.net (CloudFront) X-Amz-Cf-Id: Zl76ILjqw3PmXpaJvGCMJKTt5YtTajr3oA09hB9M0YdHPYM-wsX5zw== Length: 41840327 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.47M 25s 3072K ........ ........ ........ ........ ........ ........ 15% 11.9M 13s 6144K ........ ........ ........ ........ ........ ........ 22% 13.3M 9s 9216K ........ ........ ........ ........ ........ ........ 30% 18.7M 6s 12288K ........ ........ ........ ........ ........ ........ 37% 19.4M 5s 15360K ........ ........ ........ ........ ........ ........ 45% 20.1M 4s 18432K ........ ........ ........ ........ ........ ........ 52% 29.8M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 21.8M 2s 24576K ........ ........ ........ ........ ........ ........ 67% 17.2M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 51.2M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 27.9M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 18.7M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 19.6M 0s 39936K ........ ...... 100% 14.1M=3.9s 2016-05-09 17:47:28 (10.1 MB/s) - 'update/complete.mar' saved [41840327/41840327] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/en-US/Thunderbird Setup 38.5.1.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.5.1.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/en-US/Thunderbird Setup 38.5.1.exe'] --2016-05-09 17:47:29-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/en-US/Thunderbird%20Setup%2038.5.1.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34095280 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:47:31 GMT ETag: "852cbc5b7766b8048456afa2dffe2cf8" Last-Modified: Thu, 07 Jan 2016 15:01:04 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 5TnZzpXjhRGf8pV8IE09x6OxSZ6ypxjj X-Cache: Miss from cloudfront Via: 1.1 bfdd5909914586f5bc4851846228c27f.cloudfront.net (CloudFront) X-Amz-Cf-Id: NE6u9pVQNwjAKoRkHIFTbm0gEwDPKwgijeO1L_UxuqqBr4dsrhL6Mg== Length: 34095280 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.5.1.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.06M 28s 3072K ........ ........ ........ ........ ........ ........ 18% 2.89M 17s 6144K ........ ........ ........ ........ ........ ........ 27% 4.50M 12s 9216K ........ ........ ........ ........ ........ ........ 36% 6.31M 9s 12288K ........ ........ ........ ........ ........ ........ 46% 8.11M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 9.18M 5s 18432K ........ ........ ........ ........ ........ ........ 64% 12.3M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 12.9M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 17.3M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 17.7M 1s 30720K ........ ........ ........ ........ ........ 100% 16.8M=6.7s 2016-05-09 17:47:36 (4.86 MB/s) - 'Thunderbird Setup 38.5.1.exe' saved [34095280/34095280] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/en-US/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/en-US/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:47:37-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/en-US/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34953368 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:32:02 GMT ETag: "3773875ca19773cec38c2c39933ed8ae" Last-Modified: Mon, 09 May 2016 19:44:08 GMT x-amz-replication-status: COMPLETED x-amz-version-id: hZ942zgPvXzpqW80Goy8AB01QfkBfdpC Age: 937 X-Cache: Hit from cloudfront Via: 1.1 fc7da6323a08a2c16d48dd4939ce0898.cloudfront.net (CloudFront) X-Amz-Cf-Id: euzrbw_J0X_dU-8PlJYoxjcZlYOcARCPL4-IKFLCURxfmV8SmhDG5w== Length: 34953368 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 829K 37s 3072K ........ ........ ........ ........ ........ ........ 17% 2.00M 24s 6144K ........ ........ ........ ........ ........ ........ 26% 3.77M 16s 9216K ........ ........ ........ ........ ........ ........ 35% 5.38M 12s 12288K ........ ........ ........ ........ ........ ........ 44% 6.32M 9s 15360K ........ ........ ........ ........ ........ ........ 53% 7.64M 6s 18432K ........ ........ ........ ........ ........ ........ 62% 9.47M 5s 21504K ........ ........ ........ ........ ........ ........ 71% 12.2M 3s 24576K ........ ........ ........ ........ ........ ........ 80% 12.6M 2s 27648K ........ ........ ........ ........ ........ ........ 89% 13.2M 1s 30720K ........ ........ ........ ........ ........ ........ 98% 17.8M 0s 33792K ..... 100% 6.88M=8.7s 2016-05-09 17:47:45 (3.84 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34953368/34953368] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/en-US.dic PREPARE REMOVEFILE dictionaries/en-US.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/en-US.dic PREPARE ADD dictionaries/en-US.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/en-US.dic EXECUTE REMOVEFILE dictionaries/en-US.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/en-US.dic EXECUTE ADD dictionaries/en-US.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/en-US.dic FINISH REMOVEFILE dictionaries/en-US.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/en-US.dic FINISH ADD dictionaries/en-US.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/dictionaries/en-US.aff target/bin/dictionaries/en-US.aff 1,4d0 < # This Source Code Form is subject to the terms of the Mozilla Public < # License, v. 2.0. If a copy of the MPL was not distributed with this < # file, You can obtain one at http://mozilla.org/MPL/2.0/. < diff -r source/bin/dictionaries/en-US.dic target/bin/dictionaries/en-US.dic 1c1 < 57246 --- > 52283 34c34 < ACLU --- > ACLU/M 42c42 < AFAIK/S --- > AFAIK 44c44 < AFC --- > AFC/M 50d49 < AIDSes 54a54 > AMD/M 56c56 < ANZUS --- > ANZUS/M 58c58 < AP --- > AP/M 60c60,61 < API/MS --- > APC > API/SM 74c75,76 < AWACS --- > AVI > AWACS/M 78c80 < Aachen --- > Aachen/M 80,85c82,83 < Aaren/M < Aarika/M < Aaron < Ab/M < Abagael/M < Abagail/M --- > Aaron/M > Ab's 88,91c86 < Abbasid < Abbe/M < Abbey/M < Abbi/M --- > Abbasid/M 93d87 < Abbot/M 96d89 < Abbye/M 102c95 < Abelard --- > Abelard/M 106,107d98 < Abeu/M < Abey/M 110,113c101,102 < Abigael/M < Abigail < Abigale/M < Abilene --- > Abigail/M > Abilene/M 118d106 < Abrahan/M 121,123c109,111 < Abran/M < Absalom < Abuja --- > Abrams/M > Absalom/M > Abuja/M 134c122 < Achernar --- > Achernar/M 141c129 < Actaeon --- > Actaeon/M 143,144c131,132 < Acton < Acts --- > Acton/M > Acts/M 146,147c134 < Acura/MS < Ad/MN --- > Acura/M 153a141 > Adams/M 155c143 < Adana --- > Adana/M 157d144 < Adara/M 160c147 < Addams --- > Addams/M 163d149 < Addia/M 165c151 < Addison --- > Addison/M 175d160 < Adelice/M 177d161 < Adelind/M 179d162 < Adella/M 183c166 < Adenauer --- > Adenauer/M 188d170 < Adiana/M 191c173 < Adirondack/MS --- > Adirondack/SM 195c177 < Adler --- > Adler/M 198d179 < Ado/M 203d183 < Adolpho/M 206,210c186 < Adora/M < Adore/M < Adoree/M < Adorne/M < Adrea/M --- > Adore's 212,213c188,189 < Adria/MX < Adrian --- > Adria/M > Adrian/M 221d196 < Adriena/M 231,233d205 < Aeriel/M < Aeriela/M < Aeriell/M 238a211 > Afghani/M 247c220 < Afrocentrism --- > Afrocentrism/M 250d222 < Agace/M 258,260c230 < Aggi/M < Aggie < Aggy/M --- > Aggie/M 262,265c232,233 < Aglaia < Agna/M < Agnella/M < Agnes --- > Aglaia/M > Agnes/M 267,268d234 < Agnesse/M < Agneta/M 271d236 < Agnola/M 273,275c238,239 < Agra < Agretha/M < Agricola --- > Agra/M > Agricola/M 279d242 < Aguie/M 283,284d245 < Aguistin/M < Aguste/M 289c250 < Ahmadabad --- > Ahmadabad/M 295,296c256 < Aigneis/M < Aiken --- > Aiken/M 298,300d257 < Ailbert/M < Aile/M < Ailee/M 302d258 < Ailene/M 304,307d259 < Aili/SM < Ailina/M < Ailsun/M < Ailyn/M 310,312d261 < Aimil/M < Aindrea/M < Ainslee/M 315c264 < Ainu --- > Ainu/M 317c266,267 < Aisha --- > Aires/M > Aisha/M 320c270 < Akbar --- > Akbar/M 322c272 < Akihito --- > Akihito/M 324c274 < Akita --- > Akita/M 326c276 < Akkad --- > Akkad/M 328d277 < Aksel/M 336,337d284 < Alaine/M < Alair/M 343d289 < Alanah/M 345d290 < Alane/M 347d291 < Alano/M 350,351c294 < Alard/M < Alaric --- > Alaric/M 356,359c299 < Alasteir/M < Alaster/M < Alayne/M < Alba --- > Alba/M 363,364c303 < Albee < Alberik/M --- > Albee/M 366c305 < Albert --- > Albert/M 373c312 < Albigensian --- > Albigensian/M 375c314 < Albion --- > Albion/M 379,381c318,320 < Alcatraz < Alcestis < Alcibiades --- > Alcatraz/M > Alcestis/M > Alcibiades/M 385,388c324,327 < Alcott < Alcuin < Alcyone < Aldan --- > Alcott/M > Alcuin/M > Alcyone/M > Aldan/M 390c329 < Alden --- > Alden/M 397d335 < Aldric/M 402d339 < Aldwin/M 404,407d340 < Alecia/M < Aleda/M < Aleece/M < Aleen/M 410d342 < Alejandrina/M 412d343 < Alejoa/M 420d350 < Aleta/M 428c358 < Alexandra --- > Alexandra/M 433c363 < Alexandro/MS --- > Alexandros 438,439c368 < Alexine/M < Alexio/M --- > Alexis/M 441d369 < Alfi/M 448c376 < Alfred --- > Alfred/M 450,451c378 < Alfredo < Alfy/M --- > Alfredo/M 453c380 < Alger --- > Alger/M 462c389 < Alhambra --- > Alhambra/M 464c391 < Ali/S --- > Ali/SM 466,468d392 < Alibaba < Alic/M < Alica/M 470d393 < Alicea/M 474,475d396 < Alidia/M < Alie/M 477,478d397 < Alika/M < Alikee/M 483d401 < Alisander/M 489d406 < Alisun/M 491d407 < Aliza/M 495c411 < Allahabad --- > Allahabad/M 498,499d413 < Allayne/M < Alleen/M 501c415 < Allegheny/S --- > Allegheny/SM 503c417 < Allen --- > Allen/M 506,507c420 < Allentown < Alley/M --- > Allentown/M 512d424 < Allissa/M 514,515d425 < Allistir/M < Allix/M 517,520d426 < Allsun/M < Allx/M < Ally/SM < Allyce/M 526d431 < Almeda/M 528d432 < Almeta/M 531d434 < Almire/M 536,538d438 < Aloin/M < Aloise/M < Aloisia/M 542d441 < Aloysia/M 550c449 < Alpine --- > Alpine/M 558c457 < Alta --- > Alta/M 561,562c460,461 < Altair < Altamira --- > Altair/M > Altamira/M 569,571c468 < Aluin/M < Aluino/M < Alva --- > Alva/M 576,578d472 < Alvera/M < Alverta/M < Alvie/M 581,582d474 < Alvinia/M < Alvira/M 588d479 < Alyda/M 591,593d481 < Alysa/M < Alyse/M < Alysia/M 600d487 < Amabelle/M 603,605d489 < Amalea/M < Amalee/M < Amaleta/M 608,609d491 < Amalita/M < Amalle/M 611,613d492 < Amandi/M < Amandie/M < Amandy/M 615,616c494 < Amargo/M < Amarillo --- > Amarillo/M 620c498 < Amati --- > Amati/M 623,625c501 < Amber/MY < Amberly/M < Amble/M --- > Amber/M 628d503 < Ambrosi/M 631,632d505 < Ambur/M < Amby/M 636,638d508 < Amelina/M < Ameline/M < Amelita/M 641c511 < Amerasian --- > Amerasian/M 645,647c515,517 < Americanism/SM < Americanization/SM < Americanize/DSG --- > Americanism/MS > Americanization/MS > Americanize/GDS 650c520 < Amerindian/SM --- > Amerindian/MS 654c524 < Amherst --- > Amherst/M 658d527 < Amii/M 661,663d529 < Amitie/M < Amity/M < Ammamaria/M 667c533 < Amos --- > Amos/M 670c536 < Amritsar --- > Amritsar/M 672,673c538,539 < Amtrak < Amundsen --- > Amtrak/M > Amundsen/M 677d542 < Amye/M 679d543 < Anabal/M 682,683d545 < Anabella/M < Anabelle/M 685,686c547,548 < Anacreon < Anaheim --- > Anacreon/M > Anaheim/M 688d549 < Analiese/M 690,691d550 < Anallese/M < Anallise/M 693,696c552,553 < Anasazi < Anastasia < Anastasie/M < Anastassia/M --- > Anasazi/M > Anastasia/M 698d554 < Anatola/M 702,704c558 < Anatollo/M < Anaxagoras < Ancell/M --- > Anaxagoras/M 707,712c561,563 < Andalusian < Andaman < Andean < Andee/M < Andeee/M < Anderea/M --- > Andalusian/M > Andaman/M > Andean/M 715c566 < Anderson --- > Anderson/M 719d569 < Andonis/M 725d574 < Andreana/M 728a578 > Andres/M 730a581 > Andrews/M 733d583 < Andriana/M 735,737c585,586 < Andriette/M < Andris < Andromache --- > Android/M > Andromache/M 739c588 < Andropov --- > Andropov/M 743d591 < Anestassia/M 745,748c593 < Anett/M < Anetta/M < Anette/M < Angara --- > Angara/M 752c597,598 < Angele/M --- > Angele/SM > Angeles/M 755,756c601,602 < Angelica < Angelico --- > Angelica/M > Angelico/M 762d607 < Angelle/M 764c609 < Angelou --- > Angelou/M 767,768c612 < Angil/M < Angkor --- > Angkor/M 770c614 < Anglia --- > Anglia/M 775,778c619,621 < Anglicize/DSG < Anglo < Anglophil < Anglophile --- > Anglicize > Anglo/M > Anglophile/M 783c626 < Angstrom --- > Angstrom/M 786d628 < Angy/M 790,791d631 < Anica/M < Anissa/M 793,795d632 < Anitra/M < Anjanette/M < Anjela/M 798,799c635 < Anna < Annabal/M --- > Anna/M 801,802d636 < Annabela/M < Annabell/M 805,808d638 < Annadiana/M < Annadiane/M < Annalee/M < Annaliese/M 811,812d640 < Annamaria/M < Annamarie/M 815,816c643 < Anne < Annecorinne/M --- > Anne/M 820d646 < Annetta/M 823d648 < Annice/M 825,826d649 < Annissa/M < Annmaria/M 828,830c651 < Annnora/M < Annora/M < Annunciation/MS --- > Annunciation/SM 832c653 < Anouilh --- > Anouilh/M 835,836c656 < Anselm < Anselma/M --- > Anselm/M 842c662 < Antaeus --- > Antaeus/M 847d666 < Anthe/M 849,853c668,671 < Anthia/M < Anthiathia/M < Anthony < Antichrist/MS < Antietam --- > Anthony/M > Anthropocene > Antichrist/SM > Antietam/M 859c677 < Antioch --- > Antioch/M 864,865c682,683 < Antoinette < Anton/MS --- > Antoinette/M > Anton/M 868d685 < Antonetta/M 876c693 < Antoninus --- > Antoninus/M 878c695 < Antonius --- > Antonius/M 883c700 < Any/M --- > Any's 885c702 < Anzac --- > Anzac/M 888c705,706 < Apennines --- > Apatosaurus > Apennines/M 890c708 < Apia --- > Apia/M 893c711 < Apollinaire --- > Apollinaire/M 895c713 < Apollonian --- > Apollonian/M 897c715,716 < Appalachian/S --- > Appalachian/SM > Appalachians/M 900,903c719,721 < Appleseed < Appleton < Appolonia/M < Appomattox --- > Appleseed/M > Appleton/M > Appomattox/M 906,907c724 < Aprilette/M < Apuleius --- > Apuleius/M 908a726 > Aquarian 910c728 < Aquila --- > Aquila/M 917,919d734 < Arabel/M < Arabela/M < Arabele/M 921d735 < Arabelle/M 927c741 < Araby --- > Araby/M 929a744 > Aragon 932d746 < Araldo/M 936c750 < Arapahoe/SM --- > Arapahoes 938c752 < Araucanian --- > Araucanian/M 944,945d757 < Arch/R < Archaimbaud/M 947c759 < Archean --- > Archean/M 949,950d760 < Archibaldo/M < Archibold/M 952c762 < Archimedes --- > Archimedes/M 956c766 < Arda/MH --- > Arda/M 958,968c768 < Ardath/M < Ardebil < Ardeen/M < Ardelia/M < Ardelis/M < Ardella/M < Ardelle/M < Arden < Ardene/M < Ardenia/M < Ardine/M --- > Arden/M 970,978c770,771 < Ardisj/M < Ardith/M < Ardra/M < Ardyce/M < Ardys < Ardyth/M < Arel/M < Arequipa < Ares --- > Arequipa/M > Ares/M 981c774 < Argentine --- > Argentine/M 984c777 < Argo/S --- > Argo/SM 986a780 > Argos/M 993d786 < Aridatha/M 995,997c788 < Ariel < Ariela/M < Ariella/M --- > Ariel/M 1001,1002c792 < Ario/M < Ariosto --- > Ariosto/M 1004c794 < Aristides --- > Aristides/M 1013,1014c803,804 < Arjuna < Ark --- > Arjuna/M > Ark/M 1017,1022c807,808 < Arkhangelsk < Arkwright < Arlan/M < Arlana/M < Arlee/M < Arleen/M --- > Arkhangelsk/M > Arkwright/M 1024d809 < Arlena/M 1026d810 < Arleta/M 1029d812 < Arleyne/M 1031d813 < Arliene/M 1033,1034d814 < Arlina/M < Arlinda/M 1036,1037c816 < Arlington < Arluene/M --- > Arlington/M 1039,1040d817 < Arlyn/M < Arlyne/M 1057,1058c834 < Arney/M < Arnhem --- > Arnhem/M 1062c838 < Arnold --- > Arnold/M 1064d839 < Arnuad/M 1066d840 < Arny/M 1068,1069c842 < Arrhenius < Arri/M --- > Arrhenius/M 1072d844 < Artair/M 1078d849 < Arther/M 1080c851 < Arthurian --- > Arthurian/M 1085c856 < Arty/M --- > Arty's 1088d858 < Arvie/M 1090d859 < Arvy/M 1092c861 < Aryn/M --- > As/M 1098,1101c867,868 < Asgard < Ash/MRY < Ashanti < Ashbey/M --- > Asgard/M > Ashanti/M 1103,1105c870,871 < Ashcroft < Ashe/Y < Ashely/M --- > Ashcroft/M > Ashe/RM 1107,1108d872 < Ashia/M < Ashien/M 1110,1111c874 < Ashil/M < Ashkenazim --- > Ashkenazim/M 1113,1114d875 < Ashla/M < Ashlan/M 1117d877 < Ashlen/M 1119,1122d878 < Ashli/M < Ashlie/M < Ashlin/M < Ashly/M 1125c881 < Ashurbanipal --- > Ashurbanipal/M 1126a883 > Asiago 1129,1131c886,888 < Asimov < Asmara < Asoka --- > Asimov/M > Asmara/M > Asoka/M 1133a891 > Asperger/M 1135c893 < Asquith --- > Asquith/M 1140c898 < Assisi --- > Assisi/M 1143c901 < Astaire --- > Astaire/M 1146,1148c904,906 < Aston < Astor < Astoria --- > Aston/M > Astor/M > Astoria/M 1150c908 < Astrakhan --- > Astrakhan/M 1152,1154c910,911 < Astrix/M < AstroTurf < Asturias --- > AstroTurf/M > Asturias/M 1155a913 > Asunción/M 1159,1160c917,918 < Atahualpa < Atalanta --- > Atahualpa/M > Atalanta/M 1162a921 > Atatürk/M 1164d922 < Athabascan/MS 1166c924,925 < Athabaskan/MS --- > Athabaskan/SM > Athanasius 1171c930 < Athlon/MS --- > Athlon/M 1173c932 < Atkinson --- > Atkinson/M 1175c934 < Atlante/SM --- > Atlantes 1179,1180c938,939 < Atman < Atreus --- > Atman/M > Atreus/M 1186c945 < Attlee --- > Attlee/M 1188c947 < Attucks --- > Attucks/M 1192d950 < Auberon/M 1194,1199c952 < Auberta/M < Aubine/M < Aubree/M < Aubrette/M < Aubrey < Aubrie/M --- > Aubrey/M 1201c954 < Auckland --- > Auckland/M 1209,1213c962 < Audrie/M < Audry/M < Audrye/M < Audubon < Audy/M --- > Audubon/M 1215c964 < Augean --- > Augean/M 1217c966 < Augsburg --- > Augsburg/M 1220c969 < Augustan --- > Augustan/M 1223d971 < Augustina/M 1228,1231c976 < Augy/M < Aundrea/M < Aura/M < Aurangzeb --- > Aurangzeb/M 1234d978 < Aurelea/M 1238c982 < Aurelius --- > Aurelius/M 1240,1241d983 < Auria/M < Aurie/M 1243,1245d984 < Aurilia/M < Aurlie/M < Auroora/M 1248,1249c987 < Aurthur/M < Auschwitz --- > Auschwitz/M 1251c989 < Austen --- > Austen/M 1254,1255d991 < Austina/M < Austine/M 1259,1260c995,996 < Australian/MS < Australoid --- > Australian/SM > Australoid/M 1268,1269c1004,1005 < Avalon < Ave --- > Avalon/M > Ave/M 1271c1007 < Aventine --- > Aventine/M 1275,1276c1011,1012 < Avernus < Averroes --- > Avernus/M > Averroes/M 1278d1013 < Averyl/M 1280,1282c1015 < Avicenna < Avictor/M < Avie/M --- > Avicenna/M 1284c1017 < Avignon --- > Avignon/M 1287c1020 < Avis --- > Avis/M 1289,1291c1022,1023 < Avivah/M < Avogadro < Avon --- > Avogadro/M > Avon/M 1294,1296d1025 < Avrit/M < Avrom/M < Ax/M 1300c1029 < Axum --- > Axum/M 1302,1303c1031 < Ayers < Aylmar/M --- > Ayers/M 1305c1033 < Aymara --- > Aymara/M 1309c1037 < Ayurveda --- > Ayurveda/M 1313c1041 < Azazel --- > Azazel/M 1317c1045 < Azov --- > Azov/M 1321c1049 < B/MNT --- > B/MNRT 1325,1326c1053,1054 < BBB < BBC --- > BBB/M > BBC/M 1330a1059 > BFF 1333c1062 < BITNET/S --- > BITNET 1338c1067 < BP --- > BP/M 1343c1072 < BSD/S --- > BSD/SM 1350c1079 < Baathist --- > Baathist/M 1352,1353d1080 < Babar/M < Babara/M 1355,1356c1082 < Babbage < Babbette/M --- > Babbage/M 1358c1084 < Babbitt --- > Babbitt/M 1361,1362d1086 < Babita/M < Babur 1367c1091 < Bacardi --- > Bacardi/M 1374,1375c1098,1099 < Bactria < Baden --- > Bactria/M > Baden/M 1378c1102 < Baez --- > Baez/M 1380c1104 < Baggies --- > Baggies/M 1382,1384c1106,1108 < Baguio < Baha'i < Baha'ullah --- > Baguio/M > Baha'i/M > Baha'ullah/M 1389c1113 < Bahia --- > Bahia/M 1391,1392c1115 < Baikal < Bail/M --- > Baikal/M 1397c1120 < Baird --- > Baird/M 1399,1400c1122,1123 < Baker < Bakersfield --- > Baker/M > Bakersfield/M 1402,1406c1125,1129 < Bakunin < Balanchine < Balaton < Balboa < Bald/MR --- > Bakunin/M > Balanchine/M > Balaton/M > Balboa/M > Bald's 1408d1130 < Balduin/M 1410d1131 < Bale/M 1412c1133 < Balfour --- > Balfour/M 1415,1417c1136,1139 < Balkan/S < Balkhash < Ball --- > Balkan/MS > Balkans/M > Balkhash/M > Ball/M 1419c1141 < Balthazar --- > Balthazar/M 1422c1144 < Baluchistan --- > Baluchistan/M 1426,1428d1147 < Bambie/M < Bamby/M < Ban/M 1433c1152 < Bangalore --- > Bangalore/M 1436,1437c1155,1156 < Bangladeshi/MS < Bangor --- > Bangladeshi/SM > Bangor/M 1440,1442c1159,1160 < Banjul < Bank/SM < Banky/M --- > Banjul/M > Banks/M 1444,1445c1162,1163 < Bannister < Banting --- > Bannister/M > Banting/M 1450,1451c1168 < Bar/H < Barabbas --- > Barabbas/M 1453,1455d1169 < Barb/MR < Barbabas/M < Barbabra/M 1459d1172 < Barbaraanne/M 1463c1176 < Barbe/M --- > Barbe/MR 1465c1178 < Barber --- > Barber/M 1468,1469c1181 < Barbi/M < Barbie --- > Barbie/M 1473d1184 < Barby/M 1475,1476c1186,1187 < Barclay/M < Bard/M --- > Barclay/SM > Barclays/M 1484,1486c1195 < Barn/M < Barnabas < Barnabe/M --- > Barnabas/M 1488,1491c1197,1199 < Barnard < Barnaul < Barnebas/M < Barnes --- > Barnard/M > Barnaul/M > Barnes/M 1494,1500c1202,1204 < Barnie/M < Barnum < Barny/M < Baroda < Baron/M < Baroque < Barquisimeto --- > Barnum/M > Baroda/M > Barquisimeto/M 1502c1206 < Barranquilla --- > Barranquilla/M 1509,1511c1213,1215 < Barry < Barrymore < Bart --- > Barry/M > Barrymore/M > Bart/M 1513c1217 < Barth/S --- > Barth/MS 1516,1520c1220 < Bartholemy/M < Bartholomeo/M < Bartholomeus/M < Bartholomew < Bartie/M --- > Bartholomew/M 1522,1524c1222,1223 < Bartlett < Bartok < Bartolemo/M --- > Bartlett/M > Bartok/M 1526c1225 < Barton --- > Barton/M 1529c1228,1229 < Baruch --- > Bartók/M > Baruch/M 1531,1533c1231 < Baryram/M < Baryshnikov < Base/M --- > Baryshnikov/M 1538,1539c1236,1237 < Basie < Basil --- > Basie/M > Basil/M 1544c1242 < Basra --- > Basra/M 1551d1248 < Bat/M 1553,1556c1250,1252 < Bates < Batholomew/M < Bathsheba < Batista --- > Bates/M > Bathsheba/M > Batista/M 1558d1253 < Batsheva/M 1564c1259,1260 < Bauer --- > Baudrillard/M > Bauer/M 1566c1262 < Baum --- > Baum/M 1568c1264 < Bavarian --- > Bavarian/M 1570d1265 < Baxie/M 1572,1573d1266 < Baxy/M < Bay/MR 1577,1578c1270,1271 < Bayes < Bayesian --- > Bayes/M > Bayesian/M 1582c1275 < Bayreuth --- > Bayreuth/M 1587c1280 < Beadle --- > Beadle/M 1589d1281 < Bealle/M 1591d1282 < Bear/M 1594c1285 < Beardsley --- > Beardsley/M 1596d1286 < Bearnard/M 1601d1290 < Beatrisa/M 1603a1293 > Beatty/M 1605c1295 < Beaufort --- > Beaufort/M 1607,1608c1297,1298 < Beaumarchais < Beaumont --- > Beaumarchais/M > Beaumont/M 1610c1300 < Beauvoir --- > Beauvoir/M 1620d1309 < Becki/M 1623,1624c1312,1313 < Becquerel < Bede --- > Becquerel/M > Bede/M 1626d1314 < Bee/M 1628c1316 < Beecher --- > Beecher/M 1631c1319 < Beerbohm --- > Beerbohm/M 1634,1637c1322,1325 < Begin < Behan < Behring < Beiderbecke --- > Begin/M > Behan/M > Behring/M > Beiderbecke/M 1639d1326 < Beilul/M 1641d1327 < Beitris/M 1643d1328 < Bekki/M 1654,1655d1338 < Belia/M < Belicia/M 1657d1339 < Belita/M 1663d1344 < Bellanca/M 1665,1666c1346 < Belle/M < Belleek --- > Belleek/M 1668,1670c1348,1349 < Bellina/M < Bellini < Bellow --- > Bellini/M > Bellow/M 1672,1673c1351 < Belmopan < Belorussia/M --- > Belmopan/M 1676c1354 < Beltane --- > Beltane/M 1680d1357 < Belvia/M 1683c1360 < Benares --- > Benares/M 1686,1688d1362 < Bendick/M < Bendicty/M < Bendite/M 1695c1369 < Benedictine/SM --- > Benedictine/MS 1698d1371 < Benedikta/M 1700,1701c1373 < Benet < Benetta/M --- > Benet/M 1707d1378 < Beniamino/M 1712,1713c1383 < Benjamen/M < Benjamin --- > Benjamin/M 1718,1719c1388 < Bennett < Benni/M --- > Bennett/M 1723d1391 < Benoite/M 1725,1731c1393,1396 < Bent/M < Bentham < Bentlee/M < Bentley < Benton < Benyamin/M < Benz --- > Bentham/M > Bentley/M > Benton/M > Benz/M 1733c1398 < Beowulf --- > Beowulf/M 1737d1401 < Beret 1739c1403 < Berg/NR --- > Berg/MNR 1742,1748c1406,1411 < Bergerac < Berget/M < Bergman < Bergson < Beria < Bering < Berk/MY --- > Bergerac/M > Bergman/M > Bergson/M > Beria/M > Bering/M > Berk/M 1751d1413 < Berkie/M 1753d1414 < Berkly/M 1755c1416 < Berky/M --- > Berkshires/M 1759c1420 < Berlioz --- > Berlioz/M 1765,1768c1426 < Berna/M < Bernadene/M < Bernadette < Bernadina/M --- > Bernadette/M 1771,1772c1429 < Bernard < Bernardina/M --- > Bernard/M 1775d1431 < Bernarr/M 1778d1433 < Bernelle/M 1780,1782d1434 < Bernete/M < Bernetta/M < Bernette/M 1784c1436 < Bernhardt --- > Bernhardt/M 1788,1792c1440,1442 < Bernini < Bernita/M < Bernoulli < Bernstein < Berny/M --- > Bernini/M > Bernoulli/M > Bernstein/M 1795,1796c1445 < Berrie/M < Berry --- > Berry/M 1799d1447 < Berte/M 1806,1807d1453 < Bertina/M < Bertine/M 1811,1812d1456 < Bertrando/M < Berty/M 1814,1815c1458 < Beryle/M < Berzelius --- > Berzelius/M 1817,1818c1460,1461 < Bess < Bessel --- > Bess/M > Bessel/M 1820c1463 < Bessie --- > Bessie/M 1825,1832c1468,1472 < Bethanne/M < Bethany < Bethe < Bethena/M < Bethesda < Bethina/M < Bethlehem < Bethune --- > Bethany/M > Bethe/M > Bethesda/M > Bethlehem/M > Bethune/M 1837,1838d1476 < Betteann/M < Betteanne/M 1842d1479 < Bettine/M 1845c1482 < Beulah --- > Beulah/M 1847,1848c1484 < Beverie/M < Beverlee/M --- > Beveridge 1850d1485 < Beverlie/M 1853,1856c1488,1491 < Bevon/M < Bevvy/M < Beyer < Bhopal --- > Bevvy's > Beyer/M > Bharat/M > Bhopal/M 1861c1496 < Bialystok --- > Bialystok/M 1863d1497 < Bianka/M 1867d1500 < Bibbie/M 1869d1501 < Bibbye/M 1872c1504 < Biblical --- > Biblical/M 1874,1876c1506 < Biddie/M < Biddle < Biddy/M --- > Biddle/M 1878,1879c1508 < Bidget/M < Bierce --- > Bierce/M 1884c1513 < Bilbao --- > Bilbao/M 1888d1516 < Billi/M 1892d1519 < Billye/M 1896d1522 < Binni/M 1898d1523 < Binny/M 1900,1902c1525 < Birch/M < Bird < Birdie/M --- > Bird/M 1907c1530 < Birkenstock --- > Birkenstock/M 1911c1534 < Biscay --- > Biscay/M 1913c1536 < Bishkek --- > Bishkek/M 1918a1542 > BitTorrent/M 1920c1544 < Bizet --- > Bizet/M 1929c1553 < Blackfeet --- > Blackfeet/M 1933,1934c1557,1558 < Blackstone < Blackwell --- > Blackstone/M > Blackwell/M 1937,1939c1561 < Blaire/M < Blake < Blakelee/M --- > Blake/M 1942,1943c1564 < Blanch/M < Blancha/M --- > Blanch's 1950,1951c1571 < Blavatsky < Blayne/M --- > Blavatsky/M 1956,1962c1576,1577 < Blinni/M < Blinnie/M < Blinny/M < Bliss < Blisse/M < Blithe/M < Bloch --- > Blithe's > Bloch/M 1965d1579 < Bloglines/M 1967,1968d1580 < Blondell/M < Blondelle/M 1970d1581 < Blondy/M 1973c1584,1585 < Bloomfield --- > Bloomer/M > Bloomfield/M 1975c1587,1588 < Bloomsbury --- > Bloomsbury/M > Blu 1985,1987d1597 < Bobbe/M < Bobbee/M < Bobbette/M 1992,1997c1602 < Bobbye/M < Bobette/M < Bobina/M < Bobine/M < Bobinette/M < Boccaccio --- > Boccaccio/M 1999a1605 > Bodleian 2002,2004c1608,1610 < Boeotian < Boer/SM < Boethius --- > Boeotian/M > Boer/M > Boethius/M 2006d1611 < Bogey/M 2008c1613,1614 < Bohemia --- > Bogotá/M > Bohemia/M 2010,2011c1616 < Bohr < Boigie/M --- > Bohr/M 2021,2022c1626,1627 < Bolshevism < Bolshevist --- > Bolshevism/M > Bolshevist/M 2024,2025c1629,1630 < Bolton < Boltzmann --- > Bolton/M > Boltzmann/M 2027,2028c1632,1633 < Bonaparte < Bonaventure --- > Bonaparte/M > Bonaventure/M 2030,2031d1634 < Bondie/M < Bondon/M 2033d1635 < Bone/M 2035c1637 < Boniface --- > Boniface/M 2038d1639 < Bonnee/M 2041,2042d1641 < Bonni/M < Bonnibelle/M 2044d1642 < Bonny 2049c1647 < Boolean --- > Boolean/M 2051,2054d1648 < Boonie/M < Boony/M < Boot/M < Boote/MS 2056c1650 < Booth --- > Booth/M 2061d1654 < Bordie/M 2063d1655 < Bordy/M 2066,2069c1658,1661 < Borges < Borgia < Borglum < Boris --- > Borges/M > Borgia/M > Borglum/M > Boris/M 2072c1664 < Born --- > Born/M 2075c1667 < Borodin --- > Borodin/M 2077,2078c1669,1670 < Bosch < Bose --- > Bosch/M > Bose/M 2083,2084c1675,1677 < Bostonian < Boswell --- > Bostonian/M > Boswell/M > Botox 2086,2088c1679,1680 < Botticelli < Boudicca < Boulder --- > Botticelli/M > Boulder/M 2093c1685 < Bournemouth --- > Bournemouth/M 2098c1690 < Bowers --- > Bowers/M 2100c1692 < Bowie --- > Bowie/M 2102d1693 < Boy/MR 2104,2106c1695 < Boycey/M < Boycie/M < Boyd --- > Boyd/M 2108c1697,1698 < Boyle --- > Boyle/M > Boötes/M 2110,2112c1700,1701 < Brad/MY < Bradan/M < Bradbury --- > Brad/MNY > Bradbury/M 2114d1702 < Brade/M 2116,2117c1704,1705 < Bradford < Bradley --- > Bradford/M > Bradley/M 2119d1706 < Bradney/M 2122c1709 < Brady --- > Brady/M 2124c1711 < Brahe --- > Brahe/M 2128d1714 < Brahmanee 2132d1717 < Brahmin/MS 2139d1723 < Brana/M 2141,2145c1725,1726 < Brand/MNR < Brandais/M < Brande/M < Brandea/M < Brandeis --- > Brande/MR > Brandeis/M 2147c1728 < Brandenburg --- > Brandenburg/M 2150d1730 < Brandice/M 2152,2153c1732 < Brandise/M < Brando --- > Brando/M 2155,2156c1734 < Brandt < Brandtr/M --- > Brandt/M 2158d1735 < Brandyn/M 2162c1739 < Braque --- > Braque/M 2164c1741 < Bratislava --- > Bratislava/M 2172,2173d1748 < Breanne/M < Brear/M 2175c1750 < Brecht --- > Brecht/M 2178,2179c1753 < Breena/M < Bremen --- > Bremen/M 2181d1754 < Brena/M 2185,2186d1757 < Brendin/M < Brendis/M 2188d1758 < Brenn/MNR 2191d1760 < Brennen/M 2194a1764 > Brest/M 2198,2199d1767 < Breughel < Brew/MR 2201,2203c1769,1770 < Brewster < Brezhnev < Bria/M --- > Brewster/M > Brezhnev/M 2208d1774 < Briano/M 2212d1777 < Bride/M 2215c1780 < Bridges --- > Bridges/M 2217c1782 < Bridgetown --- > Bridgetown/M 2220c1785 < Bridgman --- > Bridgman/M 2222c1787 < Brie/RSM --- > Brie/SM 2224,2227c1789 < Brier/M < Brietta/M < Brig < Brigadoon --- > Brigadoon/M 2228a1791 > Briggs/M 2230c1793 < Bright --- > Bright/M 2237,2239c1800 < Brillo < Brina/M < Briney/M --- > Brillo/M 2241,2243c1802 < Brinn/M < Brinna/M < Briny/M --- > Briny's 2250,2251c1809,1810 < Britannia < Britannic --- > Britannia/M > Britannic/M 2257d1815 < Britni/M 2262,2263d1819 < Brittaney/M < Brittani/M 2265,2267c1821 < Britte/M < Britteny/M < Brittne/M --- > Britten/M 2269,2272c1823 < Brittni/M < Brnaba/M < Brnaby/M < Brno --- > Brno/M 2275c1826 < Brobdingnagian --- > Brobdingnagian/M 2277,2278d1827 < Brockie/M < Brocky/M 2280,2282d1828 < Broddie/M < Broddy/M < Broderic/M 2286d1831 < Brok/M 2289,2290d1833 < Bronnie/M < Bronny/M 2292c1835,1836 < Bronte --- > Bronte/M > Brontosaurus 2294,2295c1838 < Brook/MS < Brooke --- > Brooke/MS 2296a1840 > Brooks/M 2299,2300c1843,1844 < Brown/G < Browne --- > Brown/MG > Browne/M 2303,2305c1847,1850 < Brownshirt < Brownsville < Brubeck --- > Browning/M > Brownshirt/M > Brownsville/M > Brubeck/M 2307,2308c1852 < Brucie/M < Bruckner --- > Bruckner/M 2310,2311d1853 < Brueghel < Bruis/M 2315,2316c1857 < Brunelleschi < Brunhilda/M --- > Brunelleschi/M 2318c1859 < Bruno --- > Bruno/M 2323,2326c1864,1865 < Bryan < Bryana/M < Bryant < Bryanty/M --- > Bryan/M > Bryant/M 2329d1867 < Bryna/M 2331,2332d1868 < Brynna/M < Brynne/M 2337c1873 < Buber --- > Buber/M 2340c1876 < Buchenwald --- > Buchenwald/M 2342,2344c1878,1879 < Buck < Buckie/M < Buckingham --- > Buck/M > Buckingham/M 2354d1888 < Buddie/M 2363d1896 < Buiron/M 2365,2370c1898,1903 < Bukhara < Bukharin < Bulawayo < Bulfinch < Bulganin < Bulgar --- > Bukhara/M > Bukharin/M > Bulawayo/M > Bulfinch/M > Bulganin/M > Bulgar/M 2378c1911 < Bunche --- > Bunche/M 2380,2381c1913,1914 < Bundestag < Bunin --- > Bundestag/M > Bunin/M 2383,2386c1916 < Bunni/M < Bunnie/M < Bunny/M < Bunsen --- > Bunsen/M 2389c1919 < Burbank --- > Burbank/M 2392d1921 < Burg/MR 2394c1923 < Burgess --- > Burgess/M 2396c1925 < Burgundian --- > Burgundian/M 2399c1928 < Burke --- > Burke/M 2400a1930 > Burks/M 2402d1931 < Burlie/M 2408,2411c1937,1940 < Burnett < Burns < Burnside < Burr --- > Burnett/M > Burns/M > Burnside/M > Burr/M 2413,2414c1942,1943 < Burroughs < Bursa --- > Burroughs/M > Bursa/M 2416d1944 < Burtie/M 2418d1945 < Burty/M 2423c1950 < Bushido --- > Bushido/M 2425,2426c1952 < Butch/M < Butler --- > Butler/M 2428c1954,1955 < Buxtehude --- > Buxtehude/M > Buñuel/M 2430d1956 < Byelorussia/M 2433,2436c1959 < Byran/M < Byrann/M < Byrd < Byrle/M --- > Byrd/M 2438,2439c1961,1962 < Byron < Byronic --- > Byron/M > Byronic/M 2442c1965 < C/SMDY --- > C/SMD 2452c1975 < CBS --- > CBS/M 2458c1981 < CEO/MS --- > CEO/SM 2460c1983 < CFC/MS --- > CFC/SM 2461a1985 > CGI 2464c1988 < CNN --- > CNN/M 2479a2004 > CVS/M 2483,2485c2008,2009 < Cabinet < Cabot < Cabral --- > Cabot/M > Cabral/M 2487,2489c2011 < Cabrini < Cacilia/M < Cacilie/M --- > Cabrini/M 2491d2012 < Caddric/M 2493c2014 < Cadillac --- > Cadillac/M 2496c2017 < Caerphilly --- > Caerphilly/M 2498,2499c2019 < Caesarean < Cage --- > Cage/M 2502,2503c2022 < Cahra/M < Caiaphas --- > Caiaphas/M 2506d2024 < Cairistiona/M 2509,2510d2026 < Caitrin/M < Cajan 2512,2513c2028,2029 < Cal/Y < Calais --- > Cal/MY > Calais/M 2515c2031 < Calder --- > Calder/M 2517c2033 < Caldwell --- > Caldwell/M 2520c2036 < Caledonia --- > Caledonia/M 2522,2525c2038,2040 < Calhoun < Cali < Caliban < Calida/M --- > Calhoun/M > Cali/M > Caliban/M 2528,2531c2043,2045 < Californian/MS < Caligula < Calla/MS < Callaghan --- > Californian/SM > Caligula/M > Callaghan/M 2533,2534c2047,2048 < Callao < Callean/M --- > Callao/M > Callas/M 2537d2050 < Callida/M 2543d2055 < Calv/M 2545c2057 < Calvert --- > Calvert/M 2550,2551d2061 < Calypso < Cam 2553d2062 < Camala/M 2561,2563c2070 < Camella/M < Camellia/M < Camelopardalis --- > Camelopardalis/M 2568,2569c2075 < Cameroonian/SM < Camey/M --- > Cameroonian/MS 2572d2077 < Camile/M 2576d2080 < Cammi/M 2581,2583c2085,2087 < Campbell < Campinas < Campos --- > Campbell/M > Campinas/M > Campos/M 2585,2586c2089,2090 < Camus < Can --- > Camus/M > Can/M 2593c2097 < Canaletto --- > Canaletto/M 2595c2099 < Canaveral --- > Canaveral/M 2600c2104 < Candi/MS --- > Candi/M 2604d2107 < Candie/M 2610c2113 < Canopus --- > Canopus/M 2612c2115 < Canterbury --- > Canterbury/M 2618,2619c2121,2122 < Canute < Capablanca --- > Canute/M > Capablanca/M 2622,2623c2125,2126 < Capet < Capetian --- > Capet/M > Capetian/M 2628,2630c2131,2133 < Capitoline < Capone < Capote --- > Capitoline/M > Capone/M > Capote/M 2633d2135 < Caprice/M 2636c2138 < Capuchin --- > Capuchin/M 2638d2139 < Car/MNY 2640c2141 < Caracalla --- > Caracalla/M 2642,2643c2143 < Caralie/M < Caravaggio --- > Caravaggio/M 2646,2647c2146 < Carborundum < Carce/M --- > Carborundum/M 2652d2150 < Care/M 2655,2659c2153 < Carena/M < Caresa/M < Caressa/M < Caresse/M < Carey --- > Carey/M 2664,2666d2157 < Carie/M < Caril/M < Carilyn/M 2668c2159 < Carina --- > Carina/M 2670d2160 < Cariotta/M 2673d2162 < Caritta/M 2676,2677d2164 < Carlee/M < Carleen/M 2684,2685d2170 < Carlina/M < Carline/M 2688d2172 < Carlita/M 2689a2174 > Carlos/M 2692c2177 < Carlsbad --- > Carlsbad/M 2694c2179 < Carlton --- > Carlton/M 2696,2701c2181 < Carlye/M < Carlyle < Carlyn/M < Carlynn/M < Carlynne/M < Carma/M --- > Carlyle/M 2704,2705d2183 < Carmelia/M < Carmelina/M 2708d2185 < Carmelle/M 2711d2187 < Carmencita/M 2715,2717c2191 < Carmita/M < Carmon/M < Carnap --- > Carnap/M 2721,2722c2195 < Carnot < Carny/M --- > Carnot/M 2727d2199 < Carolann/M 2729,2733c2201,2203 < Carolee/M < Carolin/M < Carolina < Caroline < Carolingian --- > Carolina/M > Caroline/M > Carolingian/M 2735d2204 < Caroljean/M 2739d2207 < Carolynn/M 2741,2742c2209,2211 < Carpathian/MS < Carpenter --- > Carpathian/SM > Carpathians/M > Carpenter/M 2745,2747c2214 < Carree/M < Carri/MR < Carrie/M --- > Carrie/RM 2750d2216 < Carrissa/M 2753,2755c2219 < Carry/M < Carson < Cart/MR --- > Carson/M 2757c2221 < Cartesian --- > Cartesian/M 2760,2764c2224,2228 < Cartier < Cartwright < Caruso < Carver < Cary --- > Cartier/M > Cartwright/M > Caruso/M > Carver/M > Cary/M 2768c2232 < Casals --- > Casals/M 2775c2239 < Cash --- > Cash/M 2777d2240 < Casie/M 2779c2242 < Caspar --- > Caspar/M 2781c2244 < Caspian --- > Caspian/M 2784,2788c2247 < Cassandre/M < Cassandry/M < Cassatt < Cassaundra/M < Cassey/M --- > Cassatt/M 2789a2249 > Cassidy/M 2794d2253 < Cassondra/M 2797a2257 > Castilian 2799c2259 < Castlereagh --- > Castlereagh/M 2802c2262 < Castro --- > Castro/M 2811d2270 < Catha/M 2815,2818c2274 < Cathe/MR < Cathee/M < Catherin/M < Catherina/M --- > Cather/M 2820d2275 < Cathi/M 2823d2277 < Cathlene/M 2825,2827c2279 < Catholicism/SM < Cathrin/M < Cathrine/M --- > Catholicism/MS 2830d2281 < Cathyleen/M 2833,2836c2284 < Catiline < Catina/M < Catlaina/M < Catlee/M --- > Catiline/M 2838c2286 < Cato --- > Cato/M 2843,2845c2291,2292 < Catt < Catullus < Caty/M --- > Catt/M > Catullus/M 2849,2852c2296,2299 < Cauchy < Cavendish < Cavour < Caxton --- > Cauchy/M > Cavendish/M > Cavour/M > Caxton/M 2854,2855c2301 < Cayenne < Cayla/M --- > Cayenne/M 2860d2305 < Cazzie/M 2862d2306 < Cchaddie/M 2870c2314 < Cecil --- > Cecil/M 2872,2873c2316 < Ceciley/M < Cecilia --- > Cecilia/M 2875,2876d2317 < Cecilius/M < Cecilla/M 2883,2884d2323 < Celene/M < Celesta/M 2889,2890d2327 < Celestyn/M < Celestyna/M 2894d2330 < Celinda/M 2896,2898d2331 < Celinka/M < Celisse/M < Celka/M 2900,2902c2333,2334 < Cellini < Cello/M < Celsius --- > Cellini/M > Celsius/M 2910c2342 < Cepheid --- > Cepheid/M 2913c2345 < Cerenkov --- > Cerenkov/M 2919,2921c2351 < Cesarean < Cesarian < Cesaro/M --- > Cesarean/M 2923,2924c2353 < Cesya/M < Cetus --- > Cetus/M 2927c2356 < Cezanne --- > Cezanne/M 2929c2358 < Ch'in --- > Ch'in/M 2933,2935d2361 < Chadd/M < Chaddie/M < Chaddy/M 2937,2938c2363,2364 < Chadwick < Chagall --- > Chadwick/M > Chagall/M 2943c2369 < Chaldean --- > Chaldean/M 2946,2949c2372,2375 < Chamberlain < Chambers < Champlain < Champollion --- > Chamberlain/M > Chambers/M > Champlain/M > Champollion/M 2955,2957c2381,2382 < Chandal/M < Chandigarh < Chandler --- > Chandigarh/M > Chandler/M 2960c2385 < Chandragupta --- > Chandragupta/M 2963c2388 < Chanel --- > Chanel/M 2966,2967c2391,2392 < Changchun < Changsha --- > Changchun/M > Changsha/M 2970,2975c2395,2398 < Chantalle/M < Chantilly < Chanukah/M < Chanukahs < Chaplin < Chapman --- > Chantilly/M > Chaplin/M > Chaplinesque > Chapman/M 2981,2983d2403 < Charil/M < Charin/M < Chariot/M 2985d2404 < Charissa/M 2987d2405 < Charita/M 2989,2991d2406 < Charla/M < Charlean/M < Charleen/M 2993d2407 < Charlena/M 2997,2999c2411,2412 < Charley < Charlie < Charline/M --- > Charley/M > Charlie/M 3005d2417 < Charmain/M 3007d2418 < Charmane/M 3010,3012d2420 < Charmine/M < Charmion/M < Charo/M 3016c2424 < Chartres --- > Chartres/M 3018d2425 < Charyl/M 3020c2427 < Chase --- > Chase/M 3022d2428 < Chastity/M 3029c2435 < Chatterton --- > Chatterton/M 3031d2436 < Chaunce/M 3033c2438 < Chautauqua --- > Chautauqua/M 3037c2442 < Chechen --- > Chechen/M 3039c2444 < Cheddar --- > Cheddar/M 3043c2448 < Cheever --- > Cheever/M 3046,3050c2451 < Chelsae/M < Chelsea < Chelsey/M < Chelsie/M < Chelsy/M --- > Chelsea/M 3054c2455 < Chengdu --- > Chengdu/M 3056c2457 < Cheops --- > Cheops/M 3058d2458 < Cherey/M 3060,3062d2459 < Cherianne/M < Cherice/M < Cherida/M 3064,3066d2460 < Cherilyn/M < Cherilynn/M < Cherin/M 3068,3069c2462 < Cherish/M < Cherlyn/M --- > Cherish's 3074,3075d2466 < Cherri/M < Cherrita/M 3077,3078d2467 < Chery/M < Cherye/M 3080,3082c2469,2470 < Chesapeake < Cheshire < Cheslie/M --- > Chesapeake/M > Cheshire/M 3084,3086c2472,2473 < Chesterfield < Chesterton < Cheston/M --- > Chesterfield/M > Chesterton/M 3089c2476 < Chevalier --- > Chevalier/M 3097,3100c2484,2485 < Chiarra/M < Chiba < Chibcha < Chic/M --- > Chiba/M > Chibcha/M 3102,3105c2487,2489 < Chicagoan < Chicana < Chicano < Chick/M --- > Chicagoan/M > Chicana/M > Chicano/M 3107,3108d2490 < Chickie/M < Chicky/M 3120c2502 < Chinatown --- > Chinatown/M 3123d2504 < Chip/M 3127d2507 < Chiquia/M 3129c2509 < Chirico --- > Chirico/M 3132c2512 < Chittagong --- > Chittagong/M 3134,3136c2514 < Chlo/M < Chloe < Chloette/M --- > Chloe/M 3140,3141c2518,2519 < Chomsky < Chongqing --- > Chomsky/M > Chongqing/M 3144c2522 < Chou --- > Chou/M 3147d2524 < Chrisse/M 3150c2527 < Christ/MNS --- > Christ/MS 3153,3158c2530 < Christabella/M < Christal/M < Christalle/M < Christan/M < Christchurch < Christean/M --- > Christchurch/M 3160,3161c2532,2533 < Christen/M < Christendom/SM --- > Christen's > Christendom/MS 3168,3172c2540,2542 < Christianize/DSG < Christiano/M < Christie < Christin/M < Christina --- > Christianize/DG > Christie/M > Christina/M 3178,3179d2547 < Christoffer/M < Christoforo/M 3184d2551 < Christophorus/M 3186,3188d2552 < Christye/M < Christyna/M < Chrisy/M 3190,3191d2553 < Chrotoem/M < Chrysa/M 3193c2555 < Chrysostom --- > Chrysostom/M 3195,3197d2556 < Chryste/M < Chrystel/M < Chucho/M 3199,3200c2558,2559 < Chukchi < Chumash --- > Chukchi/M > Chumash/M 3202,3203c2561 < Chungking/M < Church --- > Church/M 3207c2565 < Ci --- > Ci/M 3210,3211c2568 < Cicily/M < Cid --- > Cid/M 3213d2569 < Cilka/M 3215,3218c2571 < Cincinnati < Cinda/M < Cindee/M < Cindelyn/M --- > Cincinnati/M 3221,3222d2573 < Cindie/M < Cindra/M 3225c2576 < Cinerama --- > Cinerama/M 3227d2577 < Cinnamon/M 3231d2580 < Cirilo/M 3234d2582 < Cissiee/M 3239d2586 < Citysearch/M 3241d2587 < Claiborn/M 3250,3252c2596 < Clarabelle/M < Clarance/M < Clare --- > Clare/M 3254,3259c2598 < Clarendon < Claresta/M < Clareta/M < Claretta/M < Clarette/M < Clarey/M --- > Clarendon/M 3263d2601 < Clarie/M 3265d2602 < Clarine/M 3269c2606 < Clark --- > Clark/M 3274,3276d2610 < Claudell/M < Claudelle/M < Claudetta/M 3280,3282d2613 < Claudianus/M < Claudie/M < Claudina/M 3287,3290c2618,2620 < Clausewitz < Clausius < Clay < Clayborn/M --- > Clausewitz/M > Clausius/M > Clay/M 3292,3293d2621 < Claybourne/M < Clayson/M 3297d2624 < Cleavland/M 3300c2627,2628 < Clemenceau --- > Clemenceau/M > Clemens/M 3303d2630 < Clementia/M 3306c2633 < Clementius/M --- > Clements/M 3308,3309c2635 < Clemmy/M < Clemons --- > Clemons/M 3315,3316d2640 < Clerissa/M < Cletis 3320,3321d2643 < Clevey/M < Clevie/M 3324c2646 < Clifford --- > Clifford/M 3326d2647 < Clim/M 3330a2652 > Clive/M 3332d2653 < Cloe/M 3334d2654 < Cloris/M 3335a2656 > Closure/M 3340,3341c2661 < Cly/M < Clyde --- > Clyde/M 3343,3345c2663 < Clytemnestra < Clyve/M < Clywd/M --- > Clytemnestra/M 3348,3349c2666 < Co/SM < Cob/M --- > Co/M 3351,3356c2668,2671 < Cobb < Cobbie/M < Cobby/M < Cochabamba < Cochin < Cochise --- > Cobb/M > Cochabamba/M > Cochin/M > Cochise/M 3359c2674 < Cocteau --- > Cocteau/M 3361,3364c2676 < Codee/M < Codi/M < Codie/M < Cody --- > Cody/M 3367,3371c2679,2682 < Cohan < Cohen < Coimbatore < Cointon/M < Cointreau --- > Cohan/M > Cohen/M > Coimbatore/M > Cointreau/M 3373,3375c2684 < Col < Colan/M < Colas --- > Col/M 3377c2686 < Colby --- > Colby/M 3379c2688 < Cole --- > Cole/M 3382d2690 < Colene/M 3386c2694 < Colette --- > Colette/M 3392d2699 < Collete/M 3394d2700 < Collie/M 3398c2704 < Colly/RM --- > Collins/M 3406d2711 < Colonial 3410c2715 < Colosseum --- > Colosseum/M 3412c2717 < Coltrane --- > Coltrane/M 3414c2719 < Columbine --- > Columbine/M 3416d2720 < Colver/M 3422,3423c2726,2727 < Comintern < Commons --- > Comintern/M > Commons/M 3428c2732 < Como --- > Como/M 3433c2737 < Compton --- > Compton/M 3436,3437c2740 < Comte < Con --- > Comte/M 3441c2744,2745 < Concepcion --- > Concepcion/M > Concepción/M 3443d2746 < Concettina/M 3446c2749 < Concorde --- > Concorde/M 3448,3449c2751,2752 < Condillac < Condorcet --- > Condillac/M > Condorcet/M 3456c2759 < Cong --- > Cong/M 3463c2766 < Congreve --- > Congreve/M 3465c2768 < Conn/R --- > Conn/MR 3467c2770 < Connemara --- > Connemara/M 3470,3471d2772 < Conney/M < Conni/M 3475c2776 < Connotea/M --- > Connors/M 3477,3478c2778 < Conrad < Conrade/M --- > Conrad/M 3482d2781 < Consalve/M 3484,3486c2783,2784 < Consolata/M < Constable < Constance --- > Constable/M > Constance/M 3488d2785 < Constancy/M 3492,3493c2789 < Constantina/M < Constantine --- > Constantine/M 3500c2796 < Continental --- > Continental/M 3502,3503c2798,2799 < Conway < Cook --- > Conway/M > Cook/M 3505d2800 < Cookie/M 3508c2803 < Coop/MR --- > Cooper/M 3514c2809 < Copernican --- > Copernican/M 3516,3517c2811,2812 < Copland < Copley --- > Copland/M > Copley/M 3523,3526d2817 < Corabel/M < Corabella/M < Corabelle/M < Coral/M 3528,3529d2818 < Coraline/M < Coralyn/M 3535d2823 < Cord/M 3537d2824 < Cordelie/M 3539,3542c2826 < Cordey/M < Cordi/M < Cordie/M < Cordilleras --- > Cordilleras/M 3544d2827 < Cordula/M 3546,3549d2828 < Coreen/M < Corella/M < Corenda/M < Corene/M 3551d2829 < Corette/M 3553c2831 < Corfu --- > Corfu/M 3555,3556d2832 < Corie/M < Corilla/M 3562,3563c2838,2840 < Corinthian/SM < Coriolanus --- > Corinthian/MS > Corinthians/M > Coriolanus/M 3565,3566d2841 < Coriss/M < Corissa/M 3570d2844 < Corly/M 3572,3574c2846 < Cornall/M < Corneille < Cornela/M --- > Corneille/M 3578d2849 < Cornelle/M 3580d2850 < Cornie/M 3584,3587c2854,2857 < Cornwallis < Corny/M < Coronado < Corot --- > Cornwallis/M > Corny's > Coronado/M > Corot/M 3589,3593c2859 < Correggio < Correna/M < Correy/M < Corri/M < Corrianne/M --- > Correggio/M 3595d2860 < Corrina/M 3597d2861 < Corrinne/M 3600c2864 < Corsican --- > Corsican/M 3603,3604d2866 < Cortez/M < Cortie/M 3606,3607d2867 < Cortney/M < Corty/M 3613d2872 < Cosetta/M 3618c2877 < Cossack --- > Cossack/M 3625c2884 < Cotonou --- > Cotonou/M 3629c2888 < Coulomb --- > Coulomb/M 3632,3634c2891,2892 < Couperin < Courbet < Court/M --- > Couperin/M > Courbet/M 3636d2893 < Courtnay/M 3638c2895 < Cousteau --- > Cousteau/M 3640,3643c2897,2901 < Coward < Cowley < Cowper < Cox --- > Coward/M > Cowell/M > Cowley/M > Cowper/M > Cox/M 3645d2902 < Cozmo/M 3649c2906 < Crabbe --- > Crabbe/M 3651,3653c2908,2909 < Craggie/M < Craggy/M < Craig --- > Craggy's > Craig/M 3655,3657c2911,2913 < Cranach < Crane < Cranmer --- > Cranach/M > Crane/M > Cranmer/M 3667,3668d2922 < Creigh/M < Creight/M 3671c2925,2926 < Creon --- > Creon/M > Cressida/M 3676,3677c2931,2932 < Crichton < Crick --- > Crichton/M > Crick/M 3679,3681c2934,2935 < Crimean < Crin/M < Criollo --- > Crimean/M > Criollo/M 3684d2937 < Crissie/M 3687d2939 < Cristabel/M 3689,3690d2940 < Cristen/M < Cristi/M 3693,3694d2942 < Cristie/M < Cristin/M 3696,3697d2943 < Cristine/M < Cristionna/M 3699d2944 < Cristy/M 3703,3705c2948,2950 < Croce < Crockett < Croesus --- > Croce/M > Crockett/M > Croesus/M 3707c2952 < Cromwellian --- > Cromwellian/M 3711,3713c2956,2958 < Crookes < Crosby < Cross --- > Crookes/M > Crosby/M > Cross/M 3717c2962 < Cruikshank --- > Cruikshank/M 3719c2964 < Crusades --- > Crusades's 3724d2968 < Crysta/M 3726d2969 < Crystie/M 3729,3730c2972 < Ctesiphon < Cthrine/M --- > Ctesiphon/M 3736,3739c2978,2979 < Cuisinart < Culbertson < Cull/MN < Cullan/M --- > Cuisinart/M > Culbertson/M 3742,3743d2981 < Cullie/M < Cullin/M 3748c2986 < Cummings --- > Cummings/M 3754,3755c2992,2993 < Curie < Curitiba --- > Curie/M > Curitiba/M 3759c2997 < Currie/MR --- > Currie/M 3761c2999 < Curry --- > Curry/RM 3765c3003 < Custer --- > Custer/M 3767c3005 < Cuzco --- > Cuzco/M 3769d3006 < Cyb/M 3772d3008 < Cybill/M 3778,3779d3013 < Cymbre/M < Cynde/M 3781,3784d3014 < Cyndia/M < Cyndie/M < Cyndy/M < Cynthea/M 3786d3015 < Cynthie/M 3792,3793c3021 < Cyril < Cyrill/M --- > Cyril/M 3796,3797c3024 < Cyrillus/M < Cyrus --- > Cyrus/M 3801c3028 < Czechoslovakian/MS --- > Czechoslovakian/SM 3803c3030 < Czerny --- > Czerny/M 3805c3032 < D/MN --- > D/M 3816c3043 < DEC/SDG --- > DEC/SD 3817a3045 > DHS 3819a3048 > DMCA 3835,3837c3064,3065 < DVD < DVDs < DVR/S --- > DVD/S > DVR/SM 3839d3066 < Dacca/M 3843d3069 < Dacie/M 3845d3070 < Dacy/M 3849,3853c3074,3075 < Dael/M < Daffi/M < Daffie/M < Daffy/M < Dag/M --- > Daffy's > Dag's 3856,3858c3078,3079 < Daguerre < Dagwood < Dahlia/M --- > Daguerre/M > Dagwood/M 3860d3080 < Daile/M 3862,3865c3082 < Daisey/M < Daisi/M < Daisie/M < Daisy --- > Daisy/M 3868c3085 < Dakotan --- > Dakotan/M 3870,3871c3087,3088 < Dale < Dalenna/M --- > Dalai > Dale/M 3873c3090 < Dali/S --- > Dali/M 3879,3880d3095 < Dalli/MS < Dallon/M 3883,3885d3097 < Daloris/M < Dalston/M < Dalt/M 3890c3102 < Dame/N --- > Dame/MN 3893c3105 < Damien --- > Damien/M 3895,3896c3107 < Damita/M < Damocles --- > Damocles/M 3898c3109 < Dan --- > Dan/M 3900c3111,3112 < Danae --- > Danae/M > Danaë/M 3902,3904c3114 < Danelaw < Danell/M < Danella/M --- > Danelaw/M 3911,3912d3120 < Danice/M < Danie/M 3918,3919c3126 < Danika/M < Danila/M --- > Daniels/M 3921,3922d3127 < Danit/M < Danita/M 3924d3128 < Dannel/M 3928d3131 < Dannye/M 3931c3134 < Danton --- > Danton/M 3933,3938c3136 < Danubian < Danya/M < Danyelle/M < Danyette/M < Daphene/M < Daphna/M --- > Danubian/M 3942,3944d3139 < Darb/M < Darbee/M < Darbie/M 3946d3140 < Darcee/M 3951d3144 < Darda/M 3953,3956c3146 < Dare < Dareen/M < Darell/M < Darelle/M --- > Dare/M 3958c3148 < Darfur --- > Darfur/M 3961,3962d3150 < Darice/M < Darill/M 3965,3966c3153,3154 < Darius < Darjeeling --- > Darius/M > Darjeeling/M 3968d3155 < Darleen/M 3970d3156 < Darline/M 3972,3974d3157 < Darlleen/M < Darn/M < Darnall/M 3979d3161 < Darrelle/M 3981d3162 < Darrick/M 3983c3164 < Darrow --- > Darrow/M 3985d3165 < Darsey/M 3988,3989c3168,3169 < Dartmoor < Dartmouth --- > Dartmoor/M > Dartmouth/M 3992c3172 < Darwinian --- > Darwinian/M 3997,3998d3176 < Daryle/M < Daryn/M 4000,4004c3178 < Dasi/M < Dasie/M < Dasya/M < Datamation/S < Datha/M --- > Datamation 4006,4009c3180,3182 < Daumier < Daune/M < Dav/MN < Davao --- > Daumier/M > Dav/M > Davao/M 4011,4014c3184 < Daveen/M < Daven/M < Davenport < Daveta/M --- > Davenport/M 4018d3187 < Davidde/M 4021c3190,3191 < Davie/MS --- > Davie/M > Davies/M 4024,4027c3194,3197 < Davine/M < Davis < Davy/S < Dawes --- > Davis/M > Davy/SM > Dawes/M > Dawkins 4029,4031c3199,3200 < Dawna/M < Dawson < Day --- > Dawson/M > Day/M 4033d3201 < Dayle/M 4035c3203 < Dayton --- > Dayton/M 4037d3204 < Ddene/M 4043c3210 < Dean --- > Dean/M 4054,4055d3220 < Debee/M < Debera/M 4058d3222 < Debor/M 4060c3224 < Deborah --- > Deborah/M 4063,4064c3227,3228 < Debs < Debussy --- > Debs/M > Debussy/M 4066d3229 < Decalog 4068c3231 < Decatur --- > Decatur/M 4070c3233 < Deccan --- > Deccan/M 4072c3235 < Deck/MR --- > Decker/M 4075,4079c3238 < Dedie/M < Dedra/M < Dee < Deeann/M < Deeanne/M --- > Dee/M 4082d3240 < Deerdre/M 4084,4087c3242,3243 < Deeyn/M < Defoe < Degas < Dehlia/M --- > Defoe/M > Degas/M 4089,4091c3245,3246 < Deimos < Deina/M < Deirdre --- > Deimos/M > Deirdre/M 4094c3249 < Del/Y --- > Del/M 4096c3251 < Delacroix --- > Delacroix/M 4098d3252 < Delainey/M 4102c3256 < Delawarean/MS --- > Delawarean/SM 4104,4105d3257 < Delcina/M < Delcine/M 4107c3259 < Delgado --- > Delgado/M 4110c3262 < Delibes --- > Delibes/M 4112d3263 < Delila/M 4115,4116c3266 < Delinda/M < Delius --- > Delius/M 4119d3268 < Delly/M 4123,4124c3272 < Delmonico < Delmor/M --- > Delmonico/M 4127d3274 < Delora/M 4132c3279 < Delphic --- > Delphic/M 4134d3280 < Delphinia/M 4136c3282 < Delta --- > Delta/M 4141,4143c3287 < Demetra/M < Demetre/M < Demetri/SM --- > Demetri/M 4149c3293 < Democritus --- > Democritus/M 4152c3296 < Dempsey --- > Dempsey/M 4156c3300 < Deneb --- > Deneb/M 4160c3304 < Denice/M --- > Denis/M 4163,4164d3306 < Denna/M < Dennet/M 4166d3307 < Denni/MS 4167a3309 > Dennis/M 4172c3314 < Deny/M --- > Deny's 4174d3315 < Denyse/M 4176d3316 < Deonne/M 4179c3319 < Derby --- > Derby/M 4184d3323 < Derrek/M 4187,4189d3325 < Derrik/M < Derril/M < Derron/M 4191,4192d3326 < Derward/M < Derwin/M 4197d3330 < Desirae/M 4199d3331 < Desiri/M 4201d3332 < Desmund/M 4204c3335 < Deutschmark/MS --- > Deutschmark/SM 4212,4215d3342 < Devina/M < Devinne/M < Devland/M < Devlen/M 4218d3344 < Devondra/M 4220,4225d3345 < Devonna/M < Devonne/M < Devora/M < Devy/M < Dew/M < Dewain/M 4229d3348 < Dewie/M 4233c3352 < Dexter --- > Dexter/M 4237c3356 < Di/S --- > Di/SM 4239,4241c3358,3359 < DiMaggio < Diaghilev < Diahann/M --- > DiMaggio/M > Diaghilev/M 4245d3362 < Diandra/M 4247d3363 < Dianemarie/M 4251,4252d3366 < Diannne/M < Diarmid/M 4255,4256c3369,3370 < Diaz < Dick/X --- > Dick/XM > Dickens/M 4260c3374 < Dickinson --- > Dickinson/M 4264c3378 < Diderot --- > Diderot/M 4268c3382 < Diefenbaker --- > Diefenbaker/M 4271d3384 < Diena/M 4273d3385 < Diesel/M 4275,4276c3387,3388 < Dietrich < Digg/MS --- > Dietrich/M > Digg/SM 4278,4279c3390 < Dijon < Dilan/M --- > Dijon/M 4281d3391 < Dill/M 4283d3392 < Dillie/M 4286d3394 < Dilly/M 4288d3395 < Dimitry/M 4290,4291c3397 < Dinah < Dinnie/M --- > Dinah/M 4294,4295c3400,3401 < Diocletian < Diogenes --- > Diocletian/M > Diogenes/M 4298d3403 < Dionis/M 4301c3406 < Dionysian --- > Dionysian/M 4304c3409 < Dior --- > Dior/M 4307,4308c3412,3413 < Dirac < Dirichlet --- > Dirac/M > Dirichlet/M 4311,4313c3416,3418 < Disney < Disneyland < Disraeli --- > Disney/M > Disneyland/M > Disraeli/M 4318c3423 < Dix --- > Dix/M 4320c3425 < Dixiecrat --- > Dixiecrat/M 4323d3427 < Djakarta/M 4327,4330c3431,3433 < Dnepropetrovsk < Dnieper < Dniester < Dniren/M --- > Dnepropetrovsk/M > Dnieper/M > Dniester/M 4333c3436 < Dobro --- > Dobro/M 4336d3438 < Dode/M 4343,4344c3445 < Dody/M < Doe --- > Doe/M 4346c3447 < Dolby --- > Dolby/M 4349d3449 < Doll/M 4351d3450 < Dolli/M 4355d3453 < Dolorita/SM 4360d3457 < Domeniga/M 4362d3458 < Dominga/M 4366c3462 < Dominic --- > Dominic/M 4373,4374c3469 < Domitian < Don't --- > Domitian/M 4376c3471 < Dona --- > Dona/M 4381,4387c3476 < Donall/M < Donalt/M < Donatello < Donaugh/M < Donavon/M < Donella/M < Donelle/M --- > Donatello/M 4389,4392d3477 < Donetta/M < Donia/M < Donica/M < Donielle/M 4395,4396c3480 < Donna < Donnamarie/M --- > Donna/M 4400d3483 < Donni/M 4405c3488 < Doolittle --- > Doolittle/M 4407c3490 < Doppler --- > Doppler/M 4409,4414c3492 < Doralia/M < Doralin/M < Doralyn/M < Doralynn/M < Doralynne/M < Dorcas --- > Dorcas/M 4417,4423d3494 < Dorelia/M < Dorella/M < Dorelle/M < Dorena/M < Dorene/M < Doretta/M < Dorette/M 4429d3499 < Dorice/M 4431d3500 < Dorine/M 4433d3501 < Dorisa/M 4435d3502 < Dorita/M 4438,4439d3504 < Dorolice/M < Dorolisa/M 4441d3505 < Doroteya/M 4445,4446d3508 < Dorree/M < Dorri/SM 4448,4449c3510,3511 < Dorry/M < Dorset --- > Dorris > Dorset/M 4451d3512 < Dorthea/M 4453,4454c3514 < Dortmund < Dory/M --- > Dortmund/M 4457d3516 < Dostoyevsky/M 4459d3517 < Doti/M 4461d3518 < Dotti/M 4463c3520 < Dotty/M --- > Dotty's 4469,4472c3526,3528 < Douglas < Douglass < Dougy/M < Douro --- > Douglas/M > Douglass/M > Douro/M 4475,4476c3531,3532 < Dow < Downs --- > Dow/M > Downs/M 4479c3535 < Doyle --- > Doyle/M 4482c3538 < Draconian --- > Draconian/M 4484c3540 < Drake --- > Drake/M 4486c3542 < Drambuie --- > Drambuie/M 4491,4493c3547 < Dreddy/M < Dredi/M < Dreiser --- > Dreiser/M 4498a3553 > Dropbox/M 4500,4504d3554 < Druci/M < Drucie/M < Drucill/M < Drucy/M < Drud/M 4506,4509c3556 < Drugi/M < Druid < Drusi/M < Drusie/M --- > Druid/M 4511,4512c3558 < Drusy/M < Dryden --- > Dryden/M 4515c3561 < DuPont --- > DuPont/M 4517c3563 < Dubai --- > Dubai/M 4522,4524c3568,3569 < Duchamp < Dud/M < Dudley --- > Duchamp/M > Dudley/M 4529c3574 < Duisburg --- > Duisburg/M 4531,4533d3575 < Dukey/M < Dukie/M < Duky/M 4535,4538d3576 < Dulcea/M < Dulci/M < Dulcia/M < Dulciana/M 4540d3577 < Dulcine/M 4542,4546c3579,3581 < Dulcy/M < Dulles < Dulsea/M < Duluth < Dumas --- > Dulles/M > Duluth/M > Dumas/M 4549,4554c3584,3587 < Dumpster < Dun/M < Dunant < Dunbar < Dunc/M < Duncan --- > Dumpster/M > Dunant/M > Dunbar/M > Duncan/M 4556c3589 < Dunedin --- > Dunedin/M 4566c3599 < Durant --- > Durant/M 4568,4569c3601,3602 < Durban < Durer --- > Durban/M > Durer/M 4572,4573c3605,3606 < Durkheim < Duroc --- > Durkheim/M > Duroc/M 4584c3617 < Dutchmen --- > Dutchmen/M 4586,4589c3619,3622 < Duvalier < Dvina < Dvorak < Dwain/M --- > Duvalier/M > Dvina/M > Dvorak/M > Dvorák/M 4594,4598d3626 < Dyana/M < Dyane/M < Dyann/M < Dyanna/M < Dyanne/M 4602d3629 < Dynah/M 4605c3632,3634 < Dzungaria --- > Dzungaria/M > Dürer/M > Düsseldorf/M 4630c3659,3660 < ESPN --- > ESPN/M > ESR 4636,4637c3666 < Eachelle/M < Eada/M --- > EULA/S 4639,4641c3668 < Eadith/M < Eadmund/M < Eakins --- > Eakins/M 4643d3669 < Ealasaid/M 4645c3671 < Earhart --- > Earhart/M 4649d3674 < Earlie/M 4651c3676 < Early/M --- > Early's 4656,4658d3680 < Earth/M < Eartha/M < Earvin/M 4662c3684 < Eastman --- > Eastman/M 4671d3692 < Ebeneser/M 4674,4677c3695,3696 < Ebert < Eberto/M < Ebola < Ebonee/M --- > Ebert/M > Ebola/M 4681c3700 < Ecclesiastes --- > Ecclesiastes/M 4688c3707 < Ecuadorian/MS --- > Ecuadorian/SM 4692d3710 < Edan/M 4694,4695c3712 < Edda < Eddi/M --- > Edda/M 4700,4701d3716 < Edee/M < Edeline/M 4703c3718 < Edgar --- > Edgar/M 4708d3722 < Edik/M 4712d3725 < Edita/M 4715,4716d3727 < Edithe/M < Ediva/M 4718d3728 < Edmon/M 4724c3734 < Edsel --- > Edsel/M 4727d3736 < Eduino/M 4732c3741,3742 < Edwin --- > Edwards/M > Edwin/M 4735d3744 < Edyth/M 4751,4753c3760,3762 < Ehrlich < Eichmann < Eiffel --- > Ehrlich/M > Eichmann/M > Eiffel/M 4755,4756d3763 < Eilis/M < Eimile/M 4759d3765 < Eirena/M 4761c3767 < Eisenstein --- > Eisenstein/M 4766,4767c3772,3773 < Elaine < Elam --- > Elaine/M > Elam/M 4769d3774 < Elane/M 4773c3778 < Elba --- > Elba/M 4775,4779c3780,3781 < Elbert < Elberta/M < Elbertina/M < Elbertine/M < Elbrus --- > Elbert/M > Elbrus/M 4783d3784 < Eldorado 4791d3791 < Eleen/M 4795d3794 < Elenore/M 4798d3796 < Elfie/M 4801,4804c3799,3800 < Elfrieda/M < Elga/M < Elgar < Eli --- > Elgar/M > Eli/M 4806,4808c3802 < Elianora/M < Elianore/M < Elicia/M --- > Elias/M 4813,4814c3807 < Elinore/M < Eliot --- > Eliot/M 4817c3810 < Elisabeth --- > Elisabeth/M 4821c3814 < Elisha --- > Elisha/M 4823d3815 < Elita/M 4825d3816 < Elizabet/M 4827,4828c3818 < Elizabethan/MS < Elka/M --- > Elizabethan/SM 4831,4832d3820 < Elladine/M < Ellary/M 4835,4836d3822 < Ellene/M < Ellerey/M 4839d3824 < Ellette/M 4842c3827 < Ellington --- > Ellington/M 4845c3830 < Ellis --- > Ellis/M 4847,4848d3831 < Ellissa/M < Ellswerth/M 4853d3835 < Ellynn/M 4859,4860d3840 < Elna/MH < Elnar/M 4863,4864c3843 < Elnore/M < Elohim --- > Elohim/M 4867,4868d3845 < Elonore/M < Elora/M 4873,4874c3850 < Else/M < Elset/M --- > Else's 4877d3852 < Elsi/M 4879c3854 < Elsinore --- > Elsinore/M 4882,4883d3856 < Elsworth/M < Elsy/M 4888d3860 < Elvera/M 4891d3862 < Elvina/M 4894d3864 < Elvyn/M 4897d3866 < Elwira/M 4900d3868 < Elyn/M 4903,4905c3871 < Elysha/M < Elysia < Elysian --- > Elysian/M 4908c3874 < Em/M --- > Elysée/M 4911,4912d3876 < Emalee/M < Emalia/M 4915,4918d3878 < Emelda/M < Emelen/M < Emelia/M < Emelina/M 4920,4923c3880 < Emelita/M < Emelyne/M < Emera/M < Emerson --- > Emerson/M 4927,4928d3883 < Emilee/M < Emili/M 4931d3885 < Emiline/M 4938,4939d3891 < Emlynn/M < Emlynne/M 4941d3892 < Emmalee/M 4943,4946c3894 < Emmalyn/M < Emmalynn/M < Emmalynne/M < Emmanuel --- > Emmanuel/M 4949d3896 < Emmery/M 4952,4953d3898 < Emmey/M < Emmi/M 4955,4959c3900 < Emmit/M < Emmott/M < Emmy < Emmye/M < Emogene/M --- > Emmy/M 4961,4962d3901 < Emyle/M < Emylee/M 4965,4967c3904,3905 < Endymion < Eng < Engadget/M --- > Endymion/M > Eng/M 4971d3908 < Englebert/M 4974c3911 < Englishmen --- > Englishmen/M 4976,4978c3913,3914 < Englishwomen < Engracia/M < Enid --- > Englishwomen/M > Enid/M 4983,4984c3919,3920 < Enoch < Enos --- > Enoch/M > Enos/M 4986d3921 < Enrichetta/M 4988d3922 < Enrika/M 4990d3923 < Enriqueta/M 4994,4995d3926 < Eolanda/M < Eolande/M 4997,5000c3928,3930 < Ephesian/S < Ephesus < Ephraim < Ephrayim/M --- > Ephesian/MS > Ephesus/M > Ephraim/M 5002,5003c3932,3933 < Epictetus < Epicurean --- > Epictetus/M > Epicurean/M 5006d3935 < Epinions/M 5011c3940 < Epsom --- > Epsom/M 5013,5014c3942,3943 < Epstein < Equuleus --- > Epstein/M > Equuleus/M 5023,5025c3952 < Erector < Erek/M < Erena/M --- > Erector/M 5027,5028c3954 < Erhard < Erhart/M --- > Erhard/M 5032d3957 < Ericha/M 5036,5039c3961,3964 < Ericson < Ericsson < Eridanus < Erie --- > Ericson/M > Ericsson/M > Eridanus/M > Erie/M 5042,5046c3967 < Eriksson < Erin < Erina/M < Erinn/M < Erinna/M --- > Erin/M 5053,5059d3973 < Ermanno/M < Ermengarde/M < Ermentrude/M < Ermin/M < Ermina/M < Erminia/M < Erminie/M 5061d3974 < Ernaline/M 5063d3975 < Ernesta/M 5066d3977 < Ernestus/M 5068,5069c3979 < Ernst < Erny/M --- > Ernst/M 5071d3980 < Errick/M 5076d3984 < Ertha/M 5080d3987 < Eryn/M 5087,5088d3993 < Esma/M < Esmaria/M 5096d4000 < Esra/M 5099,5101c4003,4005 < Essene < Essequibo < Essex --- > Essene/M > Essequibo/M > Essex/M 5103d4006 < Essy/M 5107d4009 < Estel/M 5109,5110d4010 < Estele/M < Estell/M 5115c4015,4016 < Estes --- > Esterházy/M > Estes/M 5122,5123d4022 < Estrellita/M < Etan/M 5125d4023 < Ethe/M 5128,5131d4025 < Ethelda/M < Ethelin/M < Ethelind/M < Etheline/M 5134c4028 < Ethernet --- > Ethernet/M 5137d4030 < Ethyl/M 5140,5142c4033,4035 < Eton < Etruria < Etruscan --- > Eton/M > Etruria/M > Etruscan/M 5144d4036 < Etti/M 5152c4044 < Euclidean --- > Euclidean/M 5154d4045 < Euell/M 5156c4047 < Eugene --- > Eugene/M 5161,5162d4051 < Eugine/M < Eukaryota/MS 5165c4054 < Euler --- > Euler/M 5173,5174c4062,4063 < Euripides < Eurodollar/MS --- > Euripides/M > Eurodollar/SM 5183c4072 < Ev/MN --- > Ev/M 5185d4073 < Evaleen/M 5187d4074 < Evangelia/M 5189d4075 < Evangelin/M 5192,5195c4078,4080 < Evangelist < Evania/M < Evanne/M < Evansville --- > Evangelist/M > Evans/M > Evansville/M 5197,5198d4081 < Eveleen/M < Evelin/M 5201,5202c4084 < Evelyn < Even/M --- > Evelyn/M 5206d4087 < Evered/M 5217,5219d4097 < Evonne/M < Evvie/M < Evvy/M 5221d4098 < Evyn/M 5223d4099 < Eward/M 5232c4108 < Exercycle --- > Exercycle/M 5238,5240c4114 < Eyde/M < Eydie/M < Eyre --- > Eyre/M 5242,5243c4116 < Ezechiel/M < Ezekiel --- > Ezekiel/M 5245,5248c4118 < Eziechiele/M < Ezmeralda/M < Ezra < Ezri/M --- > Ezra/M 5266a4137 > FSF/M 5270a4142 > FWIW 5273d4144 < Fabe/RM 5275c4146,4147 < Faberge --- > Faberge/M > Fabergé/M 5277d4148 < Fabiano/M 5283c4154 < Fafnir --- > Fafnir/M 5286,5289c4157,4158 < Fahrenheit < Faina/M < Fair/M < Fairbanks --- > Fahrenheit/M > Fairbanks/M 5294,5297c4163,4165 < Faisalabad < Faith < Falasha < Falito/M --- > Faisalabad/M > Faith/M > Falasha/M 5298a4167 > Falklands/M 5304,5309d4172 < Fan < Fanchette/M < Fanchon/M < Fancie/M < Fancy/M < Fanechka/M 5311d4173 < Fanni/M 5314,5315c4176 < Fanya/M < Far/MY --- > Far's 5319d4179 < Farand/M 5321,5324d4180 < Farica/M < Farlay/M < Farlee/M < Farleigh/M 5326,5328c4182 < Farlie/M < Farly/M < Farmer --- > Farmer/M 5330,5331c4184 < Farra/M < Farragut --- > Farragut/M 5340d4192 < Fascism 5345c4197 < Fates --- > Fates/M 5347,5348c4199,4200 < Fatima < Fatimid --- > Fatima/M > Fatimid/M 5350,5352c4202 < Faulknerian < Faun/M < Faunie/M --- > Faulknerian/M 5355c4205 < Faustian --- > Faustian/M 5357d4206 < Faustine/M 5360,5365c4209 < Favorited < Fawkes < Fawn/M < Fawne/M < Fawnia/M < Fax/M --- > Fawkes/M 5367d4210 < Faydra/M 5370d4212 < Fayina/M 5372,5373d4213 < Fayth/M < Faythe/M 5378c4218 < FedEx --- > FedEx/M 5381d4220 < Federica/M 5383,5384c4222 < Fedora/M < Fee/M --- > Feds/M 5386,5387d4223 < Felic/M < Felicdad/M 5390d4225 < Felicio/M 5392,5393d4226 < Felicle/M < Felike/M 5395d4227 < Felipa/M 5397,5398d4228 < Felisha/M < Felita/M 5400,5403c4230 < Feliza/M < Felizio/M < Fellini < Fenelia/M --- > Fellini/M 5405c4232 < Fenian --- > Fenian/M 5408d4234 < Feodora/M 5412,5414c4238 < Ferdinand < Ferdinanda/M < Ferdinande/M --- > Ferdinand/M 5416c4240 < Fergus --- > Fergus/M 5420c4244 < Fermi --- > Fermi/M 5432,5433c4256,4257 < Ferris < Fey/M --- > Ferris/M > Fey's 5435,5436c4259 < Fez < Fiann/M --- > Fez/M 5439c4262 < Fiberglas --- > Fiberglas/M 5441c4264 < Fichte --- > Fichte/M 5443d4265 < Fidela/M 5446d4267 < Fidelity/M 5448,5449c4269,4270 < Fidole/M < Field/GS --- > Fielding/M > Fields/M 5451d4271 < Fifine/M 5456,5460d4275 < Filbert/M < Filberte/M < Filberto/M < Filia/M < Filide/M 5463d4277 < Filippa/M 5468,5470c4282 < Filmore/M < Filofax < Fin --- > Filofax/M 5485,5487d4296 < Fionna/M < Fionnula/M < Fiorenze/M 5490,5491c4299,4300 < Fischer < Fisher --- > Fischer/M > Fisher/M 5495c4304 < Fitzgerald --- > Fitzgerald/M 5504c4313 < Flaubert --- > Flaubert/M 5506a4316 > Fleming/M 5509a4320 > Fletcher/M 5511d4321 < Fleurette/M 5515,5516c4325,4326 < Flint < Flintstones --- > Flint/M > Flintstones/M 5520,5521c4330 < Flora < Florance/M --- > Flora/M 5523d4331 < Florella/M 5526,5529c4334,4335 < Florentia/M < Florentine < Florenza/M < Flores --- > Florentine/M > Flores/M 5531,5532d4336 < Flori/SM < Floria/M 5535c4339 < Floridan --- > Floridan/M 5537,5538d4340 < Florie/M < Florina/M 5541c4343 < Florri/M --- > Floris 5543d4344 < Florry/M 5546d4346 < Flossi/M 5548,5551c4348,4350 < Flossy/M < Flowers < Floyd < Flss/M --- > Flossy's > Flowers/M > Floyd/M 5554,5560c4353,4359 < Foch < Fokker < Foley < Folgers < Folsom < Fomalhaut < Fonda --- > Foch/M > Fokker/M > Foley/M > Folgers/M > Folsom/M > Fomalhaut/M > Fonda/M 5562,5564d4360 < Fonsie/M < Fonz/M < Fonzie/M 5566c4362 < Forbes --- > Forbes/M 5569a4366 > Forester/M 5574c4371 < Forrest/R --- > Forrest/MR 5576,5577c4373,4374 < Forster < Fortaleza --- > Forster/M > Fortaleza/M 5580c4377 < Foster --- > Foster/M 5582,5583c4379,4380 < Foucault < Fourier --- > Foucault/M > Fourier/M 5586c4383 < Fowler --- > Fowler/M 5589c4386 < Fragonard --- > Fragonard/M 5592,5593c4389,4390 < Francene/M < Francesca --- > Frances/M > Francesca/M 5595d4391 < Franchot/M 5597c4393 < Francis --- > Francis/M 5599c4395 < Franciscan/SM --- > Franciscan/MS 5601,5606c4397,4398 < Franciska/M < Franciskus/M < Franck < Francklin/M < Francklyn/M < Franco --- > Franck/M > Franco/M 5609,5610c4401,4402 < Francyne/M < Franglais --- > Francophile > Franglais/M 5613c4405 < Frankenstein --- > Frankenstein/M 5615a4408 > Frankfurter/M 5618c4411 < Franklin --- > Franklin/M 5619a4413 > Franks/M 5621d4414 < Franni/M 5625d4417 < Frants/M 5628,5629c4420 < Frasco/M < Fraser --- > Fraser/M 5631d4421 < Frasquito/M 5634,5635c4424 < Frayda/M < Fraze/RM --- > Frazer 5639d4427 < Freddi/M 5642,5643d4429 < Fredek/M < Fredelia/M 5647,5648c4433 < Frederick < Fredericka/M --- > Frederick/M 5651d4435 < Frederigo/M 5654,5656d4437 < Fredi/M < Fredia/M < Fredra/M 5660c4441 < Free/M --- > Free's 5662d4442 < Freedman/M 5667d4446 < Freemon/M 5670c4449 < Fremont --- > Fremont/M 5673c4452 < Frenchmen --- > Frenchmen/M 5675,5676c4454,4455 < Frenchwomen < Freon --- > Frenchwomen/M > Freon/M 5680c4459 < Freudian --- > Freudian/M 5686c4465 < Friedan --- > Friedan/M 5688c4467 < Friedman --- > Friedman/M 5690d4468 < Friedrick/M 5693,5695c4471,4473 < Frigidaire < Frisbee < Frisco --- > Frigidaire/M > Frisbee/M > Frisco/M 5699,5702c4477,4481 < Frobisher < Froissart < Fromm < Fronde --- > Frobisher/M > Frodo/M > Froissart/M > Fromm/M > Fronde/M 5706c4485 < Frostbelt --- > Frostbelt/M 5708c4487 < Fry --- > Fry/M 5711,5712c4490,4491 < Fuentes < Fugger --- > Fuentes/M > Fugger/M 5717a4497,4498 > Fukushima/M > Fukuyama/M 5719,5721c4500,4502 < Fulbright < Fuller < Fullerton --- > Fulbright/M > Fuller/M > Fullerton/M 5724,5725c4505,4506 < Funafuti < Fundy --- > Funafuti/M > Fundy/M 5728c4509,4510 < Fushun --- > Furtwängler/M > Fushun/M 5730c4512 < Fuzzbuster --- > Fuzzbuster/M 5735a4518 > GCC/M 5741a4525 > GIF 5743c4527 < GM --- > GM/M 5746a4531 > GNU/M 5750a4536,4537 > GPS > GPU 5757,5759d4543 < Gabbey/M < Gabbi/M < Gabbie/M 5762d4545 < Gabey/M 5764c4547 < Gabie/M --- > Gable/M 5768c4551 < Gabriel --- > Gabriel/M 5771d4553 < Gabriell/M 5774,5776d4555 < Gabriellia/M < Gabriello/M < Gabrila/M 5779d4557 < Gaddafi 5784d4561 < Gaelan/M 5786,5787c4563,4565 < Gagarin < Gage --- > Gagarin/M > Gage/M > Gaia/M 5789d4566 < Gaile/M 5793d4569 < Gal/N 5796,5798c4572,4574 < Galatea < Galatia < Galatians --- > Galatea/M > Galatia/M > Galatians/M 5800c4576 < Galbraith --- > Galbraith/M 5802,5803c4578,4579 < Galen < Galibi --- > Galen/M > Galibi/M 5805c4581 < Galilee --- > Galilee/M 5810d4585 < Gallard/M 5812c4587 < Gallic --- > Gallic/M 5816c4591 < Gallup --- > Gallup/M 5818c4593 < Galsworthy --- > Galsworthy/M 5820,5821c4595 < Galvani < Galven/M --- > Galvani/M 5826c4600 < Gamay --- > Gamay/M 5834a4609 > Gandalf/M 5836c4611 < Gandhian --- > Gandhian/M 5840d4614 < Gannie/M 5842d4615 < Ganny/M 5846,5848c4619 < Gar/MH < Garald/M < Garbo --- > Garbo/M 5851,5852d4621 < Gardener/M < Gardie/M 5855d4623 < Gardy/M 5857d4624 < Garek/M 5862c4629 < Gargantua --- > Gargantua/M 5864,5870c4631,4632 < Garik/M < Garland < Garmin/M < Garner < Garnet/M < Garnette/M < Garold/M --- > Garland/M > Garner/M 5872,5874d4633 < Garrek/M < Garret/M < Garreth/M 5876,5880c4635,4636 < Garrick < Garrik/M < Garrison < Garrot/M < Garrott/M --- > Garrick/M > Garrison/M 5883,5884c4639 < Garv/M < Garvey --- > Garvey/M 5886,5887d4640 < Garvy/M < Garwin/M 5889c4642 < Gary --- > Gary/M 5896c4649 < Gasser --- > Gasser/M 5898c4651,4652 < Gates --- > Gastroenterology > Gates/M 5906d4659 < Gaultiero/M 5908c4661 < Gaussian --- > Gaussian/M 5911c4664 < Gautier --- > Gautier/M 5916,5917d4668 < Gavra/M < Gavrielle/M 5919,5920c4670 < Gawen/M < Gay --- > Gay/M 5922,5929c4672 < Gayel/M < Gayelord/M < Gayla/M < Gayle/RM < Gayleen/M < Gaylene/M < Gayler/M < Gaylor/M --- > Gayle/M 5932,5933c4675,4676 < Gaza < Gaziantep --- > Gaza/M > Gaziantep/M 5938,5939d4680 < Gearalt/M < Gearard/M 5941d4681 < Geer/M 5944c4684 < Gehrig --- > Gehrig/M 5948d4687 < Gelya/M 5949a4689 > Gen/M 5962,5964d4701 < Genni/M < Gennie/M < Gennifer/M 5968,5970c4705 < Genovera/M < Gentile/MS < Gentoo --- > Gentoo/M 5972d4706 < Genvieve/M 5976,5977d4709 < Geoffry/M < Georas/M 5981,5984d4712 < Georgeanna/M < Georgeanne/M < Georgena/M < Georgeta/M 5986,5987c4714 < Georgetta/M < Georgette --- > Georgette/M 5993d4719 < Georgianne/M 5996d4721 < Georgine/M 5997a4723 > Ger/M 5999d4724 < Geralda/M 6005c4730 < Gerek/M --- > Gere/M 6007d4731 < Gerhardine/M 6010,6013d4733 < Gerianna/M < Gerianne/M < Gerick/M < Gerik/M 6015d4734 < Gerladina/M 6019d4737 < Germana/M 6022d4739 < Germayne/M 6024c4741 < Geronimo --- > Geronimo/M 6027,6028d4743 < Gerrie/M < Gerrilee/M 6030c4745 < Gershwin --- > Gershwin/M 6032,6033d4746 < Gerta/M < Gerti/M 6036d4748 < Gertruda/M 6042,6043c4754,4755 < Gethsemane < Getty --- > Gethsemane/M > Getty/M 6045c4757,4758 < Gewurztraminer --- > Gewurztraminer/M > Gewürztraminer/M 6048,6049c4761 < Ghanian/MS < Ghats --- > Ghats/M 6051,6056c4763,4765 < Ghent < Gherardo/M < Ghibelline < Giacinta/M < Giacobo/M < Giacometti --- > Ghent/M > Ghibelline/M > Giacometti/M 6058d4766 < Giacopo/M 6060,6061d4767 < Giana/M < Gianina/M 6066d4771 < Giavani/M 6069,6072c4774,4775 < Gibbie/M < Gibbon < Gibbs < Gibby/M --- > Gibbon/M > Gibbs/M 6074,6077c4777,4780 < Gibson < Gide < Gideon < Gielgud --- > Gibson/M > Gide/M > Gideon/M > Gielgud/M 6079c4782 < Giff/MR --- > Giff/M 6081,6082d4783 < Giffer/M < Giffie/M 6084d4784 < Giffy/M 6089d4788 < Gilberta/M 6091,6092d4789 < Gilbertina/M < Gilbertine 6094d4790 < Gilburt/M 6097,6101c4793,4796 < Gilead < Gilemette/M < Giles < Gilgamesh < Gill --- > Gilead/M > Giles/M > Gilgamesh/M > Gill/M 6104c4799 < Gillespie --- > Gillespie/M 6106d4800 < Gilli/M 6109c4803 < Gillie/M --- > Gillie's 6111a4806 > Gilman 6114d4808 < Ginelle/M 6118d4811 < Ginni/M 6120d4812 < Ginnifer/M 6123c4815 < Ginsberg --- > Ginsberg/M 6128d4819 < Giorgia/M 6130,6131c4821,4822 < Giorgione < Giotto --- > Giorgione/M > Giotto/M 6134,6136d4824 < Gipsy/SM < Giralda/M < Giraldo/M 6138c4826 < Giraudoux --- > Giraudoux/M 6140d4827 < Giselbert/M 6142d4828 < Gisella/M 6144,6145c4830,4831 < Gish < Giuditta/M --- > Gish/M > GitHub/M 6151,6152d4836 < Giustina/M < Giustino/M 6155d4838 < Gizela/M 6157,6158d4839 < Glad/M < Gladi/M 6160,6161c4841,4842 < Gladys < Glaser --- > Gladys/M > Glaser/M 6168d4848 < Gleda/M 6172d4851 < Glenden/M 6174d4852 < Glenine/M 6179,6181c4857 < Glennis/M < Glori/M < Gloria --- > Gloria/M 6183,6185c4859 < Gloriane/M < Glory/M < Gloucester --- > Gloucester/M 6189d4862 < Glynda/M 6192d4864 < Glynnis/M 6194,6195c4866 < Gnni/M < Gnostic --- > Gnostic/M 6197c4868,4869 < Goa --- > GnuPG > Goa/M 6200,6203c4872,4873 < Godard < Godart/M < Goddard < Goddart/M --- > Godard/M > Goddard/M 6205d4874 < Godfree/M 6207d4875 < Godfry/M 6212,6213c4880,4881 < Godthaab < Godunov --- > Godthaab/M > Godunov/M 6216,6217c4884,4885 < Goebbels < Goering --- > Goebbels/M > Goering/M 6221,6222c4889,4890 < Gog < Gogol --- > Gog/M > Gogol/M 6225c4893 < Golconda --- > Golconda/M 6227d4894 < Goldarina/M 6230,6231d4896 < Goldi/M < Goldia/M 6234,6235c4899 < Goldina/M < Golding --- > Golding/M 6237c4901 < Goldsmith --- > Goldsmith/M 6239c4903 < Goldwyn --- > Goldwyn/M 6241c4905 < Golgi --- > Golgi/M 6243c4907 < Goliath --- > Goliath/M 6246,6247c4910,4911 < Gompers < Gomulka --- > Gompers/M > Gomulka/M 6249c4913 < Gonzales --- > Gonzales/M 6252d4915 < Goober/M 6255c4918 < Goodman --- > Goodman/M 6259c4922 < Goodyear --- > Goodyear/M 6264,6265c4927 < Goraud/M < Gorbachev --- > Gorbachev/M 6270,6271c4932,4933 < Gordimer < Gordon --- > Gordimer/M > Gordon/M 6273c4935 < Gore --- > Gore/M 6276c4938 < Gorgas --- > Gorgas/M 6278c4940 < Gorgonzola --- > Gorgonzola/M 6283,6284c4945 < Gotham < Gothart/M --- > Gotham/M 6289,6290c4950,4951 < Gould < Gounod --- > Gould/M > Gounod/M 6292c4953 < Goya --- > Goya/M 6295,6296c4956,4957 < Gracchus < Grace --- > Gracchus/M > Grace/M 6301,6302d4961 < Gradeigh/M < Gradey/M 6304d4962 < Graehme/M 6308,6315c4966,4971 < Graham < Grahame < Graig/M < Grail < Gram/M < Grammy < Grampians < Gran/M --- > Graham/M > Grahame/M > Grail/M > Grammy/M > Grampians/M > Gran's 6319d4974 < Granny/M 6322d4976 < Granthem/M 6325c4979 < Grass --- > Grass/M 6328,6331c4982,4983 < Gratiana/M < Graves < Gray < Grayce/M --- > Graves/M > Gray/M 6333c4985 < Grecian --- > Grecian/M 6336c4988 < Greeley --- > Greeley/M 6338c4990 < Greene --- > Greene/M 6349d5000 < Greggory/M 6351d5001 < Gregoor/M 6353c5003 < Gregorian --- > Gregorian/M 6359,6361c5009,5011 < Grenadines < Grendel < Grenoble --- > Grenadines/M > Grendel/M > Grenoble/M 6363c5013 < Gresham --- > Gresham/M 6365d5014 < Gretal/M 6369d5017 < Grethel/M 6373,6374c5021,5022 < Grey < Grieg --- > Grey/M > Grieg/M 6377d5024 < Griffie/M 6379c5026 < Griffith --- > Griffith/M 6381,6382c5028 < Griffy/M < Grimes --- > Grimes/M 6385c5031 < Gris --- > Gris/M 6387d5032 < Grissel/M 6389,6390c5034 < Griz/M < Gromyko --- > Gromyko/M 6392,6395c5036,5038 < Gross < Grosz < Grotius < Grove/RM --- > Gross/M > Grosz/M > Grotius/M 6399c5042 < Grundy --- > Grundy/M 6402a5046,5047 > Gruyère/M > Grünewald/M 6405c5050 < Guadalquivir --- > Guadalquivir/M 6409d5053 < Gualterio/M 6417c5061 < Guatemalan/SM --- > Guatemalan/MS 6420,6421c5064 < Guelph < Guendolen/M --- > Guelph/M 6423d5065 < Guenna/M 6426,6429c5068,5070 < Guerrero < Guevara < Guggenheim < Guglielma/M --- > Guerrero/M > Guevara/M > Guggenheim/M 6437,6438d5077 < Guillema/M < Guillemette/M 6443d5081 < Guinna/M 6445,6446c5083,5084 < Guiyang < Guizot --- > Guiyang/M > Guizot/M 6449,6450c5087,5088 < Gujranwala < Gullah --- > Gujranwala/M > Gullah/M 6453,6454d5090 < Gun/M < Gunar/M 6456,6457d5091 < Gunner/M < Guntar/M 6459c5093 < Gunther --- > Gunther/M 6464,6466d5097 < Gusella/M < Guss < Gussi/M 6468c5099 < Gussy/M --- > Gussy's 6476,6481c5107,5109 < Gustie/M < Gusty/M < Gutenberg < Guthrey/M < Guthrie < Guthry/M --- > Gusty's > Gutenberg/M > Guthrie/M 6487c5115 < Gwalior --- > Gwalior/M 6490d5117 < Gwendolin/M 6493,6500d5119 < Gweneth/M < Gwenette/M < Gwenneth/M < Gwenni/M < Gwennie/M < Gwenny/M < Gwenora/M < Gwenore/M 6504a5124,5125 > Gödel/M > Göteborg/M 6506c5127,5129 < HBO --- > HBO/M > HDD > HDMI 6516a5140 > HPV 6528c5152 < Ha --- > Ha/M 6530c5154 < Habakkuk --- > Habakkuk/M 6532c5156 < Had/M --- > Had's 6535d5158 < Hadlee/M 6539c5162 < Hadrian --- > Hadrian/M 6542c5165 < Hagar --- > Hagar/M 6544c5167 < Haggai --- > Haggai/M 6546,6547c5169,5170 < Hague < Hahn --- > Hague/M > Hahn/M 6550d5172 < Hailee/M 6552,6553c5174 < Haily/M < Haiphong --- > Haiphong/M 6559c5180 < Hakluyt --- > Hakluyt/M 6561,6565c5182,5184 < Haldane < Hale < Haleakala < Haleigh/M < Halette/M --- > Haldane/M > Hale/M > Haleakala/M 6568d5186 < Halie/M 6570,6573c5188,5189 < Halimeda/M < Hall < Halley < Halli/M --- > Hall/M > Halley/M 6578,6579c5194 < Hallstatt < Hallsy/M --- > Hallstatt/M 6582,6583c5197,5198 < Halsey < Halsy/M --- > Hals/M > Halsey/M 6589c5204 < Hamhung --- > Hamhung/M 6595c5210 < Hamiltonian --- > Hamiltonian/M 6598,6599c5213 < Hamlen/M < Hamlet --- > Hamlet/M 6602,6603c5216,5217 < Hammarskjold < Hammerstein --- > Hammarskjold/M > Hammerstein/M 6605,6607c5219,5220 < Hammond < Hammurabi < Hamnet/M --- > Hammond/M > Hammurabi/M 6609,6611c5222,5224 < Hampton < Hamsun < Han/S --- > Hampton/M > Hamsun/M > Han/SM 6614c5227 < Hancock --- > Hancock/M 6616c5229 < Handy --- > Handy/M 6623c5236 < Hanni/SM --- > Hanni/M 6625,6626d5237 < Hannie/M < Hanny/M 6629a5241 > Hans/MN 6632d5243 < Hansiain/M 6634a5246 > Hanukah/M 6637c5249 < Happy/M --- > Happy's 6642c5254 < Harbin --- > Harbin/M 6646,6647c5258,5259 < Hardy < Hargreaves --- > Hardy/M > Hargreaves/M 6651,6656c5263,5264 < Harlen/M < Harlene/M < Harlequin < Harley < Harli/M < Harlie/M --- > Harlequin/M > Harley/M 6658c5266 < Harlow --- > Harlow/M 6663d5270 < Harmony/M 6666d5272 < Harp/MR 6671d5276 < Harrie/M 6674d5278 < Harrietta/M 6678a5283 > Harris/M 6681c5286 < Harrods --- > Harrods/M 6683,6684c5288,5289 < Hart < Harte --- > Hart/M > Harte/M 6692c5297 < Harvey --- > Harvey/M 6694d5298 < Harwilll/M 6696d5299 < Hasheem/M 6698,6699c5301 < Hasidim < Haskel/M --- > Hasidim/M 6705,6707c5307,5309 < Hasty/M < Hatfield < Hathaway --- > Hasty's > Hatfield/M > Hathaway/M 6709c5311 < Hatteras --- > Hatteras/M 6713c5315 < Hauptmann --- > Hauptmann/M 6717,6719c5319,5320 < Havarti < Havel < Haven/M --- > Havarti/M > Havel/M 6724,6725c5325,5326 < Hawking < Hawkins --- > Hawking/M > Hawkins/M 6727c5328 < Hawthorne --- > Hawthorne/M 6731a5333 > Hayek/M 6734,6735c5336,5338 < Haynes < Hayward --- > Haynes/M > Hays/M > Hayward/M 6739d5341 < Haze/M 6742c5344 < Hazlitt --- > Hazlitt/M 6745,6747c5347,5348 < Heall/M < Hearst < Heath/R --- > Hearst/M > Heath/MR 6749,6750c5350 < Heaven/MS < Heaviside --- > Heaviside/M 6752c5352 < Hebe --- > Hebe/M 6754c5354 < Hebraic --- > Hebraic/M 6756a5357 > Hebrews/M 6758c5359 < Hecate --- > Hecate/M 6760,6761c5361 < Hecuba < Heda/M --- > Hecuba/M 6763,6764d5362 < Heddi/M < Heddie/M 6766,6767d5363 < Hedvig/M < Hedvige/M 6769d5364 < Hedwiga/M 6774,6778c5369,5372 < Hegelian < Hegira < Heida/M < Heidegger < Heidelberg --- > Hegelian/M > Hegira/M > Heidegger/M > Heidelberg/M 6780,6781c5374 < Heidie/M < Heifetz --- > Heifetz/M 6783,6784c5376 < Heindrick/M < Heine --- > Heine/M 6788,6791c5380,5381 < Heinrick/M < Heinrik/M < Heinz < Heisenberg --- > Heinz/M > Heisenberg/M 6793c5383 < Hejira/MS --- > Hejira's 6795d5384 < Helaine/M 6799d5387 < Helenka/M 6802,6803c5390,5391 < Helicon < Heliopolis --- > Helicon/M > Heliopolis/M 6805d5392 < Hell/SMR 6810,6813c5397,5400 < Hellenistic < Hellenization < Hellenize/DSG < Heller --- > Hellenistic/M > Hellenization/M > Hellenize/MD > Heller/M 6815,6816c5402 < Helli/M < Hellman --- > Hellman/M 6819d5404 < Helsa/M 6824d5408 < Helyn/M 6828a5413 > Hendricks/M 6830,6833c5415,5416 < Hendrika/M < Hendrix < Henka/M < Henley --- > Hendrix/M > Henley/M 6836,6837d5418 < Henrie/M < Henrieta/M 6842d5422 < Henryetta/M 6845c5425 < Hepburn --- > Hepburn/M 6848c5428 < Hepplewhite --- > Hepplewhite/M 6851c5431 < Heraclitus --- > Heraclitus/M 6853,6855c5433,5434 < Herb/M < Herbart < Herbert --- > Herbart/M > Herbert/M 6863,6864c5442 < Herculie/M < Herder --- > Herder/M 6866c5444 < Herero --- > Herero/M 6870c5448 < Hermaphroditus --- > Hermaphroditus/M 6873,6874d5450 < Hermie/M < Hermina/M 6878c5454 < Hermitage --- > Hermitage/M 6882d5457 < Hermy/M 6890c5465 < Herrick --- > Herrick/M 6893c5468 < Herschel --- > Herschel/M 6905,6906c5480,5481 < Herzegovina < Herzl --- > Herzegovina/M > Herzl/M 6908,6912c5483,5487 < Hesiod < Hesperus < Hess < Hesse < Hessian --- > Hesiod/M > Hesperus/M > Hess/M > Hesse/M > Hessian/M 6914d5488 < Hesther/M 6917d5490 < Hetti/M 6920,6922c5493 < Hew/M < Hewe/M < Hewet/M --- > Hew's 6924d5494 < Hewie/M 6927,6928c5497,5498 < Heyerdahl < Heywood --- > Heyerdahl/M > Heywood/M 6930c5500 < Hezekiah --- > Hezekiah/M 6933,6934c5503,5504 < Hi/M < Hialeah --- > Hi's > Hialeah/M 6939c5509 < Hickok --- > Hickok/M 6941c5511 < Hieronymus --- > Hieronymus/M 6944c5514 < Highlander/MS --- > Highlander/SM 6948d5517 < Hilarius/M 6950c5519 < Hilbert --- > Hilbert/M 6952,6953d5520 < Hildagard/M < Hildagarde/M 6955,6956c5522 < Hildebrand < Hildegaard/M --- > Hildebrand/M 6960c5526 < Hill --- > Hill/M 6962,6963c5528,5529 < Hillary < Hillel --- > Hillary/M > Hillel/M 6966,6967d5531 < Hilliary/M < Hillie/M 6970c5534 < Hilly/RM --- > Hilly's 6972c5536 < Hilton --- > Hilton/M 6975c5539,5540 < Himmler --- > Himalayas/M > Himmler/M 6977,6980c5542,5544 < Hinda/M < Hindemith < Hindenburg < Hindi --- > Hindemith/M > Hindenburg/M > Hindi/M 6985c5549 < Hines --- > Hines/M 6988c5552 < Hipparchus --- > Hipparchus/M 6990,6991c5554,5555 < Hippocratic < Hiram --- > Hippocratic/M > Hiram/M 6993c5557 < Hirohito --- > Hirohito/M 7000c5564 < Hitchcock --- > Hitchcock/M 7003c5567 < Hmong --- > Hmong/M 7005d5568 < Hobard/M 7007,7009c5570,5571 < Hobbes < Hobbs < Hobey/M --- > Hobbes/M > Hobbs/M 7013,7014c5575,5576 < Hodgkin < Hoebart/M --- > Hodges/M > Hodgkin/M 7020c5582 < Hogarth --- > Hogarth/M 7022,7023c5584,5585 < Hohenlohe < Hohenstaufen --- > Hohenlohe/M > Hohenstaufen/M 7026c5588 < Hohokam --- > Hohokam/M 7028,7029c5590,5591 < Hokusai < Holbein --- > Hokusai/M > Holbein/M 7033c5595 < Holiday --- > Holiday/M 7039d5600 < Holli/SM 7040a5602 > Hollis/M 7042,7043c5604 < Holly < Hollyanne/M --- > Holly/M 7047c5608 < Holocaust --- > Holocaust/M 7049c5610 < Holst --- > Holst/M 7051c5612 < Holt --- > Holt/M 7053,7055c5614 < Homere/M < Homeric < Homerus/M --- > Homeric/M 7061d5619 < Honey/M 7063c5621,5622 < Honiara --- > Hong > Honiara/M 7065c5624 < Honor/B --- > Honorable 7068,7069c5627,5629 < Hood < Hooke/R --- > Hood/M > Hooke/RM > Hooker/M 7074c5634 < Hope --- > Hope/M 7077,7079c5637,5639 < Hopkins < Hopper < Horace --- > Hopkins/M > Hopper/M > Horace/M 7085,7086c5645,5646 < Hormuz < Horn --- > Hormuz/M > Horn/M 7089c5649 < Horowitz --- > Horowitz/M 7091,7092c5651 < Hort/MN < Horten/M --- > Hort/M 7095c5654 < Horthy --- > Horthy/M 7103c5662 < Houdini --- > Houdini/M 7105,7106c5664,5665 < House < Housman --- > House/M > Housman/M 7110,7111c5669,5670 < Howard < Howe --- > Howard/M > Howe/M 7112a5672 > Howells/M 7116c5676 < Hoyle --- > Hoyle/M 7120,7121c5680,5681 < Huang < Hubbard --- > Huang/M > Hubbard/M 7123d5682 < Hube/RM 7126,7128d5684 < Huberto/M < Hubey/M < Hubie/M 7136c5692 < Huggins --- > Huggins/M 7137a5694 > Hughes/M 7139d5695 < Hugibert/M 7143c5699 < Hui --- > Hui/M 7149,7150c5705,5706 < Humboldt < Hume --- > Humboldt/M > Hume/M 7152,7153d5707 < Humfrid/M < Humfried/M 7155,7156c5709,5710 < Humphrey < Humvee --- > Humphrey/SM > Humvee/M 7158,7159c5712 < Hunfredo/M < Hung --- > Hung/M 7163c5716 < Hunt/R --- > Hunt/MR 7166d5718 < Huntlee/M 7168,7170c5720 < Huntsville < Hurlee/M < Hurleigh/M --- > Huntsville/M 7172c5722 < Huron --- > Huron/M 7174c5724 < Hus --- > Hus/M 7176,7180c5726,5730 < Hussein < Husserl < Hussite < Huston < Hutchinson --- > Hussein/M > Husserl/M > Hussite/M > Huston/M > Hutchinson/M 7182c5732 < Hutu --- > Hutu/M 7184c5734 < Huygens --- > Huygens/M 7186,7187d5735 < Hyacinth/M < Hyacintha/M 7189,7190d5736 < Hyacinthia/M < Hyacinthie/M 7193,7194c5739,5740 < Hyde < Hyderabad --- > Hyde/M > Hyderabad/M 7199d5744 < Hynda/M 7202a5748 > Héloise/M 7213a5760 > IDE 7214a5762,5763 > IED > IEEE 7227a5777 > IP 7229c5779 < IPO/MS --- > IPO/SM 7231a5782 > IRC 7234c5785,5787 < ISO --- > ISO/M > ISP > ISS 7237a5791 > IVF 7245,7247c5799 < Ibadan < Ibbie/M < Ibby/M --- > Ibadan/M 7249,7250c5801,5802 < Iberian < Ibiza --- > Iberian/M > Ibiza/M 7252c5804 < Ibo --- > Ibo/M 7262c5814 < Ida --- > Ida/M 7266,7273c5818 < Idalia/M < Idalina/M < Idaline/M < Idell/M < Idelle/M < Idette/M < Ieyasu < Iggie/M --- > Ieyasu/M 7277,7278c5822 < Ignacius/M < Ignatius --- > Ignatius/M 7283d5826 < Ijssel 7287,7290c5830,5831 < Ikhnaton < Ila < Ilaire/M < Ilario/M --- > Ikhnaton/M > Ila/M 7292d5832 < Ileane/M 7295d5834 < Ilise/M 7301c5840 < Illuminati --- > Illuminati/M 7304,7306d5842 < Ilysa/M < Ilyse/M < Ilyssa/M 7315d5850 < Imojean/M 7330a5866 > Indies/M 7333c5869 < Indochinese --- > Indochinese/M 7335,7336c5871,5872 < Indonesian/MS < Indore --- > Indonesian/SM > Indore/M 7340,7342c5876 < Ines < Inesita/M < Inessa/M --- > Ines/M 7345,7350c5879 < Ingaberg/M < Ingaborg/M < Ingamar/M < Ingar/M < Inge/R < Ingeberg/M --- > Inge/RM 7352d5880 < Ingelbert/M 7355d5882 < Inglebert/M 7359d5885 < Ingra/M 7361c5887 < Ingres --- > Ingres/M 7363,7364d5888 < Ingrim/M < Ingunna/M 7372c5896 < Inquisition --- > Inquisition/M 7373a5898 > Instagram/M 7376c5901 < Intelsat --- > Intelsat/M 7378,7379c5903,5904 < Internet/S < Interpol --- > Internet/SM > Interpol/M 7384,7385d5908 < Iolande/M < Iolanthe/M 7387c5910 < Ionesco --- > Ionesco/M 7390,7392d5912 < Iorgo/MS < Iormina/M < Iosep/M 7395c5915 < Iphigenia --- > Iphigenia/M 7398,7399c5918,5919 < Iqbal < Iquitos --- > Iqbal/M > Iquitos/M 7408c5928 < Irene --- > Irene/M 7410c5930 < Iris --- > Iris/M 7413c5933 < Irishmen --- > Irishmen/M 7415,7417c5935,5936 < Irishwomen < Irita/M < Irkutsk --- > Irishwomen/M > Irkutsk/M 7421c5940 < Irrawaddy --- > Irrawaddy/M 7425,7426c5944,5945 < Irvine < Irving --- > Irvine/M > Irving/M 7428d5946 < Irwinn/M 7433,7434c5951 < Isabelita/M < Isabella --- > Isabella/M 7436,7438d5952 < Isac/M < Isacco/M < Isador/M 7441,7442c5955 < Isahella/M < Isaiah --- > Isaiah/M 7444,7447c5957,5959 < Iscariot < Iseabal/M < Isfahan < Isherwood --- > Iscariot/M > Isfahan/M > Isherwood/M 7449c5961 < Ishmael --- > Ishmael/M 7452d5963 < Isiahi/M 7461c5972 < Islamic --- > Islamic/M 7463c5974,5976 < Islamist --- > Islamist/M > Islamophobia > Islamophobic 7467,7468c5980 < Isolde < Ispahan --- > Isolde/M 7472c5984 < Israelite --- > Israelite/M 7474,7477c5986 < Issachar < Issi/M < Issiah/M < Issie/M --- > Issachar/M 7488,7491c5997,5999 < Itch/M < Ithaca < Ithacan < Ito --- > Ithaca/M > Ithacan/M > Ito/M 7493c6001 < Ivan --- > Ivan/M 7498,7499c6006 < Ivett/M < Ivette/M --- > Ives/M 7502d6008 < Ivonne/M 7506c6012 < Ivy --- > Ivy/M 7509,7510d6014 < Izabel/M < Izak/M 7513,7514c6017,6018 < Izhevsk < Izmir --- > Izhevsk/M > Izmir/M 7523c6027 < JPEG/MS --- > JPEG/SM 7526,7527d6029 < Jacenta/M < Jacinda/M 7529,7532c6031 < Jacintha/M < Jacinthe/M < Jack < Jackelyn/M --- > Jack/M 7537,7538d6035 < Jackquelin/M < Jackqueline/M 7540c6037 < Jacksonian --- > Jacksonian/M 7543d6039 < Jaclin/M 7547c6043 < Jacobi --- > Jacobi/M 7550a6047 > Jacobs/M 7552,7553c6049 < Jacquard < Jacquelin/M --- > Jacquard/M 7556,7561c6052 < Jacquelynn/M < Jacquenetta/M < Jacquenette/M < Jacques < Jacquetta/M < Jacquette/M --- > Jacques/M 7564,7565c6055 < Jacuzzi < Jacynth/M --- > Jacuzzi/M 7567d6056 < Jade/M 7574,7576c6063 < Jaimie/M < Jain < Jaine/M --- > Jain/M 7578c6065 < Jaipur --- > Jaipur/M 7581d6067 < Jakie/M 7592,7593c6078 < Jamestown < Jamesy/M --- > Jamestown/M 7598,7599d6082 < Jamill/M < Jamima/M 7601,7602d6083 < Jammal/M < Jammie/M 7606,7608d6086 < Janaya/M < Janaye/M < Jandy/M 7610,7612d6087 < Janean/M < Janeczka/M < Janeen/M 7614,7615d6088 < Janel/M < Janela/M 7617d6089 < Janella/M 7619,7621d6090 < Janene/M < Janenna/M < Janessa/M 7623,7624d6091 < Janeta/M < Janetta/M 7626d6092 < Janeva/M 7628d6093 < Jania/M 7631d6095 < Janifer/M 7636d6099 < Janith/M 7638d6100 < Janka/M 7640,7641d6101 < Jannel/M < Jannelle/M 7644d6103 < Janot/M 7649a6109 > Jap/SM 7653,7660d6112 < Jaquelin/M < Jaquelyn/M < Jaquenetta/M < Jaquenette/M < Jaquith/M < Jarad/M < Jard/M < Jareb/M 7662,7665c6114 < Jarib/M < Jarid/M < Jarlsberg < Jarrad/M --- > Jarlsberg/M 7669d6117 < Jarrid/M 7673d6120 < Jasen/M 7675d6121 < Jasmina/M 7679,7680c6125 < Jasun/M < Jataka --- > Jataka/M 7685,7686c6130,6131 < Jaxartes < Jay --- > Jaxartes/M > Jay/M 7689c6134,6135 < Jaycee/S --- > Jaycee/MS > Jaycees/M 7692,7693d6137 < Jaymee/M < Jaymie/M 7695d6138 < Jaynell/M 7697,7698d6139 < Jazmin/M < Jdavie/M 7702d6142 < Jeanelle/M 7706d6145 < Jeanna/M 7711d6149 < Jecho/M 7713,7714d6150 < Jedd/M < Jeddy/M 7718c6154 < Jeep --- > Jeep/M 7723c6159 < Jeffersonian --- > Jeffersonian/M 7725,7726c6161 < Jeffie/M < Jeffrey --- > Jeffrey/M 7728,7730c6163 < Jeffy/M < Jehanna/M < Jehoshaphat --- > Jehoshaphat/M 7734,7735d6166 < Jelene/M < Jemie/M 7737,7738d6167 < Jemimah/M < Jemmie/M 7742,7746d6170 < Jenda/M < Jenelle/M < Jeni/M < Jenica/M < Jeniece/M 7748,7751c6172 < Jeniffer/M < Jenilee/M < Jenine/M < Jenkins --- > Jenkins/M 7754,7755c6175 < Jennee/M < Jennette/M --- > Jenner/M 7757d6176 < Jennica/M 7760,7761d6178 < Jennilee/M < Jennine/M 7766,7767c6183 < Jephthah < Jerad/M --- > Jephthah/M 7769,7771d6184 < Jeralee/M < Jeramey/M < Jeramie/M 7773d6185 < Jereme/M 7781d6192 < Jermain/M 7783,7784c6194 < Jermayne/M < Jeroboam --- > Jeroboam/M 7786,7787c6196 < Jerome < Jeromy/M --- > Jerome/M 7790,7792d6198 < Jerrilee/M < Jerrilyn/M < Jerrine/M 7795d6200 < Jerrome/M 7797d6201 < Jerrylee/M 7802,7804d6205 < Jessa/M < Jessalin/M < Jessalyn/M 7807,7809c6208 < Jesse < Jessee/M < Jesselyn/M --- > Jesse/M 7814d6212 < Jessika/M 7817,7818c6215 < Jesus < Jeth/M --- > Jesus/M 7820c6217 < Jetway --- > Jetway/M 7824d6220 < Jewelle/M 7826,7827c6222,6223 < Jewish/P < Jewry --- > Jewish/PM > Jewry/M 7829,7837c6225,6227 < Jidda < Jilin < Jill < Jillana/M < Jillane/M < Jillayne/M < Jilleen/M < Jillene/M < Jilli/M --- > Jidda/M > Jilin/M > Jill/M 7839d6228 < Jillie/M 7845,7846c6234,6235 < Jinan < Jinnah --- > Jinan/M > Jinnah/M 7848c6237 < Jivaro --- > Jivaro/M 7851c6240 < Joan --- > Joan/M 7860,7863c6249 < Jobey/M < Jobi/M < Jobie/M < Jobina/M --- > Jobs/M 7865,7867c6251 < Jobye/M < Jobyna/M < Jocasta --- > Jocasta/M 7869d6252 < Joceline/M 7872,7873c6255,6256 < Jock < Jockey --- > Jock/M > Jockey/M 7875d6257 < Jodee/M 7879,7885c6261,6262 < Joe < Joeann/M < Joel/Y < Joela/M < Joelie/M < Joell/MN < Joella/M --- > Joe/M > Joel/M 7887,7892d6263 < Joellen/M < Joelly/M < Joellyn/M < Joelynn/M < Joesph/M < Joete/M 7898,7899c6269 < Johannah/M < Johannes --- > Johannes/M 7902,7903d6271 < Johna/MH < Johnath/M 7906d6273 < Johnette/M 7908,7909c6275 < Johnna/M < Johnnie --- > Johnnie/M 7910a6277 > Johns/M 7913,7914d6279 < Johny/M < Joice/M 7916,7917d6280 < Jolee/M < Joleen/M 7919d6281 < Joletta/M 7922,7924c6284,6285 < Joliet < Joline/M < Jolson --- > Joliet/M > Jolson/M 7926,7927d6286 < Jolyn/M < Jolynn/M 7931c6290 < Jonas --- > Jonas/M 7935,7940c6294,6297 < Jonell/M < Joni/SM < Jonie/M < Jonson < Joplin < Jordain/M --- > Jones/M > Joni/M > Jonson/M > Joplin/M 7944d6300 < Jordanna/M 7946,7947d6301 < Jorey/M < Jorgan/M 7950,7952d6303 < Jorie/M < Jorrie/M < Jorry/M 7956d6306 < Josee/M 7960d6309 < Joseito/M 7963,7964c6312 < Josephina/M < Josephine --- > Josephine/M 7967c6315 < Josephus --- > Josephus/M 7969,7970c6317 < Josh < Joshia/M --- > Josh/M 7972,7974c6319 < Joshuah/M < Josi/M < Josiah --- > Josiah/M 7979,7980c6324 < Josy/M < Joule --- > Joule/M 7984c6328 < Jovian --- > Jovian/M 7987,7991c6331,6332 < Joyan/M < Joyann/M < Joyce < Joycean < Joycelin/M --- > Joyce/M > Joycean/M 7997d6337 < Jsandye/M 8002c6342 < Jubal --- > Jubal/M 8004c6344,6345 < Judah --- > Judaeo > Judah/M 8010,8011c6351,6352 < Jude < Judea --- > Jude/M > Judea/M 8014d6354 < Judie/M 8016,8017d6355 < Juditha/M < Judon/M 8019,8020c6357 < Judy < Judye/M --- > Judy/M 8022d6358 < Juieta/M 8025c6361 < Julee/M --- > Jules/M 8028,8029c6364,6365 < Julian < Juliana --- > Julian/M > Juliana/M 8031d6366 < Juliann/M 8035,8038c6370,6371 < Julienne/M < Juliet < Julieta/M < Julietta/M --- > Julienne's > Juliet/M 8040,8041d6372 < Julina/M < Juline/M 8043,8044d6373 < Julissa/M < Julita/M 8048c6377 < Jun --- > Jun/M 8051d6379 < Junette/M 8053,8054c6381,6382 < Jungfrau < Jungian --- > Jungfrau/M > Jungian/M 8057d6384 < Junina/M 8064d6390 < Justen/M 8070,8072d6395 < Justinn/M < Justino/M < Justis/M 8075c6398 < Juvenal --- > Juvenal/M 8081c6404 < KGB --- > KGB/M 8088c6411 < Kaaba --- > Kaaba/M 8090,8093d6412 < Kacey/M < Kacie/M < Kacy/M < Kaela/M 8095,8097c6414,6415 < Kafkaesque < Kagoshima < Kahaleel/M --- > Kafkaesque/M > Kagoshima/M 8102c6420 < Kaifeng --- > Kaifeng/M 8104,8105d6421 < Kaile/M < Kailey/M 8111d6426 < Kaitlynn/M 8113d6427 < Kakalina/M 8116,8117c6430,6431 < Kalamazoo < Kalashnikov --- > Kalamazoo/M > Kalashnikov/M 8119,8123c6433,6434 < Kale/M < Kaleb/M < Kaleena/M < Kalevala < Kalgoorlie --- > Kalevala/M > Kalgoorlie/M 8125d6435 < Kalie/M 8127d6436 < Kalila/M 8129,8130d6437 < Kalinda/M < Kalindi/M 8132,8135c6439 < Kalli/M < Kally/M < Kalmyk < Kalvin/M --- > Kalmyk/M 8137c6441 < Kamchatka --- > Kamchatka/M 8139,8142d6442 < Kameko/M < Kamila/M < Kamilah/M < Kamillah/M 8145c6445 < Kan/S --- > Kan/SM 8147,8149c6447,6448 < Kandace/M < Kandahar < Kandinsky --- > Kandahar/M > Kandinsky/M 8154,8155c6453,6454 < Kano < Kanpur --- > Kano/M > Kanpur/M 8157c6456 < Kansas --- > Kansas/M 8159c6458 < Kantian --- > Kantian/M 8161c6460 < Kaohsiung --- > Kaohsiung/M 8165,8168c6464,6465 < Karaganda < Karakorum < Karalee/M < Karalynn/M --- > Karaganda/M > Karakorum/M 8171d6467 < Karee/M 8175d6470 < Karena/M 8178,8181d6472 < Karia/M < Karie/M < Karil/M < Karilynn/M 8186,8190c6477 < Kariotta/M < Karisa/M < Karissa/M < Karita/M < Karl/MNX --- > Karl/MN 8192,8194d6478 < Karlan/M < Karlee/M < Karleen/M 8196,8199d6479 < Karlene/M < Karlie/M < Karlik/M < Karlis 8201,8202d6480 < Karlotta/M < Karlotte/M 8204,8205d6481 < Karlyn/M < Karmen/M 8208d6483 < Karney/M 8211,8212d6485 < Karola/M < Karole/M 8217,8218d6489 < Karrah/M < Karrie/M 8220,8223d6490 < Karry/M < Kary/M < Karyl/M < Karylin/M 8233,8236d6499 < Kassey/M < Kassi/M < Kassia/M < Kassie/M 8241d6503 < Katee/M 8244,8245d6505 < Katerine/M < Katey/M 8250d6509 < Katharyn/M 8256c6515 < Kathiawar --- > Kathiawar/M 8259d6517 < Kathlin/M 8263d6520 < Kathryne/M 8265d6521 < Kathye/M 8269d6524 < Katine/M 8271,8273c6526 < Katleen/M < Katlin/M < Katmai --- > Katmai/M 8275c6528 < Katowice --- > Katowice/M 8279,8282d6531 < Katti/M < Kattie/M < Katuscha/M < Katusha/M 8290,8291c6539,6540 < Kawasaki < Kay --- > Kawasaki/M > Kay/M 8295d6543 < Kayle/M 8297,8299d6544 < Kayley/M < Kaylil/M < Kaylyn/M 8305c6550 < Kazantzakis --- > Kazantzakis/M 8310d6554 < Keary/M 8312c6556 < Keats --- > Keats/M 8316d6559 < Keelby/M 8318d6560 < Keelia/M 8320d6561 < Keen/M 8323c6564 < Keewatin --- > Keewatin/M 8328,8336d6568 < Kelbee/M < Kelby/M < Kelcey/M < Kelci/M < Kelcie/M < Kelcy/M < Kele/M < Kelila/M < Kellby/M 8338c6570 < Keller --- > Keller/M 8341d6572 < Kellia/M 8343,8347c6574,6575 < Kellina/M < Kellogg < Kellsie/M < Kelly < Kellyann/M --- > Kellogg/M > Kelly/M 8349,8354c6577,6578 < Kelsi/M < Kelsy/M < Kelt/SM < Kelvin < Kelwin/M < Kemerovo --- > Kelvin/M > Kemerovo/M 8356c6580,6581 < Kempis --- > Kempis/M > Ken/M 8361d6585 < Kendre/M 8370d6593 < Kennie/M 8373d6595 < Kenon/M 8376c6598 < Kentuckian/SM --- > Kentuckian/MS 8380c6602 < Kenyatta --- > Kenyatta/M 8390,8391d6611 < Keriann/M < Kerianne/M 8393d6612 < Kermie/M 8395,8398c6614,6616 < Kermy/M < Kern < Kerouac < Kerr --- > Kern/M > Kerouac/M > Kerr/M 8401,8403c6619 < Kerrill/M < Kerrin/M < Kerry --- > Kerry/M 8406,8414c6622 < Kerwinn/M < Kesley/M < Keslie/M < Kessia/M < Kessiah/M < Kettering < Ketti/M < Kettie/M < Ketty/M --- > Kettering/M 8419,8421c6627 < Kevina/M < Kevlar < Kevon/M --- > Kevlar/M 8423,8425c6629,6630 < Kevyn/M < Kewpie < Key --- > Kewpie/M > Key/M 8427,8429c6632,6634 < Keynesian < Khabarovsk < Khachaturian --- > Keynesian/M > Khabarovsk/M > Khachaturian/M 8442,8443c6647,6648 < Khrushchev < Khufu --- > Khrushchev/M > Khufu/M 8448,8450c6653 < Kiah/M < Kial/M < Kickapoo --- > Kickapoo/M 8452,8456c6655,6656 < Kiel < Kiele/M < Kienan/M < Kierkegaard < Kiersten/M --- > Kiel/M > Kierkegaard/M 8460,8463c6660,6661 < Kijiji/M < Kikelia/M < Kikuyu < Kilauea --- > Kikuyu/M > Kilauea/M 8469,8470d6666 < Killie/M < Killy/M 8475,8477c6671 < Kimberlee/M < Kimberley < Kimberli/M --- > Kimberley/M 8479d6672 < Kimberlyn/M 8481,8483d6673 < Kimbra/M < Kimmi/M < Kimmie/M 8485d6674 < Kin/M 8489d6677 < Kingsly/M 8493d6680 < Kinna/M 8495,8497c6682 < Kinnie/M < Kinny/M < Kinsey --- > Kinsey/M 8503,8507c6688 < Kipp/MR < Kippar/M < Kipper/M < Kippie/M < Kippy/M --- > Kipp/M 8509,8510d6689 < Kirbee/M < Kirbie/M 8512c6691 < Kirchhoff --- > Kirchhoff/M 8520c6699 < Kirk --- > Kirk/M 8523c6702 < Kirov --- > Kirov/M 8525,8529c6704 < Kirsteni/M < Kirsti/M < Kirstin/M < Kirstyn/M < Kisangani --- > Kisangani/M 8532,8535c6707 < Kissee/M < Kissiah/M < Kissie/M < Kissinger --- > Kissinger/M 8538,8540c6710 < Kitchener < Kitti/M < Kittie/M --- > Kitchener/M 8543,8545c6713 < Kiwanis < Kizzee/M < Kizzie/M --- > Kiwanis/M 8549,8550d6716 < Klarika/M < Klarrisa/M 8552c6718 < Klee --- > Klee/M 8557,8560c6723,6724 < Kleon/M < Kliment/M < Klimt < Kline --- > Klimt/M > Kline/M 8567c6731 < Knickerbocker --- > Knickerbocker/M 8569c6733 < Knight --- > Knight/M 8571,8574c6735,6738 < Knossos < Knowles < Knox < Knoxville --- > Knossos/M > Knowles/M > Knox/M > Knoxville/M 8578,8579c6742,6743 < Kobe < Koch --- > Kobe/M > Koch/M 8582c6746 < Kodak --- > Kodak/M 8585,8588c6749,6751 < Koenraad/M < Koestler < Kohinoor < Kohl --- > Koestler/M > Kohinoor/M > Kohl/M 8591,8592c6754 < Koln/M < Kolyma --- > Kolyma/M 8597d6758 < Konstance/M 8599,8600d6759 < Konstantine/M < Konstanze/M 8605,8606d6763 < Koral/M < Koralle/M 8609d6765 < Kordula/M 8613d6768 < Korella/M 8615,8616d6769 < Koressa/M < Korey/M 8618d6770 < Korie/M 8620,8622d6771 < Korney/M < Korrie/M < Korry/M 8625,8626c6774,6775 < Korzybski < Kosciusko --- > Korzybski/M > Kosciusko/M 8628,8629c6777,6778 < Kossuth < Kosygin --- > Kossuth/M > Kosygin/M 8631c6780 < Kowloon --- > Kowloon/M 8638,8641c6787,6790 < Krasnodar < Krasnoyarsk < Krebs < Kremlin --- > Krasnodar/M > Krasnoyarsk/M > Krebs/M > Kremlin/M 8647d6795 < Krisha/M 8649d6796 < Krishnah/M 8651,8653d6797 < Krispin/M < Krissie/M < Krissy/M 8655,8658d6798 < Kristal/M < Kristan/M < Kriste/M < Kristel/M 8660c6800 < Kristi/MN --- > Kristi/M 8663d6802 < Kristien/M 8667,8671d6805 < Kristo/SM < Kristofer/M < Kristoffer/M < Kristofor/M < Kristoforo/M 8674d6807 < Kristyn/M 8678,8682c6811,6814 < Kropotkin < Kruger < Krugerrand < Krupp < Krysta/M --- > Kropotkin/M > Kruger/M > Krugerrand/M > Krupp/M 8684,8685d6815 < Krystalle/M < Krystle/M 8690c6820 < Kubrick --- > Kubrick/M 8692c6822 < Kuibyshev --- > Kuibyshev/M 8694,8696c6824,6826 < Kunming < Kuomintang < Kurd --- > Kunming/M > Kuomintang/M > Kurd/M 8698,8700c6828,6829 < Kurdistan < Kurile < Kurosawa --- > Kurdistan/M > Kurosawa/M 8704c6833 < Kutuzov --- > Kutuzov/M 8712,8713c6841 < Kwangju < Kwanza/MS --- > Kwangju/M 8715c6843 < Ky/H --- > Ky/MH 8718d6845 < Kylen/M 8720,8721d6846 < Kylila/M < Kylynn/M 8723d6847 < Kynthia/M 8725,8726c6849 < Kyrgyzstan < Kyrstin/M --- > Kyrgyzstan/M 8728c6851 < L'Amour --- > L'Amour/M 8730,8731c6853,6854 < L'Oreal < L'Ouverture --- > L'Oreal/M > L'Ouverture/M 8741a6865 > LGBT 8754c6878 < La/M --- > La/SM 8756c6880 < Laban --- > Laban/M 8760d6883 < Lacee/M 8763d6885 < Lacie/M 8765c6887 < Ladoga --- > Ladoga/M 8767c6889 < Lady --- > Lady/M 8770c6892 < Lafayette --- > Lafayette/M 8773,8776c6895,6897 < Lagrange < Lagrangian < Lahore < Laina/M --- > Lagrange/M > Lagrangian/M > Lahore/M 8778,8779c6899 < Laird/M < Laius --- > Laius/M 8785c6905 < Lakota --- > Lakota/M 8791,8793c6911,6913 < Lamaze < Lamb < Lambert --- > Lamaze/M > Lamb/M > Lambert/M 8795c6915 < Lambrusco --- > Lambrusco/M 8797d6916 < Lammond/M 8801d6919 < Lanae/M 8803c6921 < Lancashire --- > Lancashire/M 8807c6925 < Land --- > Land/M 8810c6928 < Landsat --- > Landsat/M 8813d6930 < Lanette/M 8815c6932 < Lang --- > Lang/M 8817,8820c6934,6936 < Langland < Langley < Langmuir < Langsdon/M --- > Langland/M > Langley/M > Langmuir/M 8824d6939 < Lanita/M 8825a6941 > Lankan/M 8827,8828d6942 < Lanni/M < Lannie/M 8833a6948 > Laos/M 8835c6950 < Laplace --- > Laplace/M 8839d6953 < Laraine/M 8842c6956 < Laredo --- > Laredo/M 8844,8845d6957 < Larina/M < Larine/M 8848,8849c6960 < Lark/M < Larousse --- > Larousse/M 8851c6962 < Lars/N --- > Lars/MN 8854d6964 < Laryssa/M 8859c6969 < Lat --- > Lat/M 8861d6970 < Latashia/M 8863c6972 < Latia/M --- > Latham/M 8870,8871d6978 < Latrena/M < Latrina/M 8875,8876c6982,6984 < Laud/R < Laue --- > Laud/MR > Lauder/M > Laue/M 8879c6987 < Laundromat --- > Laundromat/M 8881,8883d6988 < Lauraine/M < Laural/M < Lauralee/M 8886,8887d6990 < Lauree/M < Laureen/M 8889d6991 < Laurella/M 8891d6992 < Laurena/M 8893d6993 < Laurene/M 8898,8899d6997 < Laurianne/M < Laurice/M 8901d6998 < Lauritz/M 8903,8904c7000 < Laval < Lavena/M --- > Laval/M 8906d7001 < Laverna/M 8910,8911c7005 < Lavinie/M < Lavoisier --- > Lavoisier/M 8913d7006 < Law 8915c7008 < Lawrence --- > Lawrence/M 8917c7010 < Lawson --- > Lawson/M 8919,8920c7012 < Lay/M < Layamon --- > Layamon/M 8923d7014 < Layney/M 8929c7020 < Le/SMN --- > Le/SM 8932,8933c7023,7024 < Leadbelly < Leah --- > Leadbelly/M > Leah/M 8936c7027 < Leander --- > Leander/M 8941,8942d7031 < Leanor/M < Leanora/M 8946c7035 < Leavenworth --- > Leavenworth/M 8949d7037 < Lebbie/M 8952c7040 < Leda --- > Leda/M 8955,8956d7042 < Leeann/M < Leeanne/M 8959,8960d7044 < Leelah/M < Leeland/M 8962d7045 < Leesa/M 8964c7047 < Leeuwenhoek --- > Leeuwenhoek/M 8967,8968c7050 < Lefty/M < Legendre --- > Legendre/M 8970c7052 < Leghorn --- > Leghorn/M 8972d7053 < Legra/M 8981,8982c7062 < Leigh < Leigha/M --- > Leigh/M 8985d7064 < Leilah/M 8987d7065 < Leisha/M 8990d7067 < Lelah/M 8995,8997d7071 < Lemar/M < Lemmie/M < Lemmy/M 9003,9005d7076 < Lenci/M < Lenee/M < Lenette/M 9009,9011c7080 < Leninist < Lenka/M < Lenna/M --- > Leninist/M 9020a7090 > Lenten/M 9022,9023d7091 < Leodora/M < Leoine/M 9025,9026c7093 < Leoline/M < Leon --- > Leon/M 9028d7094 < Leonanie/M 9031c7097 < Leoncavallo --- > Leoncavallo/M 9034,9035d7099 < Leonelle/M < Leonerd/M 9037c7101 < Leonid --- > Leonid/M 9044d7107 < Leontyne/M 9048c7111 < Lepidus --- > Lepidus/M 9051c7114 < Lerner --- > Lerner/M 9053a7117 > Les/M 9055d7118 < Leshia/M 9057d7119 < Lesli/M 9059d7120 < Lesly/M 9061c7122 < Lesseps --- > Lesseps/M 9065d7125 < Lesya/M 9069d7128 < Lethia/M 9071d7129 < Letisha/M 9074d7131 < Letta/M 9076d7132 < Letti/M 9079d7134 < Leupold/M 9085c7140 < Leviathan --- > Leviathan/M 9094d7148 < Lewie/M 9096,9098c7150,7151 < Lewis < Lewiss < Lexi/SM --- > Lewis/M > Lexi/M 9100d7152 < Lexine/M 9103d7154 < Lexmark/M 9107,9108d7157 < Lezley/M < Lezlie/M 9117d7165 < Lianna/M 9119d7166 < Lib 9121d7167 < Libbi/M 9123c7169 < Libby --- > Libby/M 9127a7174 > LibreOffice/M 9132,9133c7179 < Licha/M < Lichtenstein --- > Lichtenstein/M 9136c7182 < Lie --- > Lie/M 9138c7184 < Liebfraumilch --- > Liebfraumilch/M 9141c7187 < Lief/M --- > Lief's 9143d7188 < Liesa/M 9147c7192 < Lila/SM --- > Lila/M 9154c7199 < Liliuokalani --- > Liliuokalani/M 9156,9157c7201,7202 < Lille < Lilli/MS --- > Lille/M > Lilli/M 9161,9162c7206 < Lilliputian/SM < Lilllie/M --- > Lilliputian/MS 9166d7209 < Lilyan/M 9170,9171c7213,7214 < Limburger < Limoges --- > Limburger/M > Limoges/M 9179c7222 < Lind --- > Lind/M 9181c7224 < Lindbergh --- > Lindbergh/M 9183d7225 < Lindie/M 9185,9188c7227,7229 < Lindsay < Lindsey < Lindsy/M < Lindy --- > Lindsay/M > Lindsey/M > Lindy/M 9190,9193d7230 < Linell/M < Linet/M < Linette/M < Link/M 9199,9202c7236 < Linnet/M < Linnie/M < Linoel/M < Linotype --- > Linotype/M 9205c7239 < Linux/S --- > Linux/MS 9207d7240 < Linzy/M 9209,9212c7242,7244 < Lionello/M < Lipizzaner < Lippi < Lippmann --- > Lipizzaner/M > Lippi/M > Lippmann/M 9215d7246 < Lira/M 9217d7247 < Lisabeth/M 9221d7250 < Lisetta/M 9223,9224d7251 < Lisha/M < Lishe/M 9228,9229d7254 < Lissi/M < Lissie/M 9234c7259 < Liszt --- > Liszt/M 9240d7264 < Liuka/M 9242d7265 < Liva/M 9245c7268 < Liverpudlian/MS --- > Liverpudlian/SM 9247,9248c7270,7271 < Livingston < Livingstone --- > Livingston/M > Livingstone/M 9250d7272 < Livvie/M 9252,9253c7274 < Livvyy/M < Livy --- > Livy/M 9262,9264c7283,7284 < Llewellyn < Lloyd < Llywellyn/M --- > Llewellyn/M > Lloyd/M 9267,9269c7287,7288 < Lobachevsky < Lochinvar < Lock/M --- > Lobachevsky/M > Lochinvar/M 9271c7290 < Lockean --- > Lockean/M 9274c7293 < Lodge --- > Lodge/M 9277,9279c7296,7297 < Loella/M < Loewe < Loewi --- > Loewe/M > Loewi/M 9283c7301 < Lohengrin --- > Lohengrin/M 9286d7303 < Loise/M 9289,9291c7306,7307 < Loleta/M < Lolita < Lollard --- > Lolita/M > Lollard/M 9293c7309 < Lolly/M --- > Lolly's 9302,9303c7318 < Lonee/M < Long --- > Long/M 9308,9310d7322 < Lonna/M < Lonnard/M < Lonni/M 9318,9320d7329 < Loralee/M < Loralie/M < Loralyn/M 9324,9325d7332 < Loree/M < Loreen/M 9327,9328c7334 < Lorelle/M < Loren/S --- > Loren/M 9331,9332c7337,7338 < Lorentz < Lorenz --- > Lorentz/M > Lorenz/M 9339,9340d7344 < Lorianna/M < Lorianne/M 9342,9343d7345 < Lorilee/M < Lorilyn/M 9346,9347d7347 < Lorine/M < Lorita/M 9351d7350 < Lorrayne/M 9353d7351 < Lorri/M 9355,9356d7352 < Lorrin/M < Lorry/M 9357a7354 > Los 9359d7355 < Lothaire/M 9370c7366 < Louis --- > Louis/M 9373d7368 < Louisette/M 9378,9379c7373 < Lourdes < Loutitia/M --- > Lourdes/M 9383c7377 < Lovelace --- > Lovelace/M 9386c7380 < Lowell --- > Lowell/M 9390d7383 < Lowrance/M 9394,9395c7387 < Loydie/M < Loyola --- > Loyola/M 9402,9404c7394,7396 < Lubavitcher < Lubbock < Lubumbashi --- > Lubavitcher/M > Lubbock/M > Lubumbashi/M 9406c7398 < Lucais/M --- > Lucas/M 9408d7399 < Lucho/M 9410,9411c7401,7402 < Lucia/MS < Lucian --- > Lucia/M > Lucian/M 9418d7408 < Lucila/M 9420d7409 < Lucilia/M 9424d7412 < Lucine/M 9426d7413 < Lucita/M 9430,9432c7417,7419 < Lucky/M < Lucretia < Lucretius --- > Lucky's > Lucretia/M > Lucretius/M 9435c7422 < Ludhiana --- > Ludhiana/M 9437d7423 < Ludovika/M 9441d7426 < Luelle/M 9443c7428 < Luftwaffe --- > Luftwaffe/M 9453,9454c7438 < Lulita/M < Lully --- > Lully/M 9456a7441 > Lumière/M 9459c7444 < Lupercalia --- > Lupercalia/M 9462d7446 < Lurette/M 9464,9467d7447 < Lurleen/M < Lurlene/M < Lurline/M < Lusa/M 9470d7449 < Lutero/M 9478d7456 < Luxemburg/M 9481c7459 < Lvov --- > Lvov/M 9486,9487c7464,7465 < Lycra < Lycurgus --- > Lycra/M > Lycurgus/M 9489c7467 < Lydia --- > Lydia/M 9493c7471 < Lyell --- > Lyell/M 9495c7473 < Lyly --- > Lyly/M 9499c7477 < Lynch --- > Lynch/M 9502,9503d7479 < Lyndel/M < Lyndell/M 9507,9511d7482 < Lyndsie/M < Lyndy/M < Lynea/M < Lynelle/M < Lynett/M 9513,9514c7484 < Lynn < Lynna/M --- > Lynn/M 9516,9520d7485 < Lynnea/M < Lynnell/M < Lynnelle/M < Lynnet/M < Lynnett/M 9522d7486 < Lynsey/M 9523a7488 > Lyons/M 9525c7490 < Lysenko --- > Lysenko/M 9547d7511 < MIPSes 9552a7517 > MOOC 9554c7519 < MPEG/MS --- > MPEG/SM 9561c7526 < MTV --- > MTV/M 9567d7531 < Mabelle/M 9569,9570c7533,7534 < Mac < MacArthur --- > Mac/M > MacArthur/M 9572c7536 < MacDonald --- > MacDonald/M 9576,9577c7540,7541 < Macaulay < Macbeth --- > Macaulay/M > Macbeth/M 9580c7544 < Mace --- > Mace/M 9584c7548 < Mach --- > Mach/M 9586c7550 < Machiavellian --- > Machiavellian/M 9592,9594c7556,7558 < Mackinaw < Macmillan < Macon --- > Mackinaw/M > Macmillan/M > Macon/M 9601d7564 < Madalena/M 9610d7572 < Madel/M 9613,9616d7574 < Madelena/M < Madelene/M < Madelin/M < Madelina/M 9618,9619d7575 < Madella/M < Madelle/M 9624,9625d7579 < Madlen/M < Madlin/M 9630d7583 < Mady/M 9632d7584 < Maegan/M 9635,9636c7587 < Mafioso < Mag/M --- > Mafioso/M 9638d7588 < Magdaia/M 9640c7590 < Magdalena --- > Magdalena/M 9643,9644c7593 < Magellanic < Maggee/M --- > Magellanic/M 9651,9653c7600,7601 < Magnitogorsk < Magnum < Magog --- > Magnitogorsk/M > Magog/M 9655c7603 < Magritte --- > Magritte/M 9666c7614 < Mahdi --- > Mahdi/M 9669c7617 < Mahler --- > Mahler/M 9672d7619 < Mahomet/M 9675d7621 < Maible/M 9677,9678d7622 < Maiga/M < Maighdiln/M 9680,9681c7624,7625 < Mailer < Maillol --- > Mailer/M > Maillol/M 9683c7627 < Maimonides --- > Maimonides/M 9688d7631 < Maisey/M 9691d7633 < Maitilde/M 9694d7635 < Maje/M 9696c7637 < Major --- > Major/M 9698c7639 < Majuro --- > Majuro/M 9700c7641 < Maker --- > Maker/M 9705,9709c7646,7649 < Malacca < Malachi < Malagasy < Malamud < Malanie/M --- > Malacca/M > Malachi/M > Malagasy/M > Malamud/M 9719,9720c7659 < Malchy/M < Malcolm --- > Malcolm/M 9726,9727c7665 < Malena/M < Mali --- > Mali/M 9733,9734c7671 < Malinde/M < Malinowski --- > Malinowski/M 9736,9738c7673,7674 < Malissia/M < Mallarme < Mallissa/M --- > Mallarme/M > Mallarmé/M 9740d7675 < Mallorie/M 9743d7677 < Malorie/M 9746c7680 < Malraux --- > Malraux/M 9754d7687 < Malynda/M 9756,9757c7689,7690 < Mameluke < Mamet --- > Mameluke/M > Mamet/M 9764,9765c7697 < Manasseh < Manaus --- > Manasseh/M 9769c7701 < Manchurian --- > Manchurian/M 9776,9777c7708,7709 < Mandela < Mandelbrot --- > Mandela/M > Mandelbrot/M 9780c7712 < Mandingo --- > Mandingo/M 9782d7713 < Mandriva/M 9784c7715 < Manet --- > Manet/M 9787,9788c7718,7719 < Mani < Manichean --- > Mani/M > Manichean/M 9793c7724 < Mann/G --- > Mann/GM 9795a7727 > Manning/M 9800c7732 < Mansfield --- > Mansfield/M 9802c7734 < Mantegna --- > Mantegna/M 9817,9819c7749,7750 < Marabel/M < Maracaibo < Marat --- > Maracaibo/M > Marat/M 9823,9824c7754,7755 < Marc < Marceau --- > Marc/M > Marceau/M 9827d7757 < Marcelia/M 9831,9832d7760 < Marcellina/M < Marcelline/M 9837,9838d7764 < Marchall/M < Marchelle/M 9841c7767 < Marciano --- > Marciano/M 9843,9844d7768 < Marcile/M < Marcille/M 9846c7770,7771 < Marconi --- > Marconi/M > Marcos/M 9851d7775 < Mareah/M 9853,9854d7776 < Marena/M < Maressa/M 9857,9858c7779 < Margalo/M < Margaret --- > Margaret/M 9864,9865c7785 < Margarette/M < Margarita --- > Margarita/M 9869d7788 < Margeaux/M 9872,9873d7790 < Margette/M < Margi/M 9885c7802 < Marian --- > Marian/M 9887c7804 < Mariann/M --- > Marianas/M 9889c7806 < Marianne --- > Marianne/M 9892d7808 < Maribelle/M 9894d7809 < Marice/M 9896d7810 < Maridel/M 9898,9899d7811 < Marieann/M < Mariejeanne/M 9901d7812 < Mariele/M 9903d7813 < Mariellen/M 9906,9908d7815 < Marigold/M < Marijn/M < Marijo/M 9911,9912d7817 < Marilin/M < Marillin/M 9914c7819 < Marin --- > Marin/M 9917d7821 < Marinna/M 9920c7824 < Mariquilla/M --- > Maris/M 9926,9927c7830 < Maritain < Maritsa --- > Maritain/M 9930,9931c7833 < Marius < Mariya/M --- > Marius/M 9934,9936d7835 < Marje/M < Marji/M < Marjie/M 9939d7837 < Marjy/M 9942,9943c7840 < Marketa/M < Markham --- > Markham/M 9945c7842,7843 < Markov --- > Markov/M > Marks/M 9948d7845 < Marlane/M 9950,9951c7847 < Marlborough < Marleah/M --- > Marlborough/M 9957,9958c7853 < Marlie/M < Marlin --- > Marlin/M 9963,9964c7858 < Marlowe < Marlyn/M --- > Marlowe/M 9967,9968c7861 < Marna/M < Marne --- > Marne/M 9971d7863 < Marnia/M 9973c7865 < Maronite --- > Maronite/M 9976c7868 < Marquette --- > Marquette/M 9978c7870 < Marquis --- > Marquis/M 9981d7872 < Marrilee/M 9984d7874 < Marrissa/M 9988c7878 < Marseille/S --- > Marseilles/M 9991d7880 < Marshal/M 9993,9994d7881 < Marsiella/M < Mart/MN 9996,10001c7883,7884 < Martainn/M < Martel < Martelle/M < Marten/M < Martguerita/M < Martha --- > Martel/M > Martha/M 10003d7885 < Marthena/M 10005c7887 < Martial --- > Martial/M 10007d7888 < Martica/M 10009c7890 < Martin --- > Martin/M 10014d7894 < Martita/M 10017,10018c7897 < Martynne/M < Marv/MN --- > Marv/M 10020d7898 < Marve/M 10022,10024c7900 < Marven/M < Marvin < Marwin/M --- > Marvin/M 10032d7907 < Maryanna/M 10034d7908 < Marybelle/M 10037,10039d7910 < Maryjane/M < Maryjo/M < Maryl/M 10041c7912 < Marylee/M --- > Marylander/M 10043d7913 < Marylinda/M 10045,10046d7914 < Marylynne/M < Maryrose/M 10048d7915 < Marysa/M 10051,10053c7918,7920 < Masaryk < Mascagni < Masefield --- > Masaryk/M > Mascagni/M > Masefield/M 10059c7926 < Masonic --- > Masonic/M 10062,10065c7929,7932 < Massachusetts < Massasoit < Massenet < Massey --- > Massachusetts/M > Massasoit/M > Massenet/M > Massey/M 10069a7937 > Masters/M 10071d7938 < Matelda/M 10074a7942 > Mather/M 10075a7944 > Mathews/M 10077,10078c7946 < Mathian/M < Mathias --- > Mathias/M 10081c7949 < Mathis --- > Mathis/M 10083c7951 < Matilda --- > Matilda/M 10085,10086c7953,7954 < Matisse < Matt --- > Matisse/M > Matt/M 10090,10091d7957 < Matthaeus/M < Mattheus/M 10093c7959,7960 < Matthias --- > Matthews/M > Matthias/M 10095,10096d7961 < Matthiew/M < Matthus/M 10104c7969 < Maugham --- > Maugham/M 10106c7971 < Maupassant --- > Maupassant/M 10108d7972 < Maure/M 10110,10113c7974,7975 < Maureene/M < Maurene/M < Mauriac < Maurice --- > Mauriac/M > Maurice/M 10117,10118d7978 < Maurise/M < Maurita/M 10120c7980 < Mauritanian/MS --- > Mauritanian/SM 10124d7983 < Maurizia/M 10127c7986 < Maurois --- > Maurois/M 10130c7989 < Mauser --- > Mauser/M 10132d7990 < Mavra/M 10134d7991 < Maxi/M 10136,10138c7993 < Maxim < Maximilian < Maximilianus/M --- > Maximilian/M 10142,10143c7997 < Maxwell < Maxy/M --- > Maxwell/M 10149c8003,8004 < Mayfair --- > Mayer/M > Mayfair/M 10153,10155c8008 < Maynord/M < Mayo < Mayor/M --- > Mayo/M 10157a8011 > Mays/M 10160c8014 < Mazarin --- > Mazarin/M 10162c8016 < Mazda --- > Mazda/M 10175c8029 < McCarthy --- > McCarthy/M 10180c8034 < McClellan --- > McClellan/M 10183,10184c8037,8038 < McCormick < McCoy --- > McCormick/M > McCoy/M 10221,10223c8075,8077 < Mead < Meade < Meadows --- > Mead/M > Meade/M > Meadows/M 10229,10230c8083 < Mechelle/M < Medan --- > Medan/M 10232,10233c8085,8086 < Medellin < Media --- > Medellin/M > Media/M 10236,10238c8089,8091 < Medici < Medina < Mediterranean/SM --- > Medici/M > Medina/M > Mediterranean/MS 10241c8094 < Meg/MN --- > Meg/M 10243,10244d8095 < Megen/M < Meggi/M 10246d8096 < Meggy/M 10248,10249d8097 < Meghann/M < Mehetabel/M 10254c8102 < Meir --- > Meir/M 10259d8106 < Melamie/M 10261c8108 < Melanesian --- > Melanesian/M 10264,10266c8111 < Melantha/M < Melany/M < Melba --- > Melba/M 10268,10269c8113,8114 < Melchior < Melchizedek --- > Melchior/M > Melchizedek/M 10271,10272d8115 < Melesa/M < Melessa/M 10276d8118 < Melinde/M 10279,10281d8120 < Melisandra/M < Melisenda/M < Melisent/M 10283d8121 < Melisse/M 10285d8122 < Melitta/M 10288d8124 < Mellicent/M 10290,10293c8126 < Mellisa/M < Mellisent/M < Mellon < Melloney/M --- > Mellon/M 10295d8127 < Melodee/M 10298d8129 < Melonie/M 10300d8130 < Melosa/M 10307c8137 < Memling --- > Memling/M 10309c8139 < Menander --- > Menander/M 10311,10312c8141,8142 < Mencius < Mencken --- > Mencius/M > Mencken/M 10315,10316c8145,8146 < Mendelian < Mendelssohn --- > Mendelian/M > Mendelssohn/M 10318d8147 < Mendie/M 10320,10321c8149 < Mendoza < Mendy/M --- > Mendoza/M 10324c8152 < Menes --- > Menes/M 10332,10333c8160,8161 < Menotti < Mensa --- > Menotti/M > Mensa/M 10336,10337c8164,8166 < Menzies < Mephistopheles --- > Menzies/M > Mephisto > Mephistopheles/M 10340,10341c8169,8170 < Mercator < Mercedes --- > Mercator/M > Mercedes/M 10344,10345c8173 < Mercia < Mercie/M --- > Mercia/M 10349,10355c8177 < Mercy/M < Meredeth/M < Meredith < Meredithe/M < Merell/M < Meridel/M < Meridith/M --- > Meredith/M 10357,10362c8179 < Merilee/M < Merill/M < Merilyn/M < Merino < Meris < Merissa/M --- > Merino/M 10364d8180 < Merla/M 10367,10374c8183,8184 < Merlina/M < Merline/M < Merlot < Merna/M < Merola/M < Merovingian < Merralee/M < Merrel/M --- > Merlot/M > Merovingian/M 10377d8186 < Merridie/M 10379,10382d8187 < Merrielle/M < Merrile/M < Merrilee/M < Merrili/M 10384c8189 < Merrily/M --- > Merrily's 10387c8192 < Merry/M --- > Merry's 10390c8195 < Merton --- > Merton/M 10396c8201 < Mesa --- > Mesa/M 10400c8205 < Mesolithic --- > Mesolithic/M 10405c8210 < Messiaen --- > Messiaen/M 10409d8213 < Messrs 10415,10416c8219,8220 < Methuselah < Metternich --- > Methuselah/M > Metternich/M 10419c8223 < Mexicali --- > Mexicali/M 10423c8227,8228 < Meyerbeer --- > Meyerbeer/M > Meyers/M 10427c8232 < MiG --- > MiG/M 10431d8235 < Mic 10433,10436c8237,8240 < Micah < Micawber < Mich < Michael --- > Micah/M > Micawber/M > Mich/M > Michael/M 10438,10440d8241 < Michaelina/M < Michaeline/M < Michaella/M 10444d8244 < Michale/M 10446d8245 < Micheil/M 10451d8249 < Michelina/M 10456c8254 < Michelson --- > Michelson/M 10458c8256 < Michigander/SM --- > Michigander/MS 10467c8265 < Micronesian --- > Micronesian/M 10470c8268 < Middleton --- > Middleton/M 10473,10474c8271 < Midge/M < Midland/S --- > Midland/MS 10477c8274 < Midwestern/R --- > Midwestern/MR 10479d8275 < Mignonne/M 10481,10482d8276 < Miguela/M < Miguelita/M 10484d8277 < Mikaela/M 10490d8282 < Mikol/M 10492d8283 < Mil/MY 10497,10498d8287 < Mildrid/M < Mile/SM 10499a8289 > Miles/M 10501,10503d8290 < Milicent/M < Milissent/M < Milka/M 10505c8292 < Mill/SR --- > Mill/SMR 10507,10508c8294,8296 < Millay < Millet --- > Millay/M > Miller/M > Millet/M 10512,10513c8300,8301 < Millikan < Millisent/M --- > Millikan/M > Mills/M 10515c8303 < Milne --- > Milne/M 10519,10523c8307,8309 < Milt/M < Miltiades < Miltie/M < Milton < Miltonic --- > Miltiades/M > Milton/M > Miltonic/M 10525d8310 < Milty/M 10527d8311 < Milzie/M 10530c8314 < Min/MR --- > Min/M 10534c8318 < Mindanao --- > Mindanao/M 10537d8320 < Miner/M 10539d8321 < Minetta/M 10540a8323 > Ming/M 10544d8326 < Minnaminnie/M 10550d8331 < Minni/M 10552d8332 < Minnnie/M 10556d8335 < Minor/M 10564c8343 < Minuit --- > Minuit/M 10567d8345 < Miquela/M 10570c8348 < Mirabeau --- > Mirabeau/M 10576,10577c8354 < Miranda < Mireielle/M --- > Miranda/M 10580d8356 < Mirelle/M 10583d8358 < Mirilla/M 10585c8360 < Miro --- > Miro/M 10589c8364 < Miskito --- > Miskito/M 10592c8367 < Mississauga --- > Mississauga/M 10598c8373 < Mistassini --- > Mistassini/M 10600d8374 < Misti 10604d8377 < Mitchael/M 10606c8379 < Mitchell --- > Mitchell/M 10614,10615c8387,8388 < Mixtec < Mizar --- > Mixtec/M > Mizar/M 10622d8394 < Mob 10626,10631c8398,8399 < Modesta/M < Modestia/M < Modestine/M < Modesto < Modesty/M < Modigliani --- > Modesto/M > Modigliani/M 10634c8402 < Mogadishu --- > Mogadishu/M 10639d8406 < Mohammed/M 10641c8408 < Mohammedanism/MS --- > Mohammedanism/SM 10643d8409 < Mohandis/M 10647d8412 < Mohican/MS 10650,10651c8415 < Moina/M < Moira --- > Moira/M 10652a8417 > Moises/M 10661c8426 < Molina --- > Molina/M 10663,10664d8427 < Mollee/M < Molli/M 10671c8434 < Moluccas --- > Moluccas/M 10673d8435 < Mommy/M 10678d8439 < Monah/M 10681c8442 < Mondrian --- > Mondrian/M 10684c8445 < Monet --- > Monet/M 10694,10695c8455,8456 < Monmouth < Monongahela --- > Monmouth/M > Monongahela/M 10701,10703c8462,8464 < Mont < Montague < Montaigne --- > Mont/M > Montague/M > Montaigne/M 10706c8467 < Montcalm --- > Montcalm/M 10708c8469 < Montenegrin --- > Montenegrin/M 10710,10713c8471,8474 < Monterrey < Montesquieu < Montessori < Monteverdi --- > Monterrey/M > Montesquieu/M > Montessori/M > Monteverdi/M 10716c8477 < Montgolfier --- > Montgolfier/M 10719c8480 < Monticello --- > Monticello/M 10722c8483 < Montrachet --- > Montrachet/M 10726,10727c8487,8488 < Moody < Moog --- > Moody/M > Moog/M 10731c8492 < Moore --- > Moore/M 10736,10737c8497,8498 < Moravia < Moravian --- > Moravia/M > Moravian/M 10740,10743c8501,8502 < Mordred < Mordy/M < More < Moreen/M --- > Mordred/M > More/M 10749,10750d8507 < Morganica/M < Morganne/M 10752d8508 < Morgun/M 10755d8510 < Morie/M 10758d8512 < Morissa/M 10761,10763c8515 < Morlee/M < Morley < Morly/M --- > Morley/M 10767c8519 < Moro --- > Moro/M 10770c8522 < Moroni --- > Moroni/M 10774,10775c8526,8527 < Morris < Morrison --- > Morris/M > Morrison/M 10777d8528 < Morry/M 10781,10782c8532 < Mortie/M < Mortimer --- > Mortimer/M 10788c8538 < Moseley --- > Moseley/M 10791a8542 > Moslem/M 10794c8545 < Mosul --- > Mosul/M 10798,10800c8549,8552 < Mott < Mount < Mountbatten --- > Mott/M > Moulton/M > Mount/M > Mountbatten/M 10802c8554 < Moussorgsky --- > Moussorgsky/M 10806d8557 < Moyna/M 10811,10812d8561 < Mozelle/M < Mozes/M 10814c8563 < Mozillian/SM --- > Mozillian/MS 10823,10825d8571 < Muffin/M < Mufi/M < Mufinella/M 10828c8574 < Muhammadan/SM --- > Muhammadan/MS 10830,10831c8576 < Muir < Muire/M --- > Muir/M 10838c8583 < Mullins --- > Mullins/M 10840,10841c8585,8586 < Multan < Multics/S --- > Multan/M > Multics 10843,10844c8588,8589 < Mumford < Munch --- > Mumford/M > Munch/M 10847d8591 < Munmro/M 10849c8593 < Munro --- > Munro/M 10851c8595 < Munster --- > Munster/M 10854c8598 < Murat --- > Murat/M 10857c8601 < Murdoch --- > Murdoch/M 10859,10860d8602 < Mureil/M < Murial/M 10862,10863c8604 < Murielle/M < Murillo --- > Murillo/M 10865,10866c8606,8607 < Murmansk < Murphy --- > Murmansk/M > Murphy/M 10869c8610 < Murrumbidgee --- > Murrumbidgee/M 10871d8611 < Murvyn/M 10881c8621 < Mussorgsky --- > Mussorgsky/M 10883,10884c8623,8624 < Muzak < My/M --- > Muzak/M > My's 10889,10890d8628 < Myca/M < Mycah/M 10892,10893c8630 < Mycenaean < Mychal/M --- > Mycenaean/M 10894a8632 > Myers/M 10897d8634 < Mylo/M 10899,10900d8635 < Myrah/M < Myranda/M 10903,10905d8637 < Myrilla/M < Myrle/M < Myrlene/M 10907,10911c8639 < Myron < Myrta/M < Myrtia/M < Myrtice/M < Myrtie/M --- > Myron/M 10913,10915c8641 < Myrvyn/M < Myrwyn/M < Mysore --- > Mysore/M 10916a8643 > Münchhausen/M 10919,10920c8646,8647 < NAACP < NAFTA --- > NAACP/M > NAFTA/M 10926,10927c8653,8654 < NBA < NBC --- > NBA/M > NBC/M 10930c8657 < NCAA --- > NCAA/M 10937,10938c8664,8665 < NFL < NGO/MS --- > NFL/M > NGO/SM 10940c8667 < NHL --- > NHL/M 10949c8676 < NPR --- > NPR/M 10953a8681 > NSA/M 10968c8696 < Nabokov --- > Nabokov/M 10970,10972c8698 < Nadean/M < Nadeen/M < Nader --- > Nader/M 10975d8700 < Nadiya/M 10977d8701 < Nady/M 10980,10982c8704,8706 < Nagoya < Nagpur < Nagy --- > Nagoya/M > Nagpur/M > Nagy/M 10984c8708 < Nahum --- > Nahum/M 10989d8712 < Nalani/M 10996,10997c8719 < Nanak < Nananne/M --- > Nanak/M 10999,11001c8721 < Nancee/M < Nancey/M < Nanchang --- > Nanchang/M 11003,11005c8723 < Nancie/M < Nancy < Nanete/M --- > Nancy/M 11008,11009d8725 < Nanice/M < Nanine/M 11011,11012d8726 < Nanking/MS < Nannette/M 11015d8728 < Nanny/M 11018c8731 < Nansen --- > Nansen/M 11021d8733 < Naoma/M 11023d8734 < Nap/M 11029,11031c8740 < Napoleonic < Nappie/M < Nappy/M --- > Napoleonic/M 11036d8744 < Nariko/M 11040c8748 < Narragansett --- > Narragansett/M 11042,11043c8750,8751 < Nash < Nashua --- > Nash/M > Nashua/M 11049,11050c8757 < Natal/M < Natala/M --- > Natal's 11052d8758 < Natalee/M 11055,11056d8760 < Natalina/M < Nataline/M 11058d8761 < Nataniel/M 11060,11061c8763 < Natassia/M < Natchez --- > Natchez/M 11063d8764 < Nathalia/M 11065c8766 < Nathan/S --- > Nathan/SM 11069c8770,8771 < Nathanil/M --- > Nathans/M > Nation/M 11073,11074c8775 < Natka/M < Natty/M --- > Natty's 11076c8777 < Naugahyde --- > Naugahyde/M 11078,11079c8779 < Nautilus < Navaho/M --- > Nautilus/M 11082c8782 < Navarre --- > Navarre/M 11086,11088c8786,8788 < Nazarene < Nazareth < Nazca --- > Nazarene/M > Nazareth/M > Nazca/M 11090d8789 < Naziism/SM 11099d8797 < Neala/M 11101,11103d8798 < Neall/M < Nealon/M < Nealson/M 11105,11106c8800,8801 < Neanderthal/MS < Neapolitan --- > Neanderthal/SM > Neapolitan/M 11111c8806 < Nebuchadnezzar --- > Nebuchadnezzar/M 11116d8810 < Neddie/M 11118d8811 < Nedi/M 11121,11122c8814 < Nefen/M < Nefertiti --- > Nefertiti/M 11129c8821,8822 < Nehemiah --- > Negros/M > Nehemiah/M 11132,11133d8824 < Neila/M < Neile/M 11135,11136d8825 < Neilla/M < Neille/M 11138,11139d8826 < Nelia/M < Nelie/M 11147c8834 < Nelson --- > Nelson/M 11150c8837 < Neogene --- > Neogene/M 11157c8844 < Nerf --- > Nerf/M 11159,11168c8846,8847 < Nerita/M < Nero < Neron/M < Nert/M < Nerta/M < Nerte/M < Nerti/M < Nertie/M < Nerty/M < Neruda --- > Nero/M > Neruda/M 11171,11172c8850 < Nesselrode < Nessi/M --- > Nesselrode/M 11174d8851 < Nessy/M 11179c8856 < Nestorius --- > Nestorius/M 11181,11182c8858,8860 < Netherlander/MS < Netherlands --- > Netflix/M > Netherlander/SM > Netherlands/M 11185d8862 < Netti/M 11187,11188d8863 < Nettle/M < Netty/M 11190,11191c8865,8866 < Nev < Neva --- > Nev/M > Neva/M 11200d8874 < Nevsa/M 11205c8879 < Newman --- > Newman/M 11207d8880 < Newsvine/M 11212c8885 < Nexis --- > Nexis/M 11214d8886 < Neysa/M 11217c8889 < Ni --- > Ni/M 11222,11223c8894,8895 < Nibelung < Nicaea --- > Nibelung/M > Nicaea/M 11228c8900 < Nicene --- > Nicene/M 11231c8903 < Nicholas --- > Nicholas/M 11233,11234c8905,8906 < Nicholle/M < Nicholson --- > Nichols/M > Nicholson/M 11237d8908 < Nickey/M 11240c8911 < Nicklaus --- > Nicklaus/M 11242,11244c8913 < Nickola/SM < Nickolai/M < Nickolaus/M --- > Nickolas/M 11248c8917 < Nicodemus --- > Nicodemus/M 11251c8920,8921 < Nicolai/S --- > Nicolai > Nicolas/M 11253d8922 < Nicolea/M 11255,11257c8924 < Nicoli/SM < Nicolina/M < Nicoline/M --- > Nicolis 11262,11263c8929,8930 < Niels/N < Nietzsche --- > Nielsen/M > Nietzsche/M 11271,11272c8938 < Nijinsky < Nikaniki/M --- > Nijinsky/M 11276c8942 < Nikkei --- > Nikkei/M 11278d8943 < Nikkie/M 11284,11287c8949 < Nikolayev < Nikoletta/M < Nikolia/M < Nikolos/M --- > Nikolayev/M 11289d8950 < Nil/SM 11290a8952 > Nils 11292,11293c8954,8955 < Nimitz < Nimrod --- > Nimitz/M > Nimrod/M 11295d8956 < Ninetta/M 11298,11299d8958 < Ninnetta/M < Ninnette/M 11301,11302c8960,8961 < Nintendo < Niobe --- > Nintendo/M > Niobe/M 11306c8965 < Nirvana --- > Nirvana/M 11308,11309c8967 < Nisei < Nissa/M --- > Nisei/M 11311,11313d8968 < Nisse/M < Nissie/M < Nissy/M 11318d8972 < Nixie 11320c8974 < Nkrumah --- > Nkrumah/M 11323d8976 < Noach/M 11325d8977 < Noak/M 11327,11329c8979 < Noami/M < Nobe/M < Nobel --- > Nobel/M 11331d8980 < Nobie/M 11333d8981 < Noby/M 11336,11338d8983 < Noelani/M < Noell/M < Noella/M 11340,11341d8984 < Noellyn/M < Noelyn/M 11343d8985 < Noh 11347d8988 < Nolana/M 11349d8989 < Nolie/M 11351,11353c8991 < Nollie/M < Nolly/M < Nome --- > Nome/M 11356d8993 < Nonah/M 11360d8996 < Nonnah/M 11366,11367d9001 < Norbie/M < Norby/M 11369d9002 < Norean/M 11371d9003 < Norene/M 11374,11376c9006 < Norina/M < Norine/M < Norma --- > Norma/M 11380,11383c9010 < Normie/M < Normy/M < Norplant < Norri/MS --- > Norplant/M 11385c9012 < Norry/M --- > Norris/M 11388c9015 < Norsemen --- > Norsemen/M 11391c9018 < Northampton --- > Northampton/M 11403c9030 < Norwich --- > Norwich/M 11405c9032 < Nostradamus --- > Nostradamus/M 11407c9034 < Nottingham --- > Nottingham/M 11411c9038 < Nova --- > Nova/M 11413d9039 < Novelia/M 11415c9041 < Novgorod --- > Novgorod/M 11418c9044 < Novokuznetsk --- > Novokuznetsk/M 11425,11427c9051,9053 < Nubia < Nubian < Nukualofa --- > Nubia/M > Nubian/M > Nukualofa/M 11432,11433c9058,9059 < Nuremberg < Nureyev --- > Nuremberg/M > Nureyev/M 11437d9062 < Nydia/M 11441,11452c9066,9077 < O'Brien < O'Casey < O'Connell < O'Connor < O'Donnell < O'Hara < O'Higgins < O'Keeffe < O'Neil < O'Neill < O'Rourke < O'Toole --- > O'Brien/M > O'Casey/M > O'Connell/M > O'Connor/M > O'Donnell/M > O'Hara/M > O'Higgins/M > O'Keeffe/M > O'Neil/M > O'Neill/M > O'Rourke/M > O'Toole/M 11463c9088 < OK/SM --- > OK/SMDG 11477,11478c9102,9103 < Oakley < Oates --- > Oakley/M > Oates/M 11481,11482c9106 < Obadiah < Obadias/M --- > Obadiah/M 11483a9108 > Obamacare 11485d9109 < Obediah/M 11487,11488c9111 < Oberon < Obidiah/M --- > Oberon/M 11490,11491c9113 < Oby/M < Occam --- > Occam/M 11493c9115 < Occidental/SM --- > Occidental/MS 11499c9121 < Octavia --- > Octavia/M 11504,11507d9125 < Ode/RM < Odele/M < Odelia/M < Odelinda/M 11509,11510d9126 < Odella/M < Odelle/M 11513,11514c9129 < Odets < Odetta/M --- > Odets/M 11516d9130 < Odey/M 11518,11519d9131 < Odilia/M < Odille/M 11527c9139 < Oedipal --- > Oedipal/M 11531,11532c9143 < Ofella/M < Offenbach --- > Offenbach/M 11534,11536c9145 < Ofilia/M < Ogbomosho < Ogdan/M --- > Ogbomosho/M 11538d9146 < Ogdon/M 11540c9148 < Oglethorpe --- > Oglethorpe/M 11545d9152 < Ojibway/MS 11547,11549c9154,9156 < Okeechobee < Okefenokee < Okhotsk --- > Okeechobee/M > Okefenokee/M > Okhotsk/M 11554,11555c9161,9162 < Oklahoman < Oktoberfest --- > Oklahoman/M > Oktoberfest/M 11558d9164 < Olag/M 11561c9167 < Oldenburg --- > Oldenburg/M 11565d9170 < Ole/MV 11568,11569d9172 < Olenka/M < Olenolin/M 11571d9173 < Olia/M 11576,11577c9178 < Olivero/M < Olivette/M --- > Oliver/M 11580,11582c9181 < Olivie/MR < Oliviero/M < Oliy/M --- > Olivier/M 11585c9184 < Olmec --- > Olmec/M 11589,11590d9187 < Olva/M < Olvan/M 11596,11597c9193,9194 < Olympic/S < Olympie/M --- > Olympic/SM > Olympics/M 11603c9200 < Omayyad --- > Omayyad/M 11605d9201 < Omero/M 11608,11609c9204 < Onassis < Ondrea/M --- > Onassis/M 11611c9206 < Onega --- > Onega/M 11614,11616d9208 < Onfre/M < Onfroi/M < Onida/M 11619d9210 < Onofredo/M 11628d9218 < Opalina/M 11631a9222 > OpenOffice/M 11633,11634c9224 < Ophelie/M < Ophiuchus --- > Ophiuchus/M 11639,11643d9228 < Oralee/M < Oralia/M < Oralie/M < Oralla/M < Oralle/M 11645c9230 < Orange --- > Orange/M 11648d9232 < Orbadiah/M 11656,11660d9239 < Orelee/M < Orelia/M < Orelie/M < Orella/M < Orelle/M 11662,11663c9241,9242 < Oreo < Orestes --- > Oreo/M > Orestes/M 11665c9244 < Orient --- > Orient/M 11680c9259 < Orphic --- > Orphic/M 11682d9260 < Orran/M 11685,11686d9262 < Orsa/M < Orsola/M 11689d9264 < Ortensia/M 11696,11697c9271,9272 < Orwell < Orwellian --- > Orwell/M > Orwellian/M 11698a9274 > Os/M 11703,11704c9279 < Osborne < Osbourn/M --- > Osborne/M 11707c9282 < Osceola --- > Osceola/M 11709c9284 < Oshawa --- > Oshawa/M 11718c9293 < Ostwald --- > Ostwald/M 11720,11725c9295 < Oswald < Oswell/M < Otes < Otha/M < Othelia/M < Othella/M --- > Oswald/M 11727,11728d9296 < Othilia/M < Othilie/M 11733,11735c9301,9303 < Otto < Ottoman < Ouagadougou --- > Otto/M > Ottoman/M > Ouagadougou/M 11737,11738c9305,9307 < Ovid < Owen/S --- > Ovid/M > Owen/SM > Owens/M 11741c9310 < Oxnard --- > Oxnard/M 11743c9312 < Oxus --- > Oxus/M 11745c9314 < Oz --- > Oz/M 11759a9329 > PCMCIA 11762,11763c9332,9333 < PDA/MS < PDF/MS --- > PDA/SM > PDF/SM 11769a9340 > PGP 11772c9343 < PLO --- > PLO/M 11786c9357 < PTA --- > PTA/M 11801d9371 < Packston/M 11803d9372 < Pacorro/M 11805,11808c9374 < Paddie/M < Paddy/M < Paderewski < Padget/M --- > Paderewski/M 11813,11815c9379,9380 < Padriac/M < Paganini < Page --- > Paganini/M > Page/M 11817c9382 < Pahlavi --- > Pahlavi/M 11819,11820c9384 < Pail/M < Paine --- > Paine/M 11824,11825c9388,9389 < Palau < Palembang --- > Palau/M > Palembang/M 11827,11828c9391,9392 < Paleogene < Paleolithic --- > Paleogene/M > Paleolithic/M 11833,11834c9397,9398 < Palestrina < Paley --- > Palestrina/M > Paley/M 11836c9400 < Palin/MS --- > Palin/M 11838,11841c9402,9404 < Pall/M < Palladio < Palm/MR < Palmerston --- > Palladio/M > Palmer/M > Palmerston/M 11848,11854c9411,9412 < Pamelina/M < Pamella/M < Pamirs < Pammi/M < Pammie/M < Pammy/M < Pampers --- > Pamirs/M > Pampers/M 11859d9416 < Panchito/M 11863c9420 < Pankhurst --- > Pankhurst/M 11865d9421 < Pansie/M 11867c9423 < Pantagruel --- > Pantagruel/M 11869c9425 < Pantheon --- > Pantheon/M 11874d9429 < Papagena/M 11877,11879c9432,9433 < Paquito/M < Paracelsus < Paraclete --- > Paracelsus/M > Paraclete/M 11882a9437 > Paralympic/S 11885a9441 > Paraná/M 11887c9443 < Pareto --- > Pareto/M 11890c9446 < Park/SR --- > Park/SMR 11891a9448 > Parker/M 11893,11894c9450,9453 < Parkman < Parliament --- > Parkman/M > Parks/M > Parliament/M > Parmenides 11897,11901c9456,9458 < Parnell < Parr < Parrish < Parrnell/M < Parry --- > Parnell/M > Parr/M > Parrish/M 11905c9462 < Parsons --- > Parsons/M 11914c9471 < Pasternak --- > Pasternak/M 11916c9473 < Pat/N --- > Pat/MN 11918c9475 < Patagonian --- > Patagonian/M 11922,11925c9479,9480 < Paterson < Patience/M < Patin/M < Patna --- > Paterson/M > Patna/M 11934,11935d9488 < Patrizio/M < Patrizius/M 11939c9492 < Patti --- > Patti/M 11941,11942c9494 < Pattin/M < Patton --- > Patton/M 11947d9498 < Pauletta/M 11949c9500 < Pauli --- > Pauli/M 11952,11953c9503,9504 < Pauline < Paulita/M --- > Pauline/M > Pauling/M 11956c9507 < Pavarotti --- > Pavarotti/M 11959d9509 < Pavla/M 11961,11962c9511,9512 < Pavlova < Pavlovian --- > Pavlova/M > Pavlovian/M 11964d9513 < Paxon/M 11974c9523 < Peale --- > Peale/M 11977d9525 < Pearla/M 11980d9527 < Pearline/M 11982,11984c9529,9530 < Peary < Pebrook/M < Pechora --- > Peary/M > Pechora/M 11994,11995d9539 < Peggi/M < Peggie/M 11997c9541 < Pei --- > Pei/M 12000c9544 < Pekinese/MS --- > Pekinese/M 12006a9551 > Pen/M 12009d9553 < Penelopa/M 12011c9555 < Penn --- > Penn/M 12014,12015d9557 < Penni/M < Pennie/M 12018c9560 < Pennsylvanian/SM --- > Pennsylvanian/MS 12030c9572 < Peoria --- > Peoria/M 12033d9574 < Pepillo/M 12036d9576 < Pepito/M 12038,12039c9578,9579 < Pepys < Pequot --- > Pepys/M > Pequot/M 12041,12043c9581,9583 < Percheron < Percival < Percy --- > Percheron/M > Percival/M > Percy/M 12047,12050c9587,9588 < Peria/M < Perice/M < Periclean < Pericles --- > Periclean/M > Pericles/M 12051a9590 > Perkins/M 12058d9596 < Pernell/M 12060c9598 < Peron --- > Peron/M 12062,12063c9600,9601 < Perren/M < Perri/M --- > Perri/MR > Perrier/M 12065,12066c9603,9604 < Perry/R < Perseid --- > Perry/M > Perseid/M 12070c9608 < Pershing --- > Pershing/M 12077,12078c9615 < Peshawar < Pet --- > Peshawar/M 12083a9621 > Peters/MN 12086d9623 < Peterus/M 12089c9626 < Petra --- > Petra/M 12091d9627 < Petrina/M 12093d9628 < Petronia/M 12095d9629 < Petronille/M 12097d9630 < Petunia/M 12099d9631 < Peyter/M 12104c9636 < Phaedra --- > Phaedra/M 12106,12107c9638 < Phaidra/M < Phanerozoic --- > Phanerozoic/M 12114d9644 < Phedra/M 12116d9645 < Phelia/M 12118,12119c9647,9648 < Phidias < Phil/Y --- > Phidias/M > Phil/MY 12121d9649 < Philbert/M 12123,12125c9651,9652 < Philemon < Philip/S < Philipa/M --- > Philemon/M > Philip/MS 12128c9655 < Philippians --- > Philippians/M 12129a9657 > Philippines/M 12131,12132c9659 < Philis/M < Philistine --- > Philistine/M 12134,12135c9661 < Phillie/M < Phillip/S --- > Phillip/SM 12138c9664 < Phillipp/M --- > Phillips/M 12143d9668 < Phip/M 12145c9670 < Phobos --- > Phobos/M 12150,12152c9675 < Photoshop/MS < Photoshopped < Photoshopping --- > Photoshop/M 12157d9679 < Phylis/M 12160,12161d9681 < Phyllys/M < Phylys/M 12167c9687 < Piccadilly --- > Piccadilly/M 12169c9689 < Pickett --- > Pickett/M 12172c9692 < Pict --- > Pict/M 12175d9694 < Pier/M 12177d9695 < Pierette/M 12184d9701 < Pietrek/M 12186,12187d9702 < Piggy/M < Pigmy/SM 12189,12191c9704,9707 < Pilate/S < Pilcomayo < Pilgrim/S --- > Pilate/MS > Pilates/M > Pilcomayo/M > Pilgrim/SM 12194d9709 < Pincas/M 12198c9713 < Pinkerton --- > Pinkerton/M 12201c9716 < Pinter --- > Pinter/M 12204,12205d9718 < Pip/MR < Piper/M 12208,12212c9721,9723 < Pippo/M < Pippy/M < Piraeus < Pirandello < Pisa --- > Piraeus/M > Pirandello/M > Pisa/M 12214c9725 < Pisistratus --- > Pisistratus/M 12217c9728 < Pitt/S --- > Pitt/SM 12218a9730 > Pitts/M 12221c9733 < Pizarro --- > Pizarro/M 12225c9737 < Planck --- > Planck/M 12230c9742 < Plath --- > Plath/M 12243c9755 < Pliny --- > Pliny/M 12252c9764,9765 < Podgorica --- > Poconos/M > Podgorica/M 12254,12255c9767,9768 < Podunk < Poe --- > Podunk/M > Poe/M 12257a9771 > Poincaré/M 12263c9777,9778 < Pol/Y --- > Pokémon/M > Pol/MY 12270c9785 < Politburo --- > Politburo/M 12273c9788 < Pollock --- > Pollock/M 12276c9791 < Pollyanna --- > Pollyanna/M 12282,12283c9797,9798 < Polyphemus < Pomerania --- > Polyphemus/M > Pomerania/M 12285,12286c9800,9801 < Pomona < Pompadour --- > Pomona/M > Pompadour/M 12290,12291c9805,9806 < Ponce < Pontchartrain --- > Ponce/M > Pontchartrain/M 12293c9808 < Pontianak --- > Pontianak/M 12296,12297c9811,9812 < Poona < Pope --- > Poona/M > Pope/M 12299c9814 < Popocatepetl --- > Popocatepetl/M 12302,12303c9817 < Poppy/M < Popsicle --- > Popsicle/M 12307c9821,9822 < Port/R --- > Port/MR > Porter/M 12309d9823 < Portie/M 12312c9826 < Portsmouth --- > Portsmouth/M 12315d9828 < Porty/M 12320c9833 < Potemkin --- > Potemkin/M 12322c9835 < Potsdam --- > Potsdam/M 12324c9837 < Potter --- > Potter/M 12327,12328c9840,9841 < Pound < Poussin --- > Pound/M > Poussin/M 12329a9843 > PowerPC/M 12331c9845 < Powers --- > Powers/M 12335c9849 < Pr/MN --- > Pr/M 12338c9852 < Praetorian --- > Praetorian/M 12341c9855 < Prakrit --- > Prakrit/M 12345c9859 < Praxiteles --- > Praxiteles/M 12350d9863 < Pren/M 12352d9864 < Prent/M 12356,12357c9868,9869 < Presbyterian/MS < Presbyterianism/SM --- > Presbyterian/SM > Presbyterianism/MS 12359,12361c9871,9872 < President/SM < Presley < Preston --- > Presley/M > Preston/M 12365,12366c9876,9877 < Price < Priestley --- > Price/M > Priestley/M 12369d9879 < Principal 12374d9883 < Priscella/M 12377d9885 < Prissie/M 12382c9890 < Procrustean --- > Procrustean/M 12388,12389c9896,9897 < Prokofiev < Promethean --- > Prokofiev/M > Promethean/M 12394c9902 < Protagoras --- > Protagoras/M 12397c9905 < Protestantism/MS --- > Protestantism/SM 12399c9907 < Proudhon --- > Proudhon/M 12402a9911 > Provençal/M 12404,12405c9913,9914 < Providence/MS < Provo --- > Providence/SM > Provo/M 12410d9918 < Prudi/M 12416c9924 < Prut --- > Prut/M 12419c9927 < Psalms --- > Psalms/M 12421c9929 < Pseudomonas/MS --- > Pseudomonas/M 12425c9933 < Ptolemaic --- > Ptolemaic/M 12429,12430c9937,9938 < Puccini < Puck --- > Puccini/M > Puck/M 12432,12434c9940,9942 < Puebla < Pueblo < Puff/M --- > Puebla/M > Pueblo/M > Puerto 12437,12438c9945,9946 < Pulaski < Pulitzer --- > Pulaski/M > Pulitzer/M 12440c9948 < Punch --- > Punch/M 12444,12445c9952,9953 < Purana < Purcell --- > Purana/M > Purcell/M 12450,12451c9958,9959 < Puritan < Puritanism/SM --- > Puritan/M > Puritanism/MS 12454,12455c9962,9963 < Pusey < Pushkin --- > Pusey/M > Pushkin/M 12458,12459c9966 < Putnam < Putnem/M --- > Putnam/M 12465c9972 < Pym --- > Pym/M 12471c9978 < Pyrrhic --- > Pyrrhic/M 12473,12474c9980,9981 < Pythagorean < Pythias --- > Pythagorean/M > Pythias/M 12475a9983,9984 > Pétain/M > Pôrto/M 12476a9986 > QA 12487c9997 < Qingdao --- > Qingdao/M 12494c10004 < Quasimodo --- > Quasimodo/M 12500c10010 < Quebecois --- > Quebecois/M 12502c10012 < Queen/S --- > Queen/MS 12508d10017 < Querida/M 12513d10021 < Quill/M 12518c10026 < Quinn --- > Quinn/M 12523d10030 < Quintilla/M 12525d10031 < Quintina/M 12528c10034 < Quirinal --- > Quirinal/M 12531c10037 < Quixote --- > Quixote/M 12533,12534c10039,10040 < Qumran < Quonset --- > Qumran/M > Quonset/M 12535a10042,10045 > Qur'anic > Quran > Quranic > Québecois/M 12537c10047 < R/MGD --- > R/MD 12553a10064 > RISC 12565c10076 < RTFM/GSD --- > RTFM 12570d10080 < Rabbi/M 12572c10082 < Rabelaisian --- > Rabelaisian/M 12577d10086 < Rachele/M 12579c10088 < Rachmaninoff --- > Rachmaninoff/M 12581d10089 < Rad/M 12583,12584d10090 < Raddie/M < Raddy/M 12586d10091 < Raeann/M 12590,12594d10094 < Rafaela/M < Rafaelia/M < Rafaelita/M < Rafaellle/M < Rafaello/M 12598d10097 < Raffarty/M 12604c10103 < Rahal/M --- > Ragnarök/M 12612,12613c10111 < Rainier < Rakel/M --- > Rainier/M 12616d10113 < Ralina/M 12618d10114 < Ram 12622c10118 < Ramakrishna --- > Ramakrishna/M 12624c10120 < Ramayana --- > Ramayana/M 12630,12633c10126,10128 < Ramonda/M < Ramos < Ramsay < Ramses --- > Ramos/M > Ramsay/M > Ramses/M 12637,12638c10132 < Rancell/M < Rand --- > Rand/M 12642d10135 < Randee/M 12644d10136 < Randene/M 12646,12647d10137 < Randie/M < Randolf/M 12650d10139 < Ranee/M 12653,12656c10142 < Rania/M < Ranice/M < Ranique/M < Rankin --- > Rankin/M 12658,12660d10143 < Ranna/M < Ransell/M < Ransom/M 12662,12663c10145,10146 < Raphael < Raphaela/M --- > Raphael/M > Rappaport/M 12666d10148 < Raquela/M 12669,12670d10150 < Rasia/M < Rasla/M 12672c10152,10153 < Rasputin --- > Rasputin/M > Rasta 12674c10155,10156 < Rastafarian/M --- > Rastafarian/MS > Rastafarianism 12678,12679c10160 < Ravel < Raven/M --- > Ravel/M 12683c10164 < Rawalpindi --- > Rawalpindi/M 12685c10166 < Ray --- > Ray/M 12688d10168 < Raychel/M 12690c10170 < Rayleigh --- > Rayleigh/M 12695,12696d10174 < Raynard/M < Raynell/M 12699d10176 < Rayshell/M 12704,12705c10181 < Read/GM < Reade --- > Reade/G 12709,12711c10185 < Reagen/M < Realtor < Reamonn/M --- > Realtor/M 12714,12715d10187 < Rebbecca/M < Rebe/M 12717c10189 < Rebecca/M --- > Rebecca's 12719,12721c10191 < Rebeka/M < Rebekah < Rebekkah/M --- > Rebekah/M 12726d10195 < Reddit/M 12730c10199 < Redmond --- > Redmond/M 12732d10200 < Reeba/M 12738,12740c10206 < Reeta/M < Reeva/M < Reeves --- > Reeves/M 12743d10208 < Reg/N 12746d10210 < Reggi/MS 12748d10211 < Reggy/M 12750c10213 < Reginae --- > Reginae/M 12752d10214 < Reginauld/M 12756c10218 < Rehnquist --- > Rehnquist/M 12758,12760c10220,10221 < Reid/R < Reidar/M < Reider/M --- > Reichstag's > Reid/M 12764,12765c10225 < Reinald/M < Reinaldo/SM --- > Reinaldo/M 12768c10228 < Reinhardt --- > Reinhardt/M 12770,12773c10230 < Reinold/M < Reinwald/M < Rem/M < Remanence/S --- > Remanence 12775c10232 < Remarque --- > Remarque/M 12777c10234 < Remington --- > Remington/M 12781d10237 < Renado/M 12794,12795d10249 < Renell/M < Renelle/M 12799c10253 < Renoir --- > Renoir/M 12809,12813c10263,10265 < Retha/M < Reube/M < Reuben < Reunion < Reuters --- > Reuben/M > Reunion/M > Reuters/M 12819c10271,10272 < Revere --- > Revelations/M > Revere/M 12821d10273 < Revkah/M 12823c10275 < Rex --- > Rex/M 12825c10277 < Reyes --- > Reyes/M 12830a10283 > Reynolds/M 12833,12835c10286,10287 < Rhea < Rheba/M < Rhee --- > Rhea/M > Rhee/M 12837,12838c10289 < Rhenish < Rheta/M --- > Rhenish/M 12840,12841d10290 < Rhetta/M < Rhiamon/M 12844d10292 < Rhianon/M 12849,12850c10297,10298 < Rhode < Rhodes --- > Rhode/S > Rhodes/M 12853,12855d10300 < Rhodia/M < Rhodie/M < Rhody/M 12860,12863c10305 < Riane/M < Riannon/M < Rianon/M < Ribbentrop --- > Ribbentrop/M 12867,12868c10309 < Ricardo < Ricca/M --- > Ricardo/M 12870c10311 < Rice --- > Rice/M 12872,12874c10313,10315 < Richard/S < Richardo/M < Richardson --- > Richard/MS > Richards/M > Richardson/M 12879,12883c10320,10321 < Richmound/M < Richter < Richthofen < Richy/M < Rici/M --- > Richter/M > Richthofen/M 12891c10329 < Rickover --- > Rickover/M 12894d10331 < Ricoriki/M 12896c10333 < Ride --- > Ride/M 12910,12912c10347,10349 < Riley < Rilke < Rimbaud --- > Riley/M > Rilke/M > Rimbaud/M 12915d10351 < Ring/M 12919d10354 < Riobard/M 12921,12922c10356,10357 < Rip/M < Ripley --- > Rios/M > Ripley/M 12924c10359 < Risorgimento --- > Risorgimento/M 12930,12932c10365,10367 < Rivalee/M < Rivera < Rivers --- > Rivas/M > Rivera/M > Rivers/M 12934d10368 < Rivi/M 12936,12937d10369 < Rivkah/M < Rivy/M 12939c10371 < Rizal --- > Rizal/M 12942,12944d10373 < Roana/M < Roanna/M < Roanne/M 12947c10376 < Rob/MZ --- > Rob/M 12949,12950d10377 < Robbert/M < Robbi/M 12952a10380 > Robbins/M 12954,12957d10381 < Robbyn/M < Robena/M < Robenia/M < Robers/M 12961a10386 > Roberts/M 12963,12964c10388,10389 < Robeson < Robespierre --- > Robeson/M > Robespierre/M 12968,12969d10392 < Robinett/M < Robinetta/M 12972c10395 < Robinson --- > Robinson/M 12975c10398 < Robson --- > Robson/M 12984,12985d10406 < Rochell/M < Rochella/M 12988,12993c10409,10411 < Rochette/M < Rock < Rockefeller < Rockey/M < Rockford < Rockie/M --- > Rock/M > Rockefeller/M > Rockford/M 12996c10414 < Rockwell --- > Rockwell/M 13002d10419 < Roddie/M 13005d10421 < Roderich/M 13008d10423 < Rodge/MZR 13009a10425 > Rodgers/M 13012,13015c10428,10429 < Rodie/M < Rodin < Rodina/M < Rodney --- > Rodin/M > Rodney/M 13022d10435 < Rodrique/M 13028c10441,10442 < Rogerio/M --- > Roger/M > Rogers/M 13031a10446 > Roku/M 13033c10448 < Roland --- > Roland/M 13037d10451 < Roley/M 13040,13041c10454,10455 < Rolland < Rollerblade --- > Rolland/M > Rollerblade/M 13043a10458 > Rollins/M 13045c10460 < Rolodex --- > Rolodex/M 13055c10470 < Romano --- > Romano/M 13057c10472,10473 < Romansh --- > Romans/M > Romansh/M 13062c10478 < Romeo --- > Romeo/M 13065c10481 < Romney --- > Romney/M 13067,13068d10482 < Romona/M < Romonda/M 13074d10487 < Ronalda/M 13076,13077d10488 < Ronica/M < Ronna/M 13079d10489 < Ronnica/M 13084,13085d10493 < Roobbie/M < Roomba/MS 13090,13092d10497 < Rora/M < Rori/M < Rorie/M 13094c10499 < Rorschach --- > Rorschach/M 13098,13100d10502 < Rosabel/M < Rosabella/M < Rosabelle/M 13107d10508 < Rosalinde/M 13110d10510 < Rosalynd/M 13113d10512 < Rosana/M 13116c10515 < Rosario --- > Rosario/M 13121d10519 < Roseanna/M 13125,13127d10522 < Roselia/M < Roselin/M < Roseline/M 13130d10524 < Rosemaria/M 13133d10526 < Rosemonde/M 13136d10528 < Rosene/M 13138,13141c10530,10531 < Rosetta < Rosette/M < Roshelle/M < Rosicrucian --- > Rosetta/M > Rosicrucian/M 13146d10535 < Rosmunda/M 13151,13152c10540 < Rossy/M < Rostand --- > Rostand/M 13156c10544 < Rosy/M --- > Rosy's 13159,13160c10547,10548 < Rothko < Rothschild --- > Rothko/M > Rothschild/M 13163c10551 < Rouault --- > Rouault/M 13167d10554 < Rouvin/M 13169c10556 < Row/MN --- > Rover/M 13171c10558 < Rowe --- > Rowe/M 13176d10562 < Rowney/M 13181d10566 < Roxi/M 13183d10567 < Roxine/M 13186c10570 < Royal --- > Royal/M 13188c10572 < Royce --- > Royce/M 13190,13197d10573 < Rozalie/M < Rozalin/M < Rozamond/M < Rozanna/M < Rozanne/M < Roze/M < Rozele/M < Rozella/M 13199,13200d10574 < Rozina/M < Rriocard/M 13205d10578 < Rube/M 13207c10580 < Rubetta/M --- > Rubens/M 13211d10583 < Rubie/M 13214,13215c10586 < Rubina/M < Rubinstein --- > Rubinstein/M 13219,13221c10590 < Ruddie/M < Ruddy/M < Rudie/M --- > Ruddy's 13223c10592 < Rudolf --- > Rudolf/M 13235d10603 < Rumania/M 13239,13240c10607,10608 < Runnymede < Runyon --- > Runnymede/M > Runyon/M 13242,13243d10609 < Ruperta/M < Ruperto/M 13249,13250c10615,10616 < Ruskin < Russ --- > Ruskin/M > Russ/M 13257d10622 < Rustie/M 13261a10627 > Rutgers/M 13263,13267c10629 < Ruthann/M < Ruthanne/M < Ruthe/M < Rutherford < Ruthi/M --- > Rutherford/M 13269d10630 < Ruthy/M 13272d10632 < Ruttger/M 13280,13281d10639 < Ryann/M < Rycca/M 13283,13285c10641 < Ryder < Ryley/M < Ryon/M --- > Ryder/M 13287,13288c10643 < Ryun/M < S/MNY --- > S/MN 13304c10659 < SEC --- > SEC/M 13311c10666 < SNP/MS --- > SNP/SM 13318a10674 > SQL 13329c10685 < SUSE --- > SUSE/M 13330a10687 > SVN/M 13335,13336c10692,10693 < Saar < Saarinen --- > Saar/M > Saarinen/M 13342c10699 < Sabin --- > Sabin/M 13345d10701 < Sabra 13348c10704 < Sacajawea --- > Sacajawea/M 13355c10711 < Sadat --- > Sadat/M 13357c10713 < Sadducee --- > Sadducee/M 13359d10714 < Sadella/M 13362,13363c10717 < Sadye/M < Safavid --- > Safavid/M 13370,13371c10724 < Sahel < Saidee/M --- > Sahel/M 13374c10727 < Sakai --- > Sakai/M 13377c10730 < Sakharov --- > Sakharov/M 13379,13384c10732,10736 < Saks < Sal/Y < Saladin < Salado < Salaidh/M < Salamis --- > Saks/M > Sal/MY > Saladin/M > Salado/M > Salamis/M 13391,13392c10743,10744 < Salinas < Salinger --- > Salinas/M > Salinger/M 13395c10747 < Salk --- > Salk/M 13397d10748 < Salli/M 13399c10750 < Sallust --- > Sallust/M 13401,13404d10751 < Sallyann/M < Sallyanne/M < Salmon/M < Saloma/M 13406,13407d10752 < Salomi/M < Salomo/M 13409d10753 < Salomone/M 13417d10760 < Salvidor/M 13420c10763 < Sam --- > Sam/M 13423c10766 < Samara --- > Samara/M 13434c10777 < Samson --- > Samson/M 13437,13438c10780 < Samuel < Samuele/M --- > Samuel/M 13440d10781 < San 13441a10783 > San/M 13446,13449c10788,10791 < Sand/Z < Sandburg < Sande/MZR < Sander/M --- > Sand/ZM > Sandburg/M > Sande/M > Sanders/M 13453c10795 < Sandinista --- > Sandinista/M 13459d10800 < Sandye/M 13461c10802 < Sanforized --- > Sanforized/M 13463c10804,10805 < Sanhedrin --- > Sanger/M > Sanhedrin/M 13469c10811 < Santa --- > Santa/M 13471,13472c10813,10814 < Santayana < Santeria --- > Santayana/M > Santeria/M 13474c10816 < Santos --- > Santos/M 13476d10817 < Sapphire/M 13480d10820 < Saraann/M 13483,13484c10823 < Sarah < Sarajane/M --- > Sarah/M 13493,13495d10831 < Sarena/M < Sarene/M < Sarette/M 13498c10834 < Sargent --- > Sargent/M 13500d10835 < Sari/M 13502d10836 < Sarine/M 13506,13507c10840,10841 < Sarto < Sartre --- > Sarto/M > Sartre/M 13510d10843 < Sashenka/M 13515,13516c10848,10849 < Sassanian < Sassoon --- > Sassanian/M > Sassoon/M 13525d10857 < Saudra/M 13527,13528c10859 < Sauncho/M < Saunder/MS --- > Saunders/M 13531,13532c10862,10863 < Saussure < Sauterne/MS --- > Saussure/M > Sauternes 13534c10865 < Savage --- > Savage/M 13538,13539c10869,10870 < Savonarola < Savoy --- > Savonarola/M > Savoy/M 13541d10871 < Saw/M 13543,13544d10872 < Sawyere/M < Sax 13548d10875 < Say/MRZ 13550c10877,10878 < Sayre/MS --- > Sayers/M > Sayre/M 13552a10881 > Scala/M 13555,13557c10884,10886 < Scandinavian/SM < Scaramouch < Scarborough --- > Scandinavian/MS > Scaramouch/M > Scarborough/M 13559,13560c10888 < Scarlatti < Scarlet/M --- > Scarlatti/M 13565c10893 < Schelling --- > Schelling/M 13569c10897 < Schiller --- > Schiller/M 13572c10900 < Schliemann --- > Schliemann/M 13574,13575c10902,10903 < Schmidt < Schnabel --- > Schmidt/M > Schnabel/M 13579c10907 < Schopenhauer --- > Schopenhauer/M 13583c10911,10912 < Schubert --- > Schrödinger/M > Schubert/M 13586c10915 < Schumann --- > Schumann/M 13594c10923 < Schweitzer --- > Schweitzer/M 13597a10927 > Scientologist/SM 13607c10937 < Scotchmen --- > Scotchmen/M 13609c10939,10940 < Scotchwomen --- > Scotchwomen/M > Scotia/M 13612c10943 < Scotsmen --- > Scotsmen/M 13614,13615c10945,10946 < Scotswomen < Scott --- > Scotswomen/M > Scott/M 13619,13621c10950 < Scottsdale < Scotty < Scout --- > Scottsdale/M 13623,13624c10952,10953 < Scranton < Scriabin --- > Scranton/M > Scriabin/M 13627c10956 < Scrooge --- > Scrooge/M 13629c10958 < Scud --- > Scud/M 13632,13634c10961,10963 < Scythia < Scythian < Se/MH --- > Scythia/M > Scythian/M > Se/MHN 13636c10965 < Seaborg --- > Seaborg/M 13640d10968 < Seana/M 13650d10977 < Secunia/M 13653d10979 < See/M 13654a10981 > Seeger/M 13663d10989 < Seka/M 13670,13671c10996 < Selestina/M < Seleucid --- > Seleucid/M 13673,13674d10997 < Selia/M < Selie/M 13678,13680c11001 < Selinda/M < Seline/M < Seljuk --- > Seljuk/M 13687c11008 < Semarang --- > Semarang/M 13689c11010 < Semiramis --- > Semiramis/M 13692c11013 < Semtex --- > Semtex/M 13695,13696c11016 < Senator < Sendai --- > Sendai/M 13700,13702c11020,11022 < Senghor < Senior < Sennacherib --- > Senghor/M > Senior/M > Sennacherib/M 13706,13707c11026,11027 < Sephardi < Sephira/M --- > Sep > Sephardi/M 13711,13712c11031,11032 < Septuagint/SM < Sequoya --- > Septuagint/MS > Sequoya/M 13717d11036 < Serene 13719,13720d11037 < Serge/M < Sergeant/M 13724c11041 < Serpens --- > Serpens/M 13729,13732c11046,11048 < Seton < Seumas/M < Seurat < Seuss --- > Seton/M > Seurat/M > Seuss/M 13734,13735c11050,11051 < Severn < Severus --- > Severn/M > Severus/M 13737,13739c11053,11055 < Sevres < Seward < Sextans --- > Sevres/M > Seward/M > Sextans/M 13742c11058 < Seyfert --- > Seyfert/M 13745,13747c11061 < Shackleton < Shadow/M < Shae/M --- > Shackleton/M 13749,13750d11062 < Shaina/M < Shaine/M 13754,13757c11066,11067 < Shakespearean < Shalna/M < Shalne/M < Shalom/M --- > Shakespearean/M > Shalom's 13760,13765d11069 < Shanan/M < Shanda/M < Shandee/M < Shandeigh/M < Shandie/M < Shandra/M 13770d11073 < Shanie/M 13773,13777c11076 < Shannah/M < Shannan/M < Shannen/M < Shannon < Shanon/M --- > Shannon/M 13779,13780c11078 < Shantee/M < Shantung --- > Shantung/M 13783d11080 < Sharai/M 13785,13787c11082,11083 < Shari < Shari'a < Sharia/M --- > Shari'a/M > Shari/M 13789,13792d11084 < Sharity/M < Sharl/M < Sharla/M < Sharleen/M 13794d11085 < Sharline/M 13796,13797c11087 < Sharon < Sharona/M --- > Sharon/M 13801d11090 < Sharyl/M 13803d11091 < Shaughn/M 13813d11100 < Shay/M 13815,13817d11101 < Shaylah/M < Shaylyn/M < Shaylynn/M 13822c11106 < Sheba --- > Sheba/M 13825,13826d11108 < Sheelagh/M < Sheelah/M 13828d11109 < Sheeree/M 13830,13831d11110 < Sheff/M < Sheffie/M 13833d11111 < Sheffy/M 13837d11114 < Shela/M 13839,13840d11115 < Shelba/M < Shelbi/M 13842d11116 < Shelden/M 13846,13848c11120 < Shelley < Shelli/M < Shellie/M --- > Shelley/M 13853,13854c11125 < Shena/M < Shenandoah --- > Shenandoah/M 13857c11128 < Sheol --- > Sheol/M 13862d11132 < Shepperd/M 13868,13874c11138,11139 < Sheridan < Sherie/M < Sherill/M < Sherilyn/M < Sherline/M < Sherlock < Sherlocke/M --- > Sheridan/M > Sherlock/M 13876,13879c11141,11142 < Sherman < Shermie/M < Shermy/M < Sherpa --- > Sherman/M > Sherpa/M 13884,13886c11147 < Sherwood < Sherwynd/M < Sherye/M --- > Sherwood/M 13888a11150 > Shetlands/M 13891c11153 < Shi'ite --- > Shi'ite/M 13894c11156 < Shijiazhuang --- > Shijiazhuang/M 13896c11158 < Shillong --- > Shillong/M 13905,13907d11166 < Shirlee/M < Shirleen/M < Shirlene/M 13909d11167 < Shirline/M 13913d11170 < Shopzilla/M 13915c11172 < Shorthorn --- > Shorthorn/M 13917d11173 < Shoshanna/M 13919d11174 < Shoshoni/SM 13922,13924c11177,11179 < Shreveport < Shriner < Shropshire --- > Shreveport/M > Shriner/M > Shropshire/M 13926,13929c11181 < Shurlock/M < Shurlocke/M < Shurwood/M < Shylock --- > Shylock/M 13931c11183 < Si --- > Si/M 13935,13936d11186 < Siana/M < Sianna/M 13938,13944c11188 < Sibbie/M < Sibby/M < Sibeal/M < Sibel/M < Sibelius < Sibella/M < Sibelle/M --- > Sibelius/M 13947d11190 < Sibilla/M 13949c11192 < Sibyl --- > Sibyl/M 13956,13958c11199 < Sidnee/M < Sidney < Sidoney/M --- > Sidney/M 13960,13962c11201,11202 < Sidonnie/M < Siegfried < Siemens --- > Siegfried/M > Siemens/M 13965d11204 < Siffre/M 13967,13969d11205 < Sigfrid/M < Sigfried/M < Sigismond/M 13971,13973c11207,11208 < Sigismund < Sigismundo/M < Sigmund --- > Sigismund/M > Sigmund/M 13975,13976c11210 < Sigurd < Sigvard/M --- > Sigurd/M 13981,13983c11215,11217 < Sikkim < Sikkimese < Sikorsky --- > Sikkim/M > Sikkimese/M > Sikorsky/M 13985,13986d11218 < Sile/M < Sileas/M 13990d11221 < Silvain/M 13999c11230 < Sim/SM --- > Sim's 14002c11233 < Simmental --- > Simmental/M 14005c11236 < Simon --- > Simon/M 14008,14009d11238 < Simonette/M < Simonne/M 14011c11240,11241 < Sims --- > Simpsons/M > Sims/M 14013,14015c11243,11245 < Sinatra < Sinclair < Sinclare/M --- > Sinatra/M > Sinbad/M > Sinclair/M 14017d11246 < Sindee/M 14021c11250 < Singer --- > Singer/M 14027d11255 < Sion 14029d11256 < Siouxie/M 14032,14033d11258 < Sisely/M < Sisile/M 14035d11259 < Sissy/M 14037,14038c11261,11262 < Sistine < Sisyphean --- > Sistine/M > Sisyphean/M 14040d11263 < Siusan/M 14045d11267 < Skell/M 14048,14051d11269 < Skip/M < Skipp/MR < Skipper/M < Skippie/M 14054,14056c11272,11273 < Skopje < Sky/M < Skye --- > Skopje/M > Skye/M 14069c11286 < Sloan --- > Sloan/M 14073c11290 < Slovakia --- > Slovakia/M 14079c11296 < Sly/M --- > Sly's 14082c11299 < Smetana --- > Smetana/M 14084,14085c11301,11302 < Smith < Smithson --- > Smith/M > Smithson/M 14089,14091c11306,11308 < Smolensk < Smollett < Smuts --- > Smolensk/M > Smollett/M > Smuts/M 14101,14102c11318,11319 < Snow < Snowbelt --- > Snow/M > Snowbelt/M 14109,14110c11326,11327 < Socratic < Soddy --- > Socratic/M > Soddy/M 14114c11331 < Soho --- > Soho/M 14118d11334 < Sollie/M 14120,14122c11336,11338 < Solomon < Solon < Solzhenitsyn --- > Solomon/M > Solon/M > Solzhenitsyn/M 14130c11346 < Sondheim --- > Sondheim/M 14137,14139d11352 < Sonni/M < Sonnie/M < Sonnnie/M 14145d11357 < Sophey/M 14147c11359 < Sophia --- > Sophia/M 14149,14150c11361,11362 < Sophoclean < Sophocles --- > Sophoclean/M > Sophocles/M 14156d11367 < Sosanna/M 14158a11370 > Sourceforge/M 14161c11373 < Southampton --- > Southampton/M 14164,14165c11376,11377 < Southerner/SM < Southey --- > Southerner/M > Southey/M 14168c11380 < Soviet --- > Soviet/M 14171c11383 < Soyuz --- > Soyuz/M 14174c11386 < Spackle --- > Spackle/M 14183c11395 < Sparks --- > Sparks/M 14185c11397 < Spartacus --- > Spartacus/M 14187,14188c11399 < Speaker < Spears --- > Spears/M 14190,14191c11401,11403 < Spence/R < Spencerian --- > Spence/RM > Spencer/M > Spencerian/M 14193,14194c11405 < Spenglerian < Spense/RM --- > Spenglerian/M 14196c11407 < Spenserian --- > Spenserian/M 14202d11412 < Spike/M 14204c11414 < Spinoza --- > Spinoza/M 14210,14211c11420,11421 < Spock < Spokane --- > Spock/M > Spokane/M 14216c11426 < Sputnik --- > Sputnik/M 14218c11428 < Squanto --- > Squanto/M 14221c11431 < Srinagar --- > Srinagar/M 14226d11435 < Stacee/M 14229d11437 < Stacia/M 14233,14237c11441,11442 < Stafani/M < Staffard/M < Stafford < Staford/M < StairMaster --- > Stafford/M > StairMaster/M 14240c11445 < Stalinist --- > Stalinist/M 14242c11447 < Stamford --- > Stamford/M 14245c11450 < Standish --- > Standish/M 14250c11455 < Stanislavsky --- > Stanislavsky/M 14252,14253c11457 < Stanleigh/M < Stanley --- > Stanley/M 14255c11459 < Stanton --- > Stanton/M 14258,14260c11462,11463 < Star/M < Starbucks < Stark --- > Starbucks/M > Stark/M 14262,14264d11464 < Starla/M < Starlene/M < Starlin/M 14271c11471 < Stavro/MS --- > Stavros 14273c11473 < Steadicam --- > Steadicam/M 14275,14277c11475 < Stearne/M < Steele < Stefa/M --- > Steele/M 14282d11479 < Steffane/M 14285,14287c11482,11483 < Steffie/M < Stein/R < Steinbeck --- > Stein/MR > Steinbeck/M 14288a11485 > Steiner/M 14291,14292c11488,11489 < Stella < Stendhal --- > Stella/M > Stendhal/M 14294d11490 < Stepha/M 14296d11491 < Stephana/M 14299d11493 < Stephannie/M 14301,14306c11495,11497 < Stephen/S < Stephenie/M < Stephenson < Stephi/M < Stephie/M < Stephine/M --- > Stephen/MS > Stephens/M > Stephenson/M 14308c11499 < Stern --- > Stern/M 14310,14311c11501 < Sterno < Stesha/M --- > Sterno/M 14314d11503 < Stevana/M 14317,14318c11506,11507 < Stevena/M < Stevenson --- > Stevens/M > Stevenson/M 14320,14321d11508 < Stevy/M < Steward/M 14325d11511 < Stillmann/M 14329,14330c11515,11516 < Stinky/M < Stirling --- > Stinky's > Stirling/M 14333c11519 < Stockton --- > Stockton/M 14340,14341c11526,11527 < Stone < Stonehenge --- > Stone/M > Stonehenge/M 14343,14348c11529,11531 < Storm/M < Stormi/M < Stormie/M < Stormy/M < Stout < Stowe --- > Stormy's > Stout/M > Stowe/M 14351,14353c11534,11536 < Stradivarius < Strasbourg < Strauss --- > Stradivarius/M > Strasbourg/M > Strauss/M 14357,14358c11540,11541 < Strindberg < Stromboli --- > Strindberg/M > Stromboli/M 14365,14366c11548,11549 < Stuyvesant < Stygian --- > Stuyvesant/M > Stygian/M 14372c11555 < Sucre --- > Sucre/M 14379,14385c11562,11567 < Sue < Suellen/M < Suetonius < Suez < Suffolk < Sufi < Sufism --- > Sue/M > Suetonius/M > Suez/M > Suffolk/M > Sufi/M > Sufism/M 14388c11570 < Sukarno --- > Sukarno/M 14399d11580 < Sully 14404a11586 > Summers/M 14406c11588 < Sumter --- > Sumter/M 14412c11594 < Sundas --- > Sundas/M 14415c11597 < Sung --- > Sung/M 14419,14421c11601,11602 < Sunny/M < Sunnyvale < Sunshine/M --- > Sunny's > Sunnyvale/M 14425c11606 < Superior --- > Superior/M 14429,14431c11610,11611 < Surabaya < Surat < Surinam/M --- > Surabaya/M > Surat/M 14437d11616 < Susanetta/M 14439c11618 < Susanna --- > Susanna/M 14442d11620 < Susette/M 14446c11624 < Sussex --- > Sussex/M 14448d11625 < Sutherlan/M 14453d11629 < Suzann/M 14465c11641 < Svengali --- > Svengali/M 14469c11645 < Swanee --- > Swanee/M 14480,14481c11656 < Sweet < Swen/M --- > Sweet/M 14490d11664 < Sybila/M 14493d11666 < Sybyl/M 14495,14496d11667 < Sydel/M < Sydelle/M 14499,14500c11670 < Sylas/M < Sylvan/M --- > Sylvan's 14504d11673 < Syman/M 14508c11677 < Synge --- > Synge/M 14511c11680 < Syriac --- > Syriac/M 14513d11681 < Szechuan/M 14516c11684,11685 < T'ang --- > Sèvres/M > T'ang/M 14518a11688 > TARP 14546d11715 < Tab/MR 14550,14554d11718 < Tabbatha/M < Tabbi/M < Tabbie/M < Tabbitha/M < Tabby/M 14557d11720 < Tabina/M 14561c11724 < Tacitus --- > Tacitus/M 14564d11726 < Tadd/M 14566,14570d11727 < Taddeusz/M < Tadeas/M < Tadeo/M < Tades < Tadio/M 14572d11728 < Tadzhikistan/M 14574,14575c11730 < Taejon < Taffy/M --- > Taejon/M 14578c11733 < Tagore --- > Tagore/M 14582c11737 < Tahoe --- > Tahoe/M 14584d11738 < Tailor/M 14588c11742 < Taiping --- > Taiping/M 14590d11743 < Taite/M 14593c11746 < Taiyuan --- > Taiyuan/M 14597c11750 < Talbot --- > Talbot/M 14600c11753 < Taliesin --- > Taliesin/M 14605,14606d11757 < Tallia/M < Tallie/M 14608d11758 < Tallou/M 14610d11759 < Tally/M 14615,14616d11763 < Talyah/M < Tam/M 14619d11765 < Tamarah/M 14621d11766 < Tamarra/M 14628d11772 < Tamiko/M 14630d11773 < Tamma/M 14632d11774 < Tammara/M 14639d11780 < Tamqrah/M 14641,14642c11782 < Tamworth < Tan --- > Tamworth/M 14644,14646c11784 < Tancred < Tandi/M < Tandie/M --- > Tancred/M 14648c11786 < Taney --- > Taney/M 14651,14652c11789 < Tangshan < Tanhya/M --- > Tangshan/M 14656d11792 < Tanitansy/M 14659d11794 < Tanney/M 14661,14663c11796 < Tannie/M < Tanny/M < Tansy/M --- > Tannhäuser/M 14672d11804 < Tarah/M 14678c11810 < Tarim --- > Tarim/M 14680,14683c11812 < Tarkington < Tarra/M < Tarrah/M < Tarrance/M --- > Tarkington/M 14685,14686c11814,11815 < Tartary < Tartuffe --- > Tartary/M > Tartuffe/M 14691,14692c11820 < Tasia/M < Tasman --- > Tasman/M 14694,14695c11822,11823 < Tasmanian < Tass --- > Tasmanian/M > Tass/M 14697c11825 < Tate --- > Tate/M 14699,14700c11827 < Tatiania/M < Tatum --- > Tatum/M 14702,14704c11829 < Tawney < Tawnya/M < Tawsha/M --- > Tawney/M 14709c11834 < Tchaikovsky --- > Tchaikovsky/M 14713d11837 < Teador/M 14716c11840 < Technicolor --- > Technicolor/M 14720,14722d11843 < Tedd/M < Tedda/M < Teddi/M 14726,14729d11846 < Tedie/M < Tedman/M < Tedmund/M < Tedra/M 14733d11849 < Teheran/M 14736,14738c11852,11854 < TelePrompter < Telemachus < Telemann --- > TelePrompter/M > Telemachus/M > Telemann/M 14740a11857 > Teller/M 14742d11858 < Temp/M 14745d11860 < Temple/M 14747c11862 < Tenn --- > Tenn/M 14750c11865 < Tennyson --- > Tennyson/M 14752d11866 < Teodoor/M 14755d11868 < Teodorico/M 14759,14760c11872 < Terence < Terencio/M --- > Terence/M 14763,14764c11875 < Tereshkova < Teresina --- > Tereshkova/M 14766d11876 < Teressa/M 14768d11877 < Teriann/M 14775d11883 < Terrel/M 14780d11887 < Terrijo/M 14782d11888 < Territorial 14784,14786c11890 < Terry < Terrye/M < Tersina/M --- > Terry/M 14790,14791c11894,11895 < Tesla < Tess --- > Tesla/M > Tess/M 14793d11896 < Tessi/M 14795d11897 < Tessy/M 14798c11900 < Tetons --- > Tetons/M 14800c11902 < Teutonic --- > Teutonic/M 14802c11904 < Tex --- > Tex/M 14808c11910 < Thackeray --- > Thackeray/M 14810,14812c11912 < Thaddeus < Thaddus/M < Thadeus/M --- > Thaddeus/M 14815,14817c11915 < Thain/M < Thaine/M < Thales --- > Thales/M 14820d11917 < Thane/M 14822,14823c11919,11920 < Thanksgiving/SM < Thant --- > Thanksgiving/MS > Thant/M 14826c11923 < Thatch/MR --- > Thatcher/M 14829,14830d11925 < Thayne/M < The 14832,14833d11926 < Theadora/M < Thebault/M 14836,14837d11928 < Thedric/M < Thedrick/M 14841c11932 < Themistocles --- > Themistocles/M 14844c11935 < Theocritus --- > Theocritus/M 14846c11937 < Theodora --- > Theodora/M 14851,14853c11942,11944 < Theosophy < Theravada < Theresa --- > Theosophy/M > Theravada/M > Theresa/M 14855,14858d11945 < Theresina/M < Theresita/M < Theressa/M < Therine/M 14863c11950 < Thespian --- > Thespian/M 14865c11952 < Thessalonian/S --- > Thessalonian/SM 14866a11954 > Thessaloníki/M 14869d11956 < Thibaud/M 14872c11959 < Thimbu --- > Thimbu/M 14877d11963 < Thomasa/M 14880d11965 < Thomasine/M 14882,14884c11967,11969 < Thomistic < Thompson < Thomson --- > Thomistic/M > Thompson/M > Thomson/M 14889d11973 < Thorn 14891d11974 < Thornie/M 14893,14895c11976,11978 < Thorny/M < Thoroughbred < Thorpe --- > Thorny's > Thoroughbred/M > Thorpe/M 14907c11990 < Thurber --- > Thurber/M 14918c12001 < Tiberius --- > Tiberius/M 14921d12003 < Tibold/M 14923c12005 < Ticonderoga --- > Ticonderoga/M 14925d12006 < Tiebold/M 14927d12007 < Tiena/M 14931,14938c12011 < Tiertza/M < Tiff/M < Tiffani/M < Tiffanie/M < Tiffany < Tiffi/M < Tiffie/M < Tiffy/M --- > Tiffany/M 14943d12015 < Tildie/M 14945,14946c12017 < Tiler/M < Tillich --- > Tillich/M 14950c12021 < Tilsit --- > Tilsit/M 14955,14956d12025 < Timmi/M < Timmie/M 14958d12026 < Timofei/M 14960,14963c12028 < Timor < Timoteo/M < Timothea/M < Timothee/M --- > Timor/M 14965c12030 < Timothy --- > Timothy/M 14970d12034 < Tine/M 14973c12037 < Tinkertoy --- > Tinkertoy/M 14975,14978c12039 < Tintoretto < Tiphani/M < Tiphanie/M < Tiphany/M --- > Tintoretto/M 14980,14981c12041 < Tipperary < Tirana/M --- > Tipperary/M 14986d12045 < Tirrell/M 14991,14992c12050,12051 < Titania < Titanic --- > Titania/M > Titanic/M 14994,14996c12053,12055 < Titicaca < Tito/SM < Titus --- > Titicaca/M > Tito/M > Titus/M 15005d12063 < Tobiah/M 15009,15013c12067,12070 < Tobit < Toby < Tobye/M < Tocantins < Tocqueville --- > Tobit/M > Toby/M > Tocantins/M > Tocqueville/M 15015,15017c12072 < Todd < Toddie/M < Toddy/M --- > Todd/M 15020,15022c12075 < Toiboid/M < Toinette/M < Tojo --- > Tojo/M 15024c12077 < Tokugawa --- > Tokugawa/M 15028c12081 < Tolkien --- > Tolkien/M 15030c12083 < Toltec --- > Toltec/M 15034,15035c12087 < Tomasina/M < Tomasine/M --- > Tomas/M 15038d12089 < Tome/M 15040d12090 < Tomkin/M 15042d12091 < Tommi/M 15044c12093 < Tommy --- > Tommy/M 15046c12095 < Tomsk --- > Tomsk/M 15051,15052d12099 < Tonie/M < Tonnie/M 15054c12101 < Tony --- > Tony/M 15056d12102 < Tonye/M 15062c12108 < Tore/M --- > Tore's 15065d12110 < Torie/M 15068c12113 < Torquemada --- > Torquemada/M 15070c12115 < Torrance --- > Torrance/M 15073,15074c12118,12119 < Torrens < Torres --- > Torrens/M > Torres/M 15078d12122 < Torrin/M 15080,15081c12124,12125 < Tortola < Tortuga --- > Tortola/M > Tortuga/M 15085c12129 < Toscanini --- > Toscanini/M 15088c12132 < Toulouse --- > Toulouse/M 15091,15094c12135 < Town/M < Townes < Towney/M < Townie/M --- > Townes/M 15096d12136 < Towny/M 15100,15101d12139 < Trace/M < Tracee/M 15108c12146 < Trajan --- > Trajan/M 15110c12148 < Transcaucasia --- > Transcaucasia/M 15112c12150,12151 < Transylvania --- > Transylvania/M > Transylvanian/M 15117d12155 < Travus/M 15119,15120c12157 < Treblinka < Trefor/M --- > Treblinka/M 15125d12161 < Trenna/M 15129,15135c12165,12166 < Tresa/M < Trescha/M < Tressa/M < Trev/MR < Trevar/M < Trevelyan < Trever/M --- > Trev/M > Trevelyan/M 15143c12174 < Trieste --- > Trieste/M 15149d12179 < Trip/M 15151c12181 < Tripitaka --- > Tripitaka/M 15159d12188 < Tristam/M 15163d12191 < Trixi/M 15165d12192 < Trixy/M 15166a12194 > Troilus/M 15168c12196 < Trollope --- > Trollope/M 15171c12199 < Trotsky --- > Trotsky/M 15174d12201 < Trstram/M 15176d12202 < Truda/M 15178,15179c12204 < Trudeau < Trudey/M --- > Trudeau/M 15181d12205 < Trudie/M 15185,15187c12209 < Trujillo < Trula/M < Trumaine/M --- > Trujillo/M 15189d12210 < Trumann/M 15192c12213 < Truth --- > Truth/M 15194d12214 < Tsingtao 15199c12219 < Tu --- > Tu/M 15202,15203c12222 < Tubman < Tuck/R --- > Tubman/M 15205,15206d12223 < Tuckie/M < Tucky/M 15215d12231 < Tulley/M 15227c12243 < Tupperware --- > Tupperware/M 15229c12245 < Turgenev --- > Turgenev/M 15238,15239c12254,12255 < Turner < Turpin --- > Turner/M > Turpin/M 15248,15249c12264,12265 < Tutankhamen < Tutsi --- > Tutankhamen/M > Tutsi/M 15253,15254c12269,12270 < Twain < Tweed --- > Twain/M > Tweed/M 15258c12274,12275 < Twinkies --- > Twinkies/M > Twitter/M 15264,15266c12281 < Tybi/M < Tybie/M < Tycho --- > Tycho/M 15270,15271d12284 < Tymon/M < Tymothy/M 15273,15274c12286,12287 < Tyndale < Tyndall --- > Tyndale/M > Tyndall/M 15276c12289 < Tyre --- > Tyre/M 15278d12290 < Tyrol/M 15280c12292 < Tyrone --- > Tyrone/M 15290c12302 < UI/MS --- > UI/SM 15298,15299c12310,12311 < UPI < UPS --- > UPI/M > UPS/M 15301d12312 < URLs 15304a12316 > USB 15306c12318 < USDA --- > USDA/M 15315a12328 > UTC 15317c12330 < Ubangi --- > Ubangi/M 15320c12333 < Ucayali --- > Ucayali/M 15322,15323c12335 < Udale/M < Udall --- > Udall/M 15334,15335d12345 < Ulaanbaatar/M < Ulberto/M 15342,15344d12351 < Ulrick/M < Ulrika/M < Ulrikaumeko/M 15348c12355 < Ulyanovsk --- > Ulyanovsk/M 15352d12358 < Umeko/M 15355c12361 < Ungava --- > Ungava/M 15366,15367c12372,12373 < Upanishads < Updike --- > Upanishads/M > Updike/M 15370,15371c12376,12378 < Ur < Ural/S --- > Ur/M > Ural/SM > Urals/M 15377d12383 < Urbanus/M 15379c12385 < Urey --- > Urey/M 15381,15384c12387,12390 < Uriah < Uriel < Uris < Urquhart --- > Uriah/M > Uriel/M > Uris/M > Urquhart/M 15386,15391c12392,12393 < Ursala/M < Ursola/M < Urson/M < Ursula < Ursulina/M < Ursuline --- > Ursula/M > Ursuline/M 15394c12396 < Urumqi --- > Urumqi/M 15396c12398 < Ustinov --- > Ustinov/M 15400d12401 < Utahn 15433c12434 < Va --- > Va/M 15439,15441c12440 < Val/MY < Valaree/M < Valaria/M --- > Val/M 15445,15446d12443 < Vale/M < Valeda/M 15448,15449d12444 < Valene/M < Valenka/M 15452d12446 < Valentijn/M 15456c12450 < Valentino --- > Valentino/M 15462,15463c12456 < Valery < Valerye/M --- > Valery/M 15465,15466d12457 < Valida/M < Valina/M 15473,15476c12464 < Vallie/M < Vally/M < Valma/M < Valois --- > Valois/M 15478d12465 < Valry/M 15480,15481c12467,12469 < Van < Vance --- > Valéry/M > Van/M > Vance/M 15485,15486c12473,12474 < Vanderbilt < Vandyke --- > Vanderbilt/M > Vandyke/M 15492,15493d12479 < Vannie/M < Vanny/M 15497,15499c12483,12485 < Varanasi < Varese < Vargas --- > Varanasi/M > Varese/M > Vargas/M 15501c12487 < Vasili/MS --- > Vasili/M 15508,15509c12494,12495 < Vauban < Vaughan --- > Vauban/M > Vaughan/M 15514c12500 < Vedanta --- > Vedanta/M 15516a12503 > Vegas/M 15518c12505 < Vela --- > Vela/M 15520c12507 < Velazquez --- > Velazquez/M 15525c12512,12513 < Velvet/M --- > Velásquez/M > Velázquez/M 15530d12517 < Venita/M 15535c12522 < Venusian --- > Venusian/M 15538,15540c12525,12526 < Veradis < Verde < Verdi --- > Verde/M > Verdi/M 15544,15550d12529 < Verene/M < Verge/M < Vergil/M < Veriee/M < Verile/M < Verina/M < Verine/M 15552d12530 < Verla/M 15554c12532 < Vermeer --- > Vermeer/M 15557c12535 < Vern/MN --- > Vern/M 15559,15560c12537 < Verne < Vernen/M --- > Verne/M 15562d12538 < Vernice/M 15566,15567c12542,12543 < Veronese < Veronica --- > Veronese/M > Veronica/M 15569d12544 < Veronike/M 15573,15574c12548 < Vespasian < Vespers --- > Vespasian/M 15578d12551 < Vevay/M 15581,15582c12554,12555 < Viagra < Vic --- > Viagra/M > Vic/M 15584c12557 < Vichy --- > Vichy/M 15589c12562 < Vicky --- > Vicky/M 15591d12563 < Victoir/M 15599,15600d12570 < Vidovic/M < Vidovik/M 15602c12572 < Viennese --- > Viennese/M 15604,15605c12574,12575 < Vietcong < Vietminh --- > Vietcong/M > Vietminh/M 15610d12579 < Viki/M 15613d12581 < Vikky/M 15615,15616c12583 < Vilhelmina/M < Villa --- > Villa/M 15618c12585 < Villon --- > Villon/M 15625,15627c12592 < Vincent/MS < Vincenty/M < Vincenz/M --- > Vincent/M 15629,15630d12593 < Vinita/M < Vinni/M 15636d12598 < Viole/M 15640d12601 < Virge/M 15644d12604 < Virgina/M 15650,15651c12610,12611 < Visakhapatnam < Visayans --- > Visakhapatnam/M > Visayans/M 15656d12615 < Vita/M 15658d12616 < Vitia/M 15666,15667c12624 < Viva/M < Vivaldi --- > Vivaldi/M 15670,15671c12627 < Vivia/M < Vivian --- > Vivian/M 15673,15674d12628 < Vivianna/M < Vivianne/M 15677d12630 < Viviene/M 15679,15681d12631 < Viviyan/M < Vivyan/M < Vivyanne/M 15683,15684c12633 < Vladamir/M < Vladimir --- > Vladimir/M 15686c12635 < Vlaminck --- > Vlaminck/M 15697c12646 < Volta --- > Volta/M 15703,15706c12652 < Vonni/M < Vonnie/M < Vonny/M < Voronezh --- > Voronezh/M 15714d12659 < Vyky/M 15722a12668 > WMD 15725a12672 > WTO 15735,15736c12682,12683 < Waco < Wade --- > Waco/M > Wade/M 15739,15742c12686,12688 < Wagnerian < Wahhabi < Waikiki < Wain/M --- > Wagnerian/M > Wahhabi/M > Waikiki/M 15744d12689 < Wait/MR 15746d12690 < Waiter/M 15749c12693 < Waksman --- > Waksman/M 15753,15754c12697,12698 < Waldensian < Waldheim --- > Waldensian/M > Waldheim/M 15756d12699 < Waldon/M 15759c12702 < Walesa --- > Walesa/M 15762c12705 < Walkman --- > Walkman/M 15764,15765c12707 < Wallace < Wallache/M --- > Wallace/M 15767c12709,12710 < Wallenstein --- > Wallenstein/M > Waller/M 15769,15771c12712,12714 < Wallis < Walliw/M < Walloon --- > Wallis/M > Walloon/M > Walls/M 15772a12716 > Walmart/M 15774c12718 < Walpurgisnacht --- > Walpurgisnacht/M 15776a12721,12722 > Walter/M > Walters/M 15779d12724 < Waly/M 15782,15784d12726 < Wandie/M < Wandis/M < Waneta/M 15786d12727 < Wanids/M 15789c12730 < Ward/N --- > Ward/M 15792c12733 < Warhol --- > Warhol/M 15795c12736 < Warren --- > Warren/M 15797c12738 < Warwick --- > Warwick/M 15800c12741 < Wash --- > Wash/M 15802,15803c12743,12744 < Washingtonian/SM < Wassermann --- > Washingtonian/MS > Wassermann/M 15805,15807c12746,12748 < Waterbury < Waterford < Watergate --- > Waterbury/M > Waterford/M > Watergate/M 15810,15815c12751,12757 < Watkins < Watson < Watt/S < Watteau < Watusi < Waugh --- > Watkins/M > Watson/M > Watt/SM > Watteau/M > Watts/M > Watusi/M > Waugh/M 15819,15820d12760 < Way/M < Waylan/M 15822,15823d12761 < Waylen/M < Waylin/M 15825,15826c12763,12764 < Wayne < Weave/M --- > Wayne/M > Weave/RM 15828c12766 < Web/R --- > Web/MR 15830c12768,12769 < Webb --- > Webb/M > Weber/M 15835c12774 < Wedgwood --- > Wedgwood/M 15838c12777 < Wehrmacht --- > Wehrmacht/M 15840d12778 < Weidar/M 15847,15848c12785 < Weizmann < Welbie/M --- > Weizmann/M 15850d12786 < Welch 15854c12790 < Welles --- > Welles/M 15856c12792 < Wells --- > Wells/M 15859c12795 < Welshmen --- > Welshmen/M 15861,15862d12796 < Wenda/M < Wendall/M 15864d12797 < Wendeline/M 15867d12799 < Wendie/M 15869,15871d12800 < Wendye/M < Wenona/M < Wenonah/M 15878c12807 < Wessex --- > Wessex/M 15882d12810 < Westbrooke/M 15884,15885c12812 < Westinghouse < Westleigh/M --- > Westinghouse/M 15887c12814 < Westminster --- > Westminster/M 15889c12816 < Westphalia --- > Westphalia/M 15891d12817 < Weylin/M 15893c12819 < Wharton --- > Wharton/M 15901,15903c12827,12828 < Whistler < Whit < Whitaker --- > Whistler/M > Whitaker/M 15907,15908c12832,12833 < Whitehall < Whitehead --- > Whitehall/M > Whitehead/M 15913c12838 < Whitman --- > Whitman/M 15915c12840 < Whitsunday/SM --- > Whitsunday/MS 15917c12842 < Whittier --- > Whittier/M 15919,15920c12844 < Wiatt/M < Wicca --- > Wicca/M 15925c12849 < Wiggins --- > Wiggins/M 15929a12854 > Wikileaks 15936c12861 < Wilberforce --- > Wilberforce/M 15940d12864 < Wilburt/M 15943c12867 < Wilde/R --- > Wilde/MR 15945,15948c12869,12870 < Wildon/M < Wileen/M < Wilek/M < Wiles --- > Wilder/M > Wiles/M 15957d12878 < Wilie/M 15959,15960c12880,12881 < Wilkes < Wilkins --- > Wilkes/M > Wilkins/M 15964d12884 < Willabella/M 15966,15968c12886 < Willamina/M < Willard < Willdon/M --- > Willard/M 15970,15972c12888 < Willemstad < Willetta/M < Willette/M --- > Willemstad/M 15975,15976c12891,12893 < William/S < Williamson --- > William/SM > Williams/M > Williamson/M 15978,15979c12895 < Willis < Willow/M --- > Willis/M 15981d12896 < Willyt/M 15983d12897 < Wilmar/M 15987,15989d12900 < Wilona/M < Wilone/M < Wilow/M 15991,15992c12902 < Wilsonian < Wilt/M --- > Wilsonian/M 15997d12906 < Win/M 15999,16000c12908,12909 < Winchester/S < Windbreaker --- > Winchester/MS > Windbreaker/M 16003,16004c12912,12913 < Windhoek < Windows --- > Windhoek/M > Windows/M 16007c12916 < Windy/M --- > Windy's 16012,16013d12920 < Wini/M < Winifield/M 16018d12924 < Winnah/M 16021,16022c12927 < Winni/M < Winnie --- > Winnie/M 16027d12931 < Winonah/M 16030c12934 < Winters --- > Winters/M 16035c12939 < Wisconsinite/SM --- > Wisconsinite/MS 16037d12940 < Wit/M 16040,16042c12943,12944 < Wittie/M < Witty/M < Witwatersrand --- > Witty's > Witwatersrand/M 16046,16048c12948,12950 < Wolf < Wolfe < Wolff --- > Wolf/M > Wolfe/M > Wolff/M 16050,16052c12952 < Wolfie/M < Wolfy/M < Wollongong --- > Wollongong/M 16054c12954 < Wolsey --- > Wolsey/M 16056c12956 < Wonder --- > Wonder/M 16059c12959 < Wood/S --- > Wood/SM 16063d12962 < Woodman 16064a12964 > Woods/M 16067,16068c12967 < Woody/M < Woolf --- > Woolf/M 16071c12970 < Woolworth --- > Woolworth/M 16075c12974 < Worcestershire --- > Worcestershire/M 16081,16082c12980 < Worms < Worth --- > Worms/M 16084d12981 < Worthy/M 16090,16092c12987,12988 < Wren < Wrennie/M < Wright --- > Wren/M > Wright/M 16096c12992 < Wuhan --- > Wuhan/M 16098,16099c12994 < Wyatan/M < Wyatt --- > Wyatt/M 16102a12998 > Wyeth/M 16104d12999 < Wylma/M 16109,16110d13003 < Wynnie/M < Wynny/M 16113c13006 < Wyomingite/MS --- > Wyomingite/SM 16126c13019 < Xanadu --- > Xanadu/M 16128,16130c13021,13022 < Xanthippe < Xavier < Xaviera/M --- > Xanthippe/M > Xavier/M 16136,16137c13028 < Xenophon < Xenos --- > Xenophon/M 16139,16140c13030 < Xerxes < Xever/M --- > Xerxes/M 16142c13032 < Xi'an --- > Xi'an/M 16145c13035 < Ximenes --- > Ximenes/M 16152,16154d13041 < Xylia/M < Xylina/M < Xymenes/M 16156c13043 < YMCA --- > YMCA/M 16160c13047 < YWCA --- > YWCA/M 16165d13051 < Yahveh/M 16167c13053 < Yakima --- > Yakima/M 16169c13055 < Yakutsk --- > Yakutsk/M 16171d13056 < Yalonda/M 16177,16179c13062 < Yamoussoukro < Yanaton/M < Yance/M --- > Yamoussoukro/M 16182c13065 < Yang --- > Yang/M 16189,16190c13072 < Yaqui < Yard/M --- > Yaqui/M 16193,16194c13075 < Yaroslavl < Yasmeen/M --- > Yaroslavl/M 16197c13078 < Yates --- > Yates/M 16202,16203c13083 < Yehudit/M < Yekaterinburg --- > Yekaterinburg/M 16205c13085 < Yellowknife --- > Yellowknife/M 16207c13087 < Yeltsin --- > Yeltsin/M 16212c13092 < Yerevan --- > Yerevan/M 16216,16218d13095 < Yettie/M < Yetty/M < Yevette/M 16220c13097 < Yggdrasil --- > Yggdrasil/M 16223d13099 < Ynes/M 16228c13104 < Yokohama --- > Yokohama/M 16231,16232d13106 < Yolane/M < Yolanthe/M 16234,16236c13108 < Yonkers < Yooper/MS < Yorgo/MS --- > Yonkers/M 16240c13112 < Yorkie --- > Yorkie/M 16249,16251c13121,13122 < Young < Youngstown < Yovonnda/M --- > Young/M > Youngstown/M 16253c13124 < Ypsilanti --- > Ypsilanti/M 16257c13128 < Yugo --- > Yugo/M 16265d13135 < Yulma/M 16269d13138 < Yurik/M 16275c13144 < Z/SDMNXT --- > Z/SMNXT 16277d13145 < Zabrina/M 16280d13147 < Zacharia/SM 16282c13149 < Zacharie/M --- > Zacharias 16284d13150 < Zacherie/M 16287d13152 < Zackariah/M 16296c13161 < Zamboni --- > Zamboni/M 16298,16299c13163 < Zamora < Zandra/M --- > Zamora/M 16301d13164 < Zaneta/M 16304,16306c13167,13169 < Zapata < Zaporozhye < Zapotec --- > Zapata/M > Zaporozhye/M > Zapotec/M 16311d13173 < Zared/M 16313d13174 < Zarla/M 16317,16319c13178 < Zebadiah/M < Zebedee < Zebulen/M --- > Zebedee/M 16321,16322c13180 < Zechariah < Zed/M --- > Zechariah/M 16328c13186 < Zelig --- > Zelig/M 16335,16338c13193,13195 < Zephaniah < Zephyrus < Zeppelin < Zerk/M --- > Zephaniah/M > Zephyrus/M > Zeppelin/M 16344c13201 < Zhengzhou --- > Zhengzhou/M 16347c13204 < Zhukov --- > Zhukov/M 16350c13207 < Ziegfeld --- > Ziegfeld/M 16354d13210 < Zilvia/M 16362c13218 < Ziploc --- > Ziploc/M 16364d13219 < Zitella/M 16368,16371c13223,13224 < Zollie/M < Zollverein < Zolly/M < Zoloft --- > Zollverein/M > Zoloft/M 16373,16375d13225 < Zonda/M < Zondra/M < Zonnya/M 16377,16381c13227 < Zorah/M < Zorana/M < Zorina/M < Zorine/M < Zorn --- > Zorn/M 16388,16389c13234 < Zsazsa/M < Zsigmondy --- > Zsigmondy/M 16393d13237 < Zulema/M 16397c13241 < Zuni --- > Zuni/M 16399d13242 < Zuzana/M 16401c13244 < Zworykin --- > Zworykin/M 16404a13248 > Zürich/M 16430c13274 < abbreviate/XDSGN --- > abbreviate/DSGNX 16431a13276 > abbé/SM 16436a13282 > abductee/MS 16441c13287 < aberration/SM --- > aberration/MS 16461c13307 < abjuration/MS --- > abjuration/SM 16482c13328 < abolitionist/MS --- > abolitionist/SM 16485c13331 < abominate/XDSGN --- > abominate/DSGNX 16492c13338 < abortionist/SM --- > abortionist/MS 16501c13347 < abrasive/MYSP --- > abrasive/MYPS 16504c13350 < abridge/DSG --- > abridge/DSLG 16519c13365 < abseil/MDRSG --- > abseil/MDSG 16524c13370 < absentminded/PY --- > absentminded/YP 16526d13371 < absinth/M 16528c13373 < absolute/PMYTNRS --- > absolute/PMYTNS 16537d13381 < absorbed/U 16540d13383 < absorber/S 16542c13385 < absorption/SM --- > absorption/M 16544d13386 < absorptivity 16547c13389 < abstemious/YP --- > abstemious/PY 16549c13391 < abstention/SM --- > abstention/MS 16552c13394 < abstract/TGSPMDRY --- > abstract/GSPMDY 16557c13399 < abstruse/RPYT --- > abstruse/YP 16559a13402 > absurdist/MS 16564c13407,13408 < abuse/EGVDSM --- > abuse's > abuse/EGVDS 16582c13426 < academician/SM --- > academician/MS 16586c13430 < accelerate/GNDSX --- > accelerate/GNXDS 16589d13432 < accelerometer/S 16593c13436 < accentuate/DSGN --- > accentuate/GNDS 16602d13444 < acceptor/S 16604d13445 < accessed/A 16608c13449 < accession/GMDS --- > accession/MDGS 16611d13451 < accidence 16613c13453 < accidental/MYS --- > accidental/SMY 16615c13455 < acclamation/SM --- > acclamation/M 16618,16619d13457 < acclimatisation < acclimatise/DSG 16624c13462 < accommodate/DSGNX --- > accommodate/XGNDS 16628c13466 < accompaniment/SM --- > accompaniment/MS 16632c13470 < accomplish/GLDS --- > accomplish/DSLG 16640c13478 < accordionist/SM --- > accordionist/MS 16651,16652c13489,13490 < accoutre/DSGL < accoutrements/M --- > accoutre/DSG > accoutrements 16656d13493 < accreted 16661c13498 < acculturate/GNDS --- > acculturate/DSGN 16663c13500 < accumulate/DSGNVX --- > accumulate/XGNVDS 16665,16666c13502,13503 < accumulator/SM < accuracy/ISM --- > accumulator/MS > accuracy/IM 16671,16672d13507 < accurst < accusal 16695d13529 < achievable/U 16697d13530 < achieved/A 16706c13539 < acidify/GDSN --- > acidify/GDS 16708d13540 < acidophiles 16711c13543 < acknowledge/DSG --- > acknowledge/DSGL 16714c13546 < acknowledgment/MS --- > acknowledgment/SM 16724c13556 < acquaintance/MS --- > acquaintance/SM 16732c13564 < acquisition/SM --- > acquisition/MS 16737d13568 < acquittance 16745c13576 < acrimonious/PY --- > acrimonious/YP 16756a13588 > acrylamide 16758c13590,13591 < act/ASDGVM --- > act's > act/ASDGV 16761d13593 < actinides 16766,16768c13598 < activated/U < activation/CAIM < activations --- > activation/ICAM 16770c13600,13601 < active/IKYSM --- > active's > active/ISY 16774c13605 < activity/ASIM --- > activity/ISM 16793d13623 < acyclic 16802,16803c13632 < adaptation/SM < adapted/U --- > adaptation/MS 16806,16807d13634 < adaptive/Y < adaptivity 16816d13642 < addictive/P 16819c13645 < additive/SMY --- > additive/SM 16821,16822c13647,13649 < address/AGDSM < addressable/U --- > address's > address/AGDS > addressable 16829c13656 < adept/TMRYPS --- > adept/MYPS 16834c13661 < adhere/ZGDRS --- > adhere/GDS 16838c13665 < adhesive/SPM --- > adhesive/PSM 16841d13667 < adiabatically 16844a13671 > adiós 16852c13679 < adjournment/MS --- > adjournment/SM 16854c13681 < adjudicate/GNVDSX --- > adjudicate/GNVXDS 16859c13686 < adjuration/SM --- > adjuration/MS 16863d13689 < adjusted/U 16866d13691 < adjustor/SM 16871,16872c13696,13697 < administer/SDG < administrate/GNVXDS --- > administer/DGS > administrate/XDSGNV 16875c13700 < administrator/SM --- > administrator/MS 16889c13714 < admittance/SM --- > admittance/M 16895c13720 < admonishment/SM --- > admonishment/MS 16916c13741 < adrenalin/M --- > adrenalin's 16917a13743 > adrenergic 16919c13745 < adroit/PTRY --- > adroit/PY 16923c13749 < adsorption/MS --- > adsorption/SM 16930c13756 < adulterate/XGNDS --- > adulterate/GNDS 16963c13789 < advertise/ZGLDRS --- > advertise/LZGDRS 16968,16969d13793 < advertize/GDSL < advertizement/SM 16971c13795 < advice/SM --- > advice/M 16977d13800 < advisedly/I 16979a13803 > advisor/SM 16983c13807 < advocator/SM --- > advocator/MS 16985c13809 < adware/MS --- > adware/SM 16989d13812 < aeolian 16996c13819 < aerie/M --- > aerie/MS 17002d13824 < aerobraking 17014,17015c13836 < aery/TRSM < aesthete/S --- > aesthete/MS 17020,17021d13840 < aether < aetiology 17024c13843 < affable/TR --- > affable 17027c13846,13847 < affect/EGVDSM --- > affect's > affect/EGDS 17037c13857,13858 < affiliate/EGNDSM --- > affiliate's > affiliate/EGNDS 17041d13861 < affine 17054c13874 < affordable/U --- > affordably 17076c13896 < afterburner/SM --- > afterburner/MS 17083c13903 < aftermarket/SM --- > aftermarket/MS 17090c13910 < afterthought/MS --- > afterthought/SM 17099a13920 > ageing/SM 17108c13929 < agglomerate/XDSMGN --- > agglomerate/DSMGNX 17110c13931 < agglutinate/XDSGNV --- > agglutinate/DSXGN 17112c13933 < aggrandize/LGDS --- > aggrandize/GLDS 17114c13935 < aggravate/GNDSX --- > aggravate/GNXDS 17118d13938 < aggregated/E 17121,17122c13941,13942 < aggression/SM < aggressive/YP --- > aggression/M > aggressive/PY 17126d13945 < aggrieved/Y 17129c13948 < agile/YTR --- > agile/Y 17132d13950 < agism 17134d13951 < agitated/Y 17145c13962 < agonist --- > agonist/S 17150,17151c13967 < agoraphobic/SM < agouti --- > agoraphobic/MS 17164d13979 < agrochemical/S 17176c13991 < aid/SMDRZG --- > aid/SMDG 17206d14020 < airframe/S 17232d14045 < airstream 17242c14055 < airworthy/TPR --- > airworthy/P 17253d14065 < alanine 17261d14072 < albedo 17269d14079 < alchemical 17277d14086 < aldehyde 17287c14096 < alert/TGMDRYPS --- > alert/GMDYPS 17298,17299c14107 < algebraical/Y < algebraist --- > algebraically 17302d14109 < algorithmically 17319,17322d14125 < aline/LGDS < alinement/MS < aliphatic < aliquot/S 17326c14129 < alkali/M --- > alkali/MS 17339c14142 < allegiance/SM --- > allegiance/MS 17345d14147 < allegri 17348d14149 < allelic 17356c14157 < alleviate/DSXGN --- > alleviate/DSGN 17362c14163 < alliterate/DSGNVX --- > alliterate/DSXGNV 17365d14165 < allocatable 17367d14166 < allocated/U 17370,17371d14168 < allocator/S < allophones 17374,17375d14170 < allotrope < allotropic 17380c14175 < allowable --- > allowable/U 17391c14186 < allusive/YP --- > allusive/PY 17397d14191 < almanack/S 17420,17421c14214,14215 < alphabetization/MS < alphabetize/DRSZG --- > alphabetization/SM > alphabetize/ZGDRS 17435,17436c14229 < altercate/XN < altercation/M --- > altercation/SM 17438c14231 < alternate/XDSMYGNV --- > alternate/DSMYGNVX 17441c14234 < alternator/MS --- > alternator/SM 17462c14255 < amalgamate/DSGNX --- > amalgamate/XGNDS 17472c14265 < amateurish/PY --- > amateurish/YP 17489a14283 > ambience/MS 17495c14289 < ambitious/PY --- > ambitious/YP 17513c14307,14309 < ambush/ZGMDS --- > ambush/GMDS > ameba/MS > amebae 17514a14311 > ameboid 17521d14317 < amended/U 17525c14321 < amercement/MS --- > amercement/SM 17528d14323 < amethystine 17530c14325 < amiable/P --- > amiable 17540d14334 < amine/S 17548d14341 < ammonites 17564,17565c14357 < amongst < amontillado/MS --- > amontillado/SM 17572c14364 < amortization/MS --- > amortization/SM 17575a14368 > amoxicillin 17585a14379 > ampicillin 17589c14383 < amplify/DRSZGNX --- > amplify/NDRSXZG 17592d14385 < ampul/MS 17597a14391 > amuck 17600d14393 < amused/U 17605d14397 < anabolic 17615,17616d14406 < anagrammatic < anagrammatically 17623c14413 < analogous/PY --- > analogous/YP 17628c14418 < analyses --- > analyses/A 17632a14423 > analyticalally 17636,17637d14426 < anamorphic < anapaest/SM 17640,17641d14428 < anaphora < anaphoric 17643c14430 < anarchical/Y --- > anarchically 17665c14452 < anchorperson/MS --- > anchorperson/SM 17682d14468 < anechoic 17686c14472 < anemometer/MS --- > anemometer/SM 17689d14474 < aneroid 17694c14479 < anesthetist/SM --- > anesthetist/MS 17696,17697c14481 < anesthetize/DSG < aneurism/SM --- > anesthetize/GDS 17710d14493 < anglepoise 17726a14510 > angulation 17730c14514 < animadvert/SGD --- > animadvert/GSD 17732c14516 < animalcule/MS --- > animalcule/SM 17738c14522 < anime --- > anime/M 17749,17750d14532 < anisotropic < anisotropy/S 17756d14537 < annal/S 17759c14540 < anneal/GDRS --- > anneal/GDS 17763d14543 < annexe/M 17766c14546 < annihilator/MS --- > annihilator/SM 17769d14548 < annotated/U 17779d14557 < annoyware/S 17786d14563 < annuli 17790,17791c14567 < annulus < annunciation/MS --- > annunciation/SM 17801c14577 < anonymization/SM --- > anonymization/MS 17810c14586 < answer/BMDRGS --- > answer/BMDGS 17845d14620 < anthropic 17847,17848c14622 < anthropogenic < anthropoid/SM --- > anthropoid/MS 17850c14624 < anthropologist/MS --- > anthropologist/SM 17852d14625 < anthropometric 17856c14629 < anthropomorphize/DSG --- > anthropomorphize/DS 17863c14636 < antibiotic/SM --- > antibiotic/MS 17867,17868c14640,14641 < antichrist/MS < anticipate/GNVXDS --- > antichrist/SM > anticipate/GNXDS 17880c14653 < anticoagulant/SM --- > anticoagulant/MS 17882,17883c14655,14656 < anticommunist/MS < anticyclone/MS --- > anticommunist/SM > anticyclone/SM 17898,17899c14671,14672 < antilogarithm/MS < antimacassar/SM --- > antilogarithm/SM > antimacassar/MS 17906,17907c14679,14680 < antioxidant/SM < antiparticle/MS --- > antioxidant/MS > antiparticle/SM 17921c14694 < antiquarian/MS --- > antiquarian/SM 17927a14701 > antiscience 17937,17938c14711 < antispasmodic/SM < antistatic --- > antispasmodic/MS 17940,17941d14712 < antisymmetric < antisymmetry 17950,17951c14721,14723 < antiviral/S < antivirus/MS --- > antivenom > antiviral/MS > antivirus/M 17957c14729 < antral --- > antrum 17975d14746 < aorist 17989,17990d14759 < aperiodic < aperiodically 18002c14771 < aphrodisiac/MS --- > aphrodisiac/SM 18010d14778 < apnea 18025a14794 > apoptotic 18028c14797 < apostatize/DSG --- > apostatize/GDS 18032,18033c14801 < apostrophe/SM < apostrophized --- > apostrophe/MS 18038,18039c14806 < apotheosizes < app/MS --- > app/SM 18053,18054c14820 < appeased/U < appeasement/MS --- > appeasement/SM 18065c14831 < appertain/DGS --- > appertain/GDS 18073d14838 < applecart 18083d14847 < applicative 18087a14852,14853 > appliqué/SMG > appliquéd 18091,18092c14857,14858 < appointment/ESMA < apportion/ALDGS --- > appointment/AESM > apportion/AGDLS 18095c14861 < apposite/PYNV --- > apposite/YNVP 18098c14864 < appositive/MS --- > appositive/SM 18101d14866 < appraisees 18105c14870 < appreciate/XDSGNV --- > appreciate/DSXGNV 18113c14878 < apprehensive/PY --- > apprehensive/YP 18118d14882 < apprize/GDS 18120,18121c14884 < approachability < approachable/IU --- > approachable/UI 18124c14887 < appropriate/DSPXYGN --- > appropriate/PYGNXDS 18128c14891 < appropriator/MS --- > appropriator/SM 18135c14898 < approximate/XYGNDS --- > approximate/DSXYGN 18161d14923 < aquiculture/M 18168d14929 < arachnoid 18173,18174c14934,14935 < arbitrageur/MS < arbitrament/MS --- > arbitrageur/SM > arbitrament/SM 18180c14941 < arbitrator/SM --- > arbitrator/MS 18183d14943 < arbores 18188,18190c14948,14949 < arcade/MGS < arcana < arcane/PY --- > arcade/MS > arcane 18205c14964 < archbishopric/MS --- > archbishopric/SM 18207d14965 < archdeaconry 18209c14967 < archdiocese/SM --- > archdiocese/MS 18214c14972 < archeologist/MS --- > archeologist/SM 18216d14973 < archeopteryx 18221d14977 < archetypical 18224a14981 > archipelagoes 18229c14986 < architecture/SM --- > architecture/MS 18233d14989 < archived/U 18238d14993 < ardency 18258c15013 < argumentative/YP --- > argumentative/PY 18262c15017 < arid/TRY --- > arid/Y 18273c15028 < arithmetician/SM --- > arithmetician/MS 18275c15030,15031 < arm/EAGDSM --- > arm's > arm/EAGDS 18287d15042 < armless 18303d15057 < aromaticity 18308d15061 < aroused/U 18312c15065 < arraignment/MS --- > arraignment/SM 18314,18315c15067 < arrangeable < arrangement/ASME --- > arrangement/AESM 18322d15073 < arrestable 18332c15083 < arrow/GMDS --- > arrow/MS 18339d15089 < arsenide 18344d15093 < artefactual 18355a15105 > arthroscopy 18360c15110 < articulate/PXDSYGN --- > articulate/YGNPDSX 18363d15112 < articulatory 18386c15135 < aryl/MS --- > aryl/SM 18389d15137 < asbestosis 18394,18395d15141 < ascendency/M < ascendent/SM 18398c15144 < ascertain/BLGDS --- > ascertain/GDSBL 18403d15148 < ascorbic 18406c15151 < ascription/MS --- > ascription/M 18439c15184 < asphyxiate/DSGNX --- > asphyxiate/DSXGN 18446d15190 < aspirational 18454d15197 < assailed/U 18456c15199 < assassinate/GNDSX --- > assassinate/GNXDS 18461,18463c15204,15206 < assemblage/MS < assemble/EADSG < assembler/MS --- > assemblage/SM > assemble/ERZGSD > assembler/EM 18465c15208 < assembly/AM --- > assembly/EAM 18477d15219 < assessable 18487c15229,15230 < assign/ALGDSM --- > assign's > assign/ALGDS 18489c15232 < assignation/SM --- > assignation/MS 18491c15234 < assignee/MS --- > assignee/M 18495d15237 < assimilable 18505,18507c15247,15248 < associate/EDSGNVM < associated/U < associateship --- > associate's > associate/EDSGNV 18509d15249 < associational 18511,18512d15250 < associative/Y < associativity 18516c15254 < assortment/SM --- > assortment/MS 18519d15256 < assuaged/U 18521,18522c15258 < assuming/AU < assumption/MS --- > assumption/SM 18538c15274 < astonish/DSGL --- > astonish/DSLG 18545c15281 < astral/Y --- > astral 18549c15285 < astringent/MYS --- > astringent/SMY 18556c15292 < astrologist/SM --- > astrologist/MS 18577d15312 < asymptote/S 18593d15327 < atheistically 18594a15329 > atherosclerotic 18604d15338 < atlantes 18606c15340 < atmosphere/SM --- > atmosphere/MS 18614,18616d15347 < atomicity < atomistic < atomization 18625a15357 > atrioventricular 18636a15369 > attaché/MS 18643,18644c15376 < attained/U < attainment/MS --- > attainment/SM 18646c15378,15379 < attempt/ASDGM --- > attempt's > attempt/ASDG 18648c15381 < attendance/MS --- > attendance/SM 18653d15385 < attentional 18655c15387 < attentive/IYP --- > attentive/IPY 18658d15389 < attenuated/U 18660d15390 < attenuator/S 18662c15392 < attestation/MS --- > attestation/SM 18672,18674c15402,15404 < attractant/SM < attraction/SM < attractive/UPY --- > attractant/MS > attraction/MS > attractive/UY 18676,18678c15406 < attractor/S < attributable/U < attribute/BXDSMGNV --- > attribute/DSMGNVBX 18681c15409 < attributive/SMY --- > attributive/MYS 18691c15419 < audacious/PY --- > audacious/YP 18699d15426 < audiobook/SM 18701c15428 < audiologist/MS --- > audiologist/SM 18704c15431 < audiophile/MS --- > audiophile/SM 18708,18709c15435 < audit/GVMDS < audited/U --- > audit/GMDS 18716d15441 < augite 18718c15443 < augmentation/SM --- > augmentation/MS 18727,18728c15452 < auntie/M < aunty/SM --- > auntie/SM 18735d15458 < auric 18739,18740c15462 < auroral < auscultate/XDSGN --- > auscultate/GNDSX 18748c15470,15471 < auteur/MS --- > auteur's > auteurs 18751c15474 < authenticate/GNDSX --- > authenticate/XGNDS 18754d15476 < authenticator/S 18759c15481 < authoritarian/SM --- > authoritarian/MS 18783,18784c15505 < autocue < autodidact/MS --- > autodidact/SM 18787d15507 < autoignition 18798,18799c15518 < automobile/MGDS < automorphism/S --- > automobile/DSMG 18815d15533 < availabilities 18821c15539 < avaricious/YP --- > avaricious/Y 18828d15545 < avenged/U 18834c15551 < averse/XNV --- > averse/XN 18844c15561 < avid/TRY --- > avid/Y 18866d15582 < awakened/U 18869c15585,15586 < aware/UPT --- > awardee/S > aware/UP 18871d15587 < awarer 18878d15593 < awestricken 18891a15607 > awol 18895,18896d15610 < axehead/S < axeman 18898d15611 < axillary 18902,18903c15615 < axiomatizing < axis/MS --- > axis/M 18908d15619 < ay/M 18916d15626 < azimuthal 18932c15642 < babysitter/SM --- > babysitter/MS 18934c15644 < baccalaureate/MS --- > baccalaureate/SM 18947,18948c15657 < backbench/RSZ < backbencher/M --- > backbench/S 18967c15676 < background/MRSZ --- > background/MRZS 18988c15697 < backslapper/MS --- > backslapper/SM 19002a15712 > backstory/S 19007c15717 < backtrack/GSD --- > backtrack/SDG 19009c15719 < backward/SPY --- > backward/PSY 19018c15728 < bacteria/SM --- > bacteria/M 19024c15734 < bacteriologist/MS --- > bacteriologist/SM 19026d15735 < bacteriophage 19034c15743 < badge/MZDRSG --- > badge/MZGRS 19075d15783 < bakehouse 19083,19084c15791,15792 < balance/UDSGM < balanced/A --- > balance's > balance/UDSG 19096,19097d15803 < balefuller < balefullest 19104d15809 < ballade/S 19140c15845 < banal/RYT --- > banal/Y 19143c15848,15849 < band/ESGDM --- > band's > band/ESGD 19156d15861 < bandpass 19166,19168c15871 < banefuller < banefullest < bang/SZGMDR --- > bang/SGMDR 19185c15888 < banned/U --- > banned 19187,19188c15890 < banning/U < bannister/MS --- > banning 19195d15896 < banshie/MS 19212c15913,15914 < bar/ECUTSM --- > bar's > bar/ECUTS 19215c15917 < barbarianism/SM --- > barbarianism/MS 19225d15926 < barbeque/DSMG 19233d15933 < barcarolle/MS 19251d15950 < bargepole 19254a15954 > barista/MS 19257c15957,15958 < bark/CSGDM --- > bark's > bark/CSGD 19262d15962 < barleycorn/S 19270c15970 < barnstorm/ZGSDR --- > barnstorm/SDRZG 19290a15991,15992 > barrelled > barrelling 19304,19305d16005 < barycenter < barycentric 19308c16008 < basalt/SM --- > basalt/M 19310c16010,16011 < base/CDRSLTGM --- > base's > base/CDSLTG 19319a16021 > baser 19335d16036 < basketful 19345c16046 < bassoonist/MS --- > bassoonist/SM 19374c16075 < bathysphere/SM --- > bathysphere/MS 19395c16096 < battlefront/SM --- > battlefront/MS 19399c16100 < battleship/MS --- > battleship/SM 19403d16103 < baulk/MDGS 19421c16121 < beachcomber/MS --- > beachcomber/SM 19462c16162 < beatify/GDSXN --- > beatify/GXNDS 19469c16169 < beautician/MS --- > beautician/SM 19472,19473c16172,16173 < beautiful/TRY < beautify/DRSZGN --- > beautiful/Y > beautify/NDRSZG 19474a16175 > beaux 19488c16189 < bedazzle/GLDS --- > bedazzle/GDSL 19506,19507d16206 < bedlinen < bedmaker/S 19515d16213 < bedsheets 19527d16224 < beechwood 19529c16226 < beefburger/MS --- > beefburger/SM 19531d16227 < beefeater 19543d16238 < beermat/S 19562c16257 < befuddle/GDSL --- > befuddle/GLDS 19565a16261 > begat 19596c16292 < behaviorist/SM --- > behaviorist/MS 19611c16307 < belated/PY --- > belated/Y 19614c16310 < beleaguer/SGD --- > beleaguer/GSD 19619d16314 < believability/U 19623d16317 < believed/U 19626c16320 < belittle/DSLG --- > belittle/LDSG 19633c16327 < belletrist/SM --- > belletrist/MS 19640c16334 < belligerent/SMY --- > belligerent/MYS 19648c16342 < bellybutton/MS --- > bellybutton/SM 19664,19665c16358,16359 < benchmark/GMS < bend/BSZGMDR --- > benchmark/MS > bend/BSZGMR 19681c16375 < benevolence/MS --- > benevolence/SM 19776c16470 < bevel/JGMDS --- > bevel/GMDS 19784c16478 < bewilder/SLGD --- > bewilder/LSGD 19797a16492,16494 > biased/U > biassed > biassing 19802,19803c16499 < biblicists < bibliographer/SM --- > bibliographer/MS 19840c16536 < bifurcate/DSXGN --- > bifurcate/XDSGN 19871,19872d16566 < bilharzia < biliary 19876a16571 > bilirubin 19889c16584 < billionaire/MS --- > billionaire/SM 19893,19894c16588 < billowy/RT < billposters --- > billowy 19900d16593 < bimodal 19904c16597,16598 < bind/AUGSM --- > bind's > bind/AUGS 19909a16604 > bingeing 19917d16611 < binodal 19927d16620 < bioengineering 19943,19945d16635 < biometric/S < biometry < biomorph 19953a16644 > bioreactor/S 19954a16646 > biosensor/S 19958d16649 < biota 19961d16651 < biotechnologist 19963d16652 < biotic 19970d16658 < bipedalism 19989,19991c16677 < birdtables < birdwatcher/MS < birdwatching --- > birdwatcher/SM 19993,19994d16678 < birefringence < birefringent 19996c16680 < birth/GMD --- > birth/ZGMDR 19997a16682 > birther/M 20001c16686 < birthright/SM --- > birthright/MS 20003c16688 < birthstone/MS --- > birthstone/SM 20015d16699 < bistable 20021a16706 > bitcoin/SM 20032c16717 < bitty/TPR --- > bitty/TR 20043c16728 < bizarre/YP --- > bizarre/Y 20045c16730 < bl/D --- > bl/DG 20054,20055c16739,16740 < blackball/SMDG < blackberry/SMG --- > blackball/SGMD > blackberry/GSM 20059a16745 > blackface 20071d16756 < blackshirts 20088c16773 < blameless/PY --- > blameless/YP 20092c16777 < blammo/GDS --- > blammo 20097c16782 < blandishment/MS --- > blandishment/SM 20111a16797 > blasé 20141c16827 < blessed/TRYP --- > blessed/YP 20145d16830 < blether/GSD 20153c16838 < blindfold/GSMD --- > blindfold/SMDG 20164c16849 < blissful/PY --- > blissful/YP 20178c16863 < bloatware/S --- > bloatware 20183c16868,16869 < block/UGDSM --- > block's > block/UGDS 20196c16882 < blogroll/MS --- > blogroll/SM 20208d16893 < bloodied/U 20215c16900 < bloodmobile/SM --- > bloodmobile/MS 20218d16902 < bloodsport/S 20221,20223c16905,16906 < bloodstone < bloodstream/MS < bloodsucker/MS --- > bloodstream/SM > bloodsucker/SM 20227,20228c16910 < bloodthirsty/TPR < bloodworm --- > bloodthirsty/RPT 20230d16911 < bloodymindedness 20245,20247c16926,16927 < bloviate/SGD < bloviation < bloviator/SM --- > bloviate/GNDS > bloviator/MS 20254c16934 < blowjob/MS! --- > blowjob/SM 20264,20265d16943 < blub/S < blubbed 20268d16945 < blubbing 20278a16956 > blueing/M 20280c16958 < bluejacket/MS --- > bluejacket/SM 20286,20287c16964,16965 < blueprint/GMDS < bluestocking/MS --- > blueprint/MDGS > bluestocking/SM 20295c16973 < blunder/MDRZGJS --- > blunder/MDRZGS 20309d16986 < blushing/UY 20317c16994 < board/JZGMDRS --- > board/ZGMDRS 20319d16995 < boardgames 20321c16997 < boardinghouse/SM --- > boardinghouse/MS 20329d17004 < boatclubs 20344c17019 < bobbysoxer/MS --- > bobbysoxer/SM 20349c17024 < bobsledder/SM --- > bobsledder/MS 20365d17039 < bodiless 20369c17043 < bodybuilder/MS --- > bodybuilder/SM 20384d17057 < boggling/Y 20386,20387c17059 < bogie/M < bogometer/S --- > bogie/MS 20389,20390c17061 < bogosity/S < bogotify/DSG --- > bogosity 20392d17062 < bogy/SM 20398d17067 < boiled/U 20419,20420c17088 < boloney/M < bolshevik/M --- > bolshevik/SM 20424c17092,17093 < bolt/USGDM --- > bolt's > bolt/USGD 20430c17099 < bombardment/MS --- > bombardment/SM 20454d17122 < bonemeal 20457c17125 < boney --- > boneyard 20466d17133 < bonnie 20468c17135,17136 < bonsai/MS --- > bonobo/MS > bonsai/M 20484c17152 < bookbinder/MS --- > bookbinder/SM 20488d17155 < booked/U 20501c17168 < bookseller/SM --- > bookseller/MS 20508d17174 < bookwork 20523c17189,17190 < boot/ASGDM --- > boot's > boot/ASGD 20527a17195 > bootie/M 20531c17199 < bootlegger/SM --- > bootlegger/MS 20534d17201 < bootprints 20548,20549c17215,17216 < borderland/SM < borderline/SM --- > borderland/MS > borderline/MS 20560c17227 < borrow/SDRZGBJ --- > borrow/SDRZGJ 20568,20571c17235,17238 < bosom/USM < bosomy/RT < boson/S < boss/DRSGM --- > bosom's > bosom/US > bosomy > boss/DSGM 20588,20589c17255 < bothy < botnet/MS --- > botnet/SM 20595c17261 < bottommost --- > botulinum 20599,20600c17265 < bougainvillaea/S < bougainvillea/SM --- > bougainvillea/MS 20616d17280 < boundedness 20619c17283 < boundless/YP --- > boundless/PY 20621c17285 < bounteous/PY --- > bounteous/YP 20623c17287 < bountiful/PY --- > bountiful/YP 20630c17294 < boustrophedon/S --- > boustrophedon 20633c17297,17298 < boutonniere/SM --- > boutonniere/MS > boutonnière/MS 20643d17307 < bowie 20645d17308 < bowlder/SM 20660d17322 < boxful 20664d17325 < boxtops 20673d17333 < boyscout 20675a17336 > bpm 20679d17339 < braced/U 20683d17342 < bracing/Y 20686d17344 < bracketed/U 20691a17350 > bradycardia 20694c17353 < braggadocio/MS --- > braggadocio/SM 20703d17361 < braincell/S 20705c17363 < brainchildren --- > brainchildren/M 20707c17365 < brainless/YP --- > brainless/Y 20709c17367 < brainstorm/GSMD --- > brainstorm/SMDG 20711,20712c17369 < brainteaser/MS < brainteasing --- > brainteaser/SM 20722c17379 < brambly/TR --- > brambly 20762c17419 < breadboard/MS --- > breadboard/SM 20764c17421 < breadcrumb/SM --- > breadcrumb/MS 20769c17426 < breadwinner/MS --- > breadwinner/SM 20777c17434 < breakfast/GMDS --- > breakfast/MDGS 20791,20795c17448,17451 < breastplate/MS < breaststroke/MS < breastwork/SM < breath/MDRSZGBJ < breathalyser/S --- > breastplate/SM > breaststroke/SM > breastwork/MS > breath/MDRSZGB 20805,20806d17460 < breccias < brecciated 20845,20846c17499 < bridged/U < bridgehead/MS --- > bridgehead/SM 20852c17505,17506 < brief/CSDTGJM --- > brief's > brief/CSDTGJ 20864c17518 < brigantine/SM --- > brigantine/MS 20868c17522 < brightness/MS --- > brightness/M 20877d17530 < brimfull 20889d17541 < brinksmanship/M 20891d17542 < brio 20907,20908c17558,17559 < broadcast/AMGSD < broadcaster/SM --- > broadcast/AMDGS > broadcaster/MS 20912d17562 < broadleaved 20914c17564 < broadminded/P --- > broadminded 20918c17568 < broadsword/MS --- > broadsword/SM 20927c17577 < broke/G --- > broke 20942d17591 < broncho/SM 20945,20946c17594,17595 < broncobuster/MS < brontosaur/SM --- > broncobuster/SM > brontosaur/MS 20963c17612 < brotherhood/SM --- > brotherhood/MS 20983d17631 < bruised/U 20996,20997d17643 < brushy < brusk/RT 21014,21015c17660 < bubonic < buccaneer/SMDG --- > buccaneer/SGMD 21022c17667,17668 < buckle/UDSGM --- > buckle's > buckle/UDSG 21024d17669 < buckminsterfullerene 21031a17677 > buckyball/SM 21039c17685 < budgerigar/SM --- > budgerigar/MS 21051c17697,17698 < bug/CSM --- > bug's > bug/CS 21065a17713 > builtin 21085c17733 < bulletproof/GSD --- > bulletproof/SDG 21092c17740 < bullheaded/YP --- > bullheaded/PY 21106c17754 < bully/DRSMTG --- > bully/DSMG 21124c17772 < bumptious/YP --- > bumptious/PY 21130c17778 < bunco/MDG --- > bunco/SMDG 21133d17780 < bundled/U 21141c17788,17789 < bunk/CDGSM --- > bunk's > bunk/CDGS 21144c17792 < bunko/M --- > bunko/SMDG 21155c17803,17804 < burden/USGDM --- > burden's > burden/USGD 21160c17809 < bureaucrat/SM --- > bureaucrat/MS 21176c17825 < burgomaster/MS --- > burgomaster/SM 21179,21180c17828 < buried/U < burk/S --- > burka/S 21186c17834 < burn/MDRZGSBJ --- > burn/MDRZGSB 21188d17835 < burned/U 21195c17842 < burnt/U --- > burnt 21196a17844 > burqa/S 21216d17863 < bushfire 21219d17865 < bushland 21231,21232c17877 < businesspeople < businessperson/MS --- > businessperson/SM 21239,21240c17884 < busmen < buss/MD --- > buss/M 21242d17885 < bustard/S 21260a17904 > buttercream 21272,21273c17916,17918 < button/USDGM < buttonhole/MGDS --- > button's > button/USDG > buttonhole/DSMG 21277c17922 < buxom/RT --- > buxom 21284a17930 > buzzkill/SM 21322c17968 < cabinetmaker/SM --- > cabinetmaker/MS 21327c17973 < cablecast/MGS --- > cablecast/GMS 21346a17993 > caddie/MDS 21349c17996 < caddy/GDSM --- > caddying 21360d18006 < caesarian/MS 21368a18015 > café/SM 21370a18018,18019 > cagier > cagiest 21374d18022 < cagy/PTR 21402c18050 < calculate/AXGNVDS --- > calculate/AGNVDSX 21406c18054 < calculator/MS --- > calculator/SM 21412c18060 < calender/MDGS --- > calender's 21417d18064 < calibrated/U 21420c18067 < calico/M --- > calico/MS 21422d18068 < calif/MS 21454,21455d18099 < calorimeter/S < calorimetry 21457c18101 < calumniate/DSGN --- > calumniate/GNDS 21478d18121 < camerae 21489c18132,18133 < camp/CSTGDM --- > camp's > camp/CSGD 21493,21494c18137 < campanological < campanologist/SM --- > campanologist/MS 21506c18149 < can/SMDRJZG --- > can/SMDRZG 21510a18154 > canapé/MS 21516d18159 < canceled/U 21518c18161 < cancellation/MS --- > cancellation/SM 21526,21527c18169 < candelas < candid/RYPT --- > candid/YP 21538,21539c18180,18181 < candlestick/SM < candlewick/MS --- > candlestick/MS > candlewick/SM 21558c18200 < cannibalize/DSG --- > cannibalize/GDS 21566d18207 < cannula 21574c18215 < canonization/MS --- > canonization/SM 21579c18220,18221 < cant/CZRDGSM --- > cant's > cant/CZRDGS 21581d18222 < cantaloup/SM 21591c18232 < cantilever/GSMD --- > cantilever/MDGS 21595c18236 < cantonment/SM --- > cantonment/MS 21605c18246 < capable/TR --- > capable/I 21611d18251 < capacitive 21614c18254 < caparison/MDSG --- > caparison/MDGS 21630c18270 < capitulate/AGNXDS --- > capitulate/ADSXGN 21639c18279 < capricious/YP --- > capricious/PY 21662d18301 < caracul/M 21665c18304 < caramelize/GDS --- > caramelize/DSG 21668a18308 > caravansarai/S 21675c18315 < carbohydrate/MS --- > carbohydrate/SM 21681d18320 < carbonic 21684d18322 < carbonyl 21687a18326 > carbs 21690,21691c18329 < carburetor/MS < carcase/S --- > carburetor/SM 21694,21695c18332 < carcinogenesis < carcinogenic/SM --- > carcinogenic/MS 21708,21709c18345,18346 < cardinality < cardiogram/MS --- > cardio > cardiogram/SM 21712,21713c18349 < cardioid < cardiologist/SM --- > cardiologist/MS 21714a18351 > cardiomyopathy 21720d18356 < cared/U 21731c18367 < careless/YP --- > careless/PY 21744,21746c18380 < caricaturisation < caricaturist/MS < caricaturization --- > caricaturist/SM 21761a18396 > carnie/M 21763a18399 > carnivora 21765c18401 < carnivorous/YP --- > carnivorous/PY 21781c18417 < carpenter/MDSG --- > carpenter/MDGS 21795d18430 < carrell/SM 21801,21802c18436 < carroty/RT < carrousel/SM --- > carroty 21818c18452 < cartographer/MS --- > cartographer/SM 21823c18457 < cartoonist/SM --- > cartoonist/MS 21837c18471 < caseharden/GSD --- > caseharden/DGS 21843a18478 > cashback/M 21867c18502 < castigator/MS --- > castigator/SM 21874d18508 < castrato 21888c18522 < cataleptic/SM --- > cataleptic/MS 21890a18525,18526 > catalogue/DSMG > catalogued/U 21901c18537 < catastrophe/SM --- > catastrophe/MS 21914,21915c18550 < catchphrase/MS < catchup/M --- > catchphrase/SM 21929c18564 < caterwaul/GSMD --- > caterwaul/SMDG 21937c18572 < catheterize/GDS --- > catheterize/DSG 21943d18577 < cationic 21950a18585 > catsup/MS 21969d18603 < caulking/M 22003d18636 < cavitation 22009d18641 < cayman/MS 22020d18651 < cedarwood 22031d18661 < celebrated/U 22036d18665 < celebs 22052a18682 > cellulitis 22073c18703 < cent/ARM --- > cent/SZMR 22076c18706 < centenarian/SM --- > centenarian/MS 22079c18709 < center/MDGS --- > center/MDG 22081,22082c18711,18712 < centerfold/SM < centerpiece/SM --- > centerfold/MS > centerpiece/MS 22085c18715 < centiliter/SM --- > centiliter/MS 22087c18717 < centimeter/SM --- > centimeter/MS 22089c18719 < central/TSMRY --- > central/SMY 22094,22096c18724,18725 < centralize/CDSG < centralizer/SM < centric/F --- > centralize/CGDS > centralizer/MS 22098c18727 < centrifuge/MGDS --- > centrifuge/DSMG 22102,22103d18730 < centroid/S < cents 22117a18745 > cerebrovascular 22129,22130c18757 < certain/UYT < certainer --- > certain/UY 22134,22136c18761,18763 < certificate/MGNXDS < certification/M < certify/DSG --- > certificate/MGDS > certification's > certify/CDSNXG 22158c18785,18786 < chain/UGDSM --- > chain's > chain/UGDS 22163c18791 < chairmanship/MS --- > chairmanship/SM 22165c18793 < chairperson/MS --- > chairperson/SM 22179d18806 < challenging/Y 22182,22184c18809,18810 < chamberlain/SM < chambermaid/SM < chamberpot/S --- > chamberlain/MS > chambermaid/MS 22187d18812 < chammy/SM 22197c18822 < chancellor/SM --- > chancellor/MS 22203c18828 < chandelier/MS --- > chandelier/SM 22218c18843 < channelize/GDS --- > channelize/DSG 22220c18845 < chant/ZGMDRJS --- > chant/ZGMDRS 22224,22226c18849 < chanticleer/SM < chantry/S < chanty/SM --- > chanticleer/MS 22252c18875 < characteristic/MS --- > characteristic/SM 22255c18878 < characterize/GDS --- > characterize/DSG 22263c18886 < charge/EAMGDS --- > charge/AESDGM 22270c18893 < charioteer/SM --- > charioteer/MS 22272,22273c18895 < charismatic/SM < charismatically --- > charismatic/MS 22285c18907 < charming/TRY --- > charming/Y 22291c18913,18914 < charter/ASGDM --- > charter's > charter/ASGD 22293d18915 < chartists 22306c18928 < chastisement/MS --- > chastisement/SM 22311a18934 > chateaux 22323c18946 < chauffeur/MDGS --- > chauffeur/GMDS 22330d18952 < cheapish 22333c18955 < cheapskate/SM --- > cheapskate/MS 22336c18958,18959 < check/AGMDSU --- > check's/A > check/UAGDS 22338c18961 < checked/U --- > checkbox 22340c18963 < checkerboard/MS --- > checkerboard/SM 22347a18971 > checksum 22365,22366c18989,18990 < cheerleader/MS < cheerless/YP --- > cheerleader/SM > cheerless/PY 22371c18995 < cheeseburger/MS --- > cheeseburger/SM 22382,22383d19005 < chemiluminescence < chemiluminescent 22386c19008 < chemistry/MS --- > chemistry/SM 22388d19009 < chemosynthesis 22406c19027 < chesterfield/MS --- > chesterfield/SM 22413c19034 < chew/SBZGMDR --- > chew/SZGMDR 22424c19045 < chichi/TMRS --- > chichi/MS 22431c19052 < chickenshit/SM! --- > chickenshit/MS! 22442c19063 < chieftainship/MS --- > chieftainship/SM 22455c19076 < childish/PY --- > childish/YP 22462c19083 < childproof/SGD --- > childproof/GSD 22464d19084 < chile/MS 22469d19088 < chilli/TPMR 22473c19092 < chilly/S --- > chilly/TPR 22475d19093 < chimaerical 22483c19101 < chimpanzee/MS --- > chimpanzee/SM 22507d19124 < chiral 22511,22512c19128,19129 < chiropractic/MS < chiropractor/MS --- > chiropractic/SM > chiropractor/SM 22518a19136 > chiselled 22519a19138 > chiselling 22526d19144 < chitlings/M 22527a19146 > chitosan 22529d19147 < chivalric 22539d19156 < chlorate 22542c19159 < chlorinate/DSGN --- > chlorinate/GNDS 22545,22546c19162,19163 < chlorofluorocarbon/MS < chloroform/SMDG --- > chlorofluorocarbon/SM > chloroform/SGMD 22549d19165 < chloroquine 22552d19167 < chocaholic/SM 22555c19170 < chocoholic/MS --- > chocoholic/SM 22562c19177 < choirmaster/MS --- > choirmaster/SM 22565a19181,19182 > cholecystectomy > cholecystitis 22570d19186 < choline 22574d19189 < choosey 22593c19208 < choreograph/ZGDR --- > choreograph/DRZG 22610,22611c19225 < christened/U < christening/SM --- > christening/MS 22613c19227 < chroma --- > christology 22616d19229 < chromaticism 22618d19230 < chromatographic 22621d19232 < chromite 22628d19238 < chronicled/U 22633c19243 < chronologist/SM --- > chronologist/MS 22635,22636c19245 < chronometer/MS < chronometric --- > chronometer/SM 22645c19254 < chuff/D --- > chuffed 22658c19267 < chunk/MS --- > chunk/GMDS 22667c19276 < churchwarden/SM --- > churchwarden/MS 22678d19286 < chutzpa/M 22680a19289,19292 > château/M > châteaux > châtelaine/SM > ciabatta/SM 22683c19295 < cicatrice/SM --- > cicatrices 22687c19299,19300 < cider/MS --- > cider's > cider/S 22689d19301 < cigaret/MS 22692d19303 < ciggy/S 22708c19319,19320 < cipher/CGDSM --- > cipher's > cipher/CGDS 22721d19332 < circulant 22724,22725c19335,19336 < circularize/GDS < circulate/ADSGN --- > circularize/DSG > circulate/ADSG 22728c19339 < circumcise/GNDSX --- > circumcise/XDSGN 22731c19342 < circumference/SM --- > circumference/MS 22736c19347 < circumnavigate/XDSGN --- > circumnavigate/XGNDS 22738d19348 < circumnavigational 22740,22741c19350,19351 < circumscribe/DSG < circumscription/SM --- > circumscribe/GDS > circumscription/MS 22744c19354 < circumstance/DSMG --- > circumstance/MGDS 22746,22747c19356,19357 < circumvent/GDBS < circumvention/MS --- > circumvent/DSG > circumvention/M 22754d19363 < cissy/S 22759c19368,19369 < cite/IAGSDM --- > cite's > cite/IAGSD 22764d19373 < citrate 22771d19379 < cityscape 22776d19383 < civies/M 22780c19387 < civilization/SM --- > civilization/MS 22789c19396,19398 < claim/CKEAGDSMB --- > claim's > claim/CKEAGDS > claimable/AKE 22792c19401 < claimer/CEMS --- > claimer/ECSM 22794c19403 < clairvoyant/SM --- > clairvoyant/MS 22805c19414 < clamorous/Y --- > clamorous 22821c19430 < clapboard/MDSG --- > clapboard/MDGS 22830c19439 < clarify/NXDSG --- > clarify/XDSNG 22837c19446,19447 < clasp/UGDSM --- > clasp's > clasp/UGDS 22842,22843c19452,19453 < classicist/SM < classifiable/U --- > classicist/MS > classifiable 22846,22848c19456,19459 < classificatory < classified/MSU < classifier/SM --- > classified's > classified/U > classifieds > classifier/MS 22864,22865c19475,19477 < claw/SGMD < clay/SM --- > claw's > claw/CSGD > clay/M 22869d19480 < claymore/S 22913c19524,19526 < click/ZGMDRS --- > cliché/MS > clichéd > click/BZGMDRS 22916a19530 > clientèle/MS 22927,22928c19541 < climatological < climatologist/MS --- > climatologist/SM 22932,22934d19544 < climbable/U < climbdown < climbed/U 22950c19560 < cliometrician/SM --- > cliometrician/MS 22959,22960d19568 < cliquier < cliquiest 22962a19571 > clit/SM 22969c19578,19579 < cloak/USDGM --- > cloak's > cloak/USDG 22974d19583 < clockmaker 22980c19589,19590 < clog/USM --- > clog's > clog/US 22983a19594 > cloisonné/M 22993,22994c19604,19605 < close/EIGTSDMB < closed/U --- > closable/I > close/DRSMYTGBJP 22996d19606 < closely 23000d19609 < closer/S 23003,23004c19612,19613 < closing/SM < closure/IEMS --- > closing/M > closure/ESM 23008,23009c19617,19618 < clotheshorse/SM < clothesline/MS --- > clotheshorse/MS > clothesline/SM 23022d19630 < cloudscape/S 23028c19636,19637 < cloverleaf/MS --- > cloverleaf/SM > cloverleaves 23030c19639 < clownish/PY --- > clownish/YP 23043d19651 < clubroom 23089c19697 < coalmine/ZS --- > coalmine/S 23147,23148c19755 < cockshies < cocksucker/SM! --- > cocksucker/MS! 23154d19760 < cocoanut/MS 23157c19763 < cod/ZSMR --- > cod/SM 23162,23164c19768,19770 < code/CAGDSM < codebreaker < codec/MS --- > code's > code/CZGDRS > codec/SM 23166d19771 < codename/D 23168,23170c19773,19774 < codependent/MS < coder/CSM < codeword/S --- > codependent/SM > coder/CM 23178,23180c19782,19783 < codify/DRSNXZG < codling < codon/MS --- > codify/XDRSNZG > codon/SM 23187c19790 < coelenterate/SM --- > coelenterate/MS 23189c19792 < coerce/XDRSZGNV --- > coerce/DRSZGNV 23191d19793 < coercible 23201c19803 < coffeemaker/MS --- > coffeemaker/SM 23237c19839 < coif/MS --- > coif/MDGS 23241c19843,19844 < coil/UADGSM --- > coil's/A > coil/UADGS 23245c19848 < coincidence/SM --- > coincidence/MS 23250d19852 < cointreau 23260d19861 < coldish 23271c19872 < collaborate/GNVXDS --- > collaborate/DSXGNV 23275c19876 < collaborator/SM --- > collaborator/MS 23285d19885 < collated/U 23291,23292c19891,19893 < collect/ASGVDM < collectable/SM --- > collect's > collect/ASGVD > collectable/MS 23296,23297c19897,19898 < collection/ASM < collective/SMY --- > collection/AMS > collective/MYS 23299,23300c19900 < collectivist/MS < collectivity --- > collectivist/SM 23302c19902 < collectivize/GDS --- > collectivize/DSG 23306d19905 < collegial 23314,23316d19912 < collimation < collimator < collinear 23318,23319c19914 < collisional < collocate/MGNXDS --- > collocate/MGNDSX 23325c19920 < colloquialism/MS --- > colloquialism/SM 23327c19922 < colloquium/SM --- > colloquium/MS 23339,23340c19934 < colonialist/SM < colonic --- > colonialist/MS 23342,23343c19936 < colonization/CAM < colonizations --- > colonization/ACM 23347c19940 < colonoscope/SM --- > colonoscope/MS 23351c19944,19945 < color/AEGDSM --- > color's > color/AEGDS 23357c19951,19953 < colored/MSU --- > colored's > colored/U > coloreds 23362,23363c19958 < colorimetric < coloring/SM --- > coloring's 23367d19961 < colorizing/C 23384d19977 < comae 23393,23395c19986,19988 < combination/MS < combinatorial < combine/ADSGM --- > combination/SM > combine's > combine/ADSG 23400d19992 < combusted 23402c19994 < combustible/SM --- > combustible/MS 23414c20006 < comer/M --- > comer's 23417,23419c20009,20011 < cometary < comeuppance/MS < comfit/ESM --- > comeuppance/SM > comfit's > comfit/ES 23421c20013 < comfortable/UP --- > comfortable/P 23437c20029 < commandeer/DGS --- > commandeer/GDS 23439,23440c20031 < commanding/Y < commandment/SM --- > commandment/MS 23442c20033 < commemorate/XDSGNV --- > commemorate/XGNVDS 23445c20036 < commence/ALDSG --- > commence/ADSLG 23450c20041 < commendation/ASM --- > commendation/AMS 23452c20043 < commensurable/I --- > commensurable 23454c20045 < comment/GSMDRZ --- > comment/ZGSMD 23465c20056 < commiserate/DSXGNV --- > commiserate/GNVDSX 23468c20059 < commissariat/MS --- > commissariat/SM 23470c20061,20062 < commission/ACGSDM --- > commission's > commission/ACSGD 23481a20074 > committer/S 23483c20076,20078 < commode/EISM --- > commode's > commode/EIS > commodification 23487c20082,20083 < common/UPRYTM --- > common's > common/UPRYT 23492c20088 < commonplace/SM --- > commonplace/MS 23495d20090 < commonsensical 23501d20095 < communality 23506,23507c20100,20101 < communicant/SM < communicate/XDSGNV --- > communicant/MS > communicate/GNVDSX 23509,23510c20103,20104 < communicative/P < communicator/MS --- > communicative/U > communicator/SM 23516d20109 < communitarian 23520d20112 < commutativity 23526c20118 < compaction/S --- > compaction 23529c20121 < companion/SMB --- > companion/SBM 23537,23538c20129 < comparative/SMY < comparator/S --- > comparative/MYS 23541c20132 < compartment/MS --- > compartment/SM 23548c20139 < compatibility/ISM --- > compatibility/IM 23558c20149 < compensate/DSGNX --- > compensate/DSXGN 23561d20151 < compensator 23570,23572c20160,20161 < competition/MS < competitive/UP < competitively --- > competition/SM > competitive/PY 23575,23577c20164,20166 < compilable/U < compilation/ASM < compile/BDRSZG --- > compilation/AM > compilations > compile/DRSZG 23585d20173 < complaining/UY 23590,23591c20178 < complement/MDGS < complementarity --- > complement/SGMD 23593c20180 < complete/PYTGNBXDRS --- > complete/PYTGNXDRS 23597c20184 < complex/TMRSY --- > complex/MSY 23608c20195 < compliment/MDSG --- > compliment/MDGS 23610c20197 < comply/XDSNG --- > comply/NDSXG 23618,23620c20205,20206 < composite/MYNSX < composition/CSM < compositional --- > composite/MYGNXPDS > composition/CM 23635c20221,20222 < compress/CGVDSM --- > compress's > compress/CGDS 23637,23638c20224 < compressibility < compressible/I --- > compressible 23640,23641d20225 < compressional < compressions 23644,23645c20228,20229 < compromise/DSMG < comptroller/SM --- > compromise/MGDS > comptroller/MS 23647c20231 < compulsive/PY --- > compulsive/YP 23651,23654c20235,20236 < compunction/MS < computability < computably < computation/MS --- > compunction/SM > computation/SM 23656c20238 < compute/ADSBG --- > compute/ADSG 23661a20244 > compère/DSG 23665c20248 < concatenate/DSGNX --- > concatenate/XDSGN 23676d20258 < conceivability/I 23680c20262 < concentrate/MGNDSX --- > concentrate/DSMGNX 23682c20264 < concentrator/S --- > concentric 23689c20271 < conceptualize/GDS --- > conceptualize/DSG 23694c20276,20277 < concert/ESDGM --- > concert's > concert/ESDG 23697c20280 < concertina/SMDG --- > concertina/SGMD 23699c20282 < concertmaster/SM --- > concertmaster/MS 23708d20290 < conciliar 23711c20293 < conciliator/MS --- > conciliator/SM 23719c20301 < conclusive/IPY --- > conclusive/IYP 23723c20305 < concomitant/SMY --- > concomitant/MYS 23725c20307 < concordance/MS --- > concordance/SM 23729c20311 < concrete/DSMYGNPX --- > concrete/DSPMYGNX 23738c20320 < concurrence/MS --- > concurrence/SM 23742,23744c20324,20326 < concussion/MS < condemn/SBDRZG < condemnation/SM --- > concussion/SM > condemn/SDRZG > condemnation/MS 23747c20329 < condensate/MNSX --- > condensate/MNXS 23755c20337,20338 < condition/AGSDM --- > condition's > condition/AGSD 23757d20339 < conditionality 23764,23765c20346,20347 < condominium/SM < condone/DSGB --- > condominium/MS > condone/DSG 23768c20350 < conduct/SMV --- > conduct/MDGV 23773c20355 < conductivity/SM --- > conductivity/M 23782c20364 < confabulate/XGNDS --- > confabulate/XDSGN 23784c20366 < confection/SMRZ --- > confection/SZMR 23787d20368 < confectionist 23792c20373 < conference/SMG --- > conference/MGS 23800c20381 < confessional/MS --- > confessional/SM 23812,23814c20393,20394 < config/MS < configuration/AS < configure/ABGDS --- > configuration/S > configure/B 23816c20396 < confinement/SM --- > confinement/MS 23818c20398 < confirmation/AMS --- > confirmation/ASM 23821c20401 < confiscate/GNXDS --- > confiscate/DSGNX 23825c20405 < conflagration/SM --- > conflagration/MS 23829,23830d20408 < conflicting/Y < conflictual 23833c20411 < confocal --- > conform/ZB 23835d20412 < conformal 23838d20414 < conformational 23842d20417 < confounded/Y 23846c20421,20422 < confuse/BRZ --- > confrère/SM > confuse/RZ 23858c20434 < conglomerate/XMGNDS --- > conglomerate/DSXMGN 23861c20437 < congratulate/DSXGN --- > congratulate/XGNDS 23864,23865c20440,20441 < congregant/SM < congregate/XDSGN --- > congregant/MS > congregate/GNDSX 23878,23879c20454 < congruence/SM < congruency --- > congruence/M 23881d20455 < congruential 23891d20464 < conjugacy 23896,23897c20469,20470 < conjunctiva/MS < conjunctive/MS --- > conjunctiva/SM > conjunctive/SM 23899c20472 < conjuration/SM --- > conjuration/MS 23903d20475 < conman 23907,23912c20479,20480 < connectedness < connecter/MS < connectible < connection/ESM < connectionless < connective/SM --- > connection/EMS > connective/MS 23917c20485 < conniption/SM --- > conniption/MS 23921,23922c20489 < connoisseur/MS < connoisseurship --- > connoisseur/SM 23937,23938c20504 < conscionable/U < conscious/UPY --- > conscious/UYP 23946a20513 > consensual 23949c20516 < consequence/MS --- > consequence/SM 23953c20520 < conservation/MS --- > conservation/M 23957c20524 < conservative/PMYS --- > conservative/MYS 23964c20531 < considerate/IYNP --- > considerate/IPYN 23966c20533 < consideration/IAM --- > consideration/AIM 23971c20538 < consignment/SM --- > consignment/MS 23978c20545 < consolation/SM --- > consolation/MS 23980,23981c20547 < consoled/U < consolidate/GNXDS --- > consolidate/XDSGN 23984c20550 < consolidator/SM --- > consolidator/MS 23986a20553 > consommé/M 23989d20555 < consonantal 23996c20562 < conspirator/SM --- > conspirator/MS 24004d20569 < consternating 24006c20571 < constipate/DSGN --- > constipate/GNDS 24009c20574 < constituent/MS --- > constituent/SM 24014d20578 < constitutionalists 24018,24020c20582,20584 < constraint/MS < constrict/SGVD < constriction/MS --- > constraint/SM > constrict/GVSD > constriction/SM 24023,24025c20587,20589 < construct/CADVGSM < constructable < construction/CASM --- > construct's > construct/CADVGS > construction/CAMS 24030,24032c20594 < constructivism < constructivist < constructor/SM --- > constructor/MS 24038c20600 < consult/AGD --- > consult/GSD 24041c20603 < consultation/SM --- > consultation/MS 24043,24044c20605 < consults < consumable/MS --- > consumable/SM 24049,24050c20610,20611 < consumerist/SM < consummate/YGNDSX --- > consumerist/MS > consummate/YGNXDS 24052c20613 < consumption/SM --- > consumption/M 24061d20621 < containable/U 24064c20624 < containerize/GDS --- > containerize/DSG 24070c20630 < contaminator/MS --- > contaminator/SM 24073c20633 < contemplate/XGNVDS --- > contemplate/DSGNV 24087c20647 < contention/MS --- > contention/SM 24106d20665 < continuable 24108,24109c20667,20668 < continuance/ESM < continuation/ESM --- > continuance/EMS > continuation/EMS 24117d20675 < contra/S 24118a20677 > contrabassoon/S 24126c20685 < contradict/DGS --- > contradict/SDG 24128d20686 < contradictorily 24130c20688 < contradistinction/SM --- > contradistinction/MS 24133c20691 < contraindicate/GNDSX --- > contraindicate/GNXDS 24137a20696,20697 > contrarian/SM > contrarianism 24142,24145c20702,20703 < contrary/SMP < contrast/MDGVS < contrasting/Y < contrasty --- > contrary/PSM > contrast/MDGS 24149c20707 < contribute/GNDX --- > contribute/XGND 24151c20709 < contributor/SM --- > contributor/MS 24154c20712 < contrivance/SM --- > contrivance/MS 24157c20715,20716 < control/CSM --- > control's > control/CS 24162c20721 < controversial/UY --- > controversial/Y 24164c20723 < controvert/DGS --- > controvert/DSG 24173,24174c20732,20733 < conurbation/SM < convalesce/GDS --- > conurbation/MS > convalesce/DSG 24177d20735 < convect/GVSD 24179a20738 > convective 24184a20744 > convenor/MS 24186,24187c20746,20747 < conventicle/SM < convention/MS --- > conventicle/MS > convention/SM 24189,24190d20748 < conventionalism < conventionalist 24194c20752 < convergence/SM --- > convergence/MS 24200d20757 < conversazione 24202c20759,20760 < convert/AGSDM --- > convert's > convert/AGSD 24210c20768 < convey/SBDRZG --- > convey/SBDG 24212d20769 < conveyer/M 24215c20772 < conviction/SM --- > conviction/MS 24224d20780 < convolve/D 24231c20787,20788 < cook/ADGSM --- > cook's > cook/ADGS 24237c20794 < cookie/SM --- > cookie/M 24254c20811 < cooperative/PSMY --- > cooperative/PMYS 24256,24257c20813,20814 < cooperator/MS < coordinate/MYGNDS --- > cooperator/SM > coordinate/DSMYGN 24260c20817 < coordinator/SM --- > coordinator/MS 24267c20824 < copier/M --- > copier/SM 24272d20828 < coplanar 24275c20831 < copperhead/MS --- > copperhead/SM 24278d20833 < coppice/DSMG 24281,24283d20835 < coprocessor/S < coprolite < coprophagous 24287c20839 < copulate/XGNVDS --- > copulate/GNVDS 24290,24291c20842,20843 < copulatory < copy/DRSMZGB --- > copy's > copy/ADSG 24297,24299c20849,20851 < copyleft/S < copyright/SGMDB < copywriter/SM --- > copyleft > copyright/GSMD > copywriter/MS 24306d20857 < coralline 24322c20873 < corespondent/SM --- > corespondent/MS 24325c20876,20877 < cork/UDGSM --- > cork's > cork/UDGS 24342d20893 < cornflake/S 24345c20896 < cornflower/MS --- > cornflower/SM 24366,24367c20917 < corporate/SN < corporately --- > corporate/XYN 24369d20918 < corporations 24371d20919 < corporatist 24388d20935 < correctable/U 24390c20937 < correction/MS --- > correction/SM 24392c20939 < corrective/MS --- > corrective/SM 24394,24395c20941,20942 < corrector/S < correlate/DSXMGNV --- > corrector > correlate/XDSMGNV 24398c20945 < correlative/SM --- > correlative/MS 24400c20947 < correspondence/MS --- > correspondence/SM 24405d20951 < corrigenda 24408c20954 < corroborate/GNVXDS --- > corroborate/GNVDSX 24419d20964 < corrupted/U 24423c20968 < corruption/SM --- > corruption/MS 24432,24433d20976 < corticosteroid/S < cortisol 24434a20978 > cortège/SM 24445d20988 < cosiness/M 24448c20991 < cosmetician/SM --- > cosmetician/MS 24452c20995 < cosmical/Y --- > cosmically 24455,24456c20998,20999 < cosmological/Y < cosmologist/MS --- > cosmological > cosmologist/SM 24459c21002 < cosmopolitan/SM --- > cosmopolitan/MS 24462,24463c21005,21006 < cosponsor/SGMD < cossacks --- > cosplay > cosponsor/GSMD 24467c21010 < cost/MYGSJ --- > cost/MDYGSJ 24471d21013 < costless 24490,24491c21032,21033 < cottonseed/SM < cottontail/SM --- > cottonseed/MS > cottontail/MS 24505a21048 > coulée/SM 24515,24516c21058 < count/ERBZGDMS < countability/E --- > count/EASMDG 24518c21060 < countably/U --- > countably 24521,24523c21063,21065 < countenance/EGDSM < counter/EM < counteract/GVSD --- > countenance/EMGDS > counter/EMS > counteract/SGVD 24526,24527c21068,21069 < counterattack/MDGS < counterbalance/DSMG --- > counterattack/GMDS > counterbalance/MGDS 24529c21071 < counterclaim/SGMD --- > counterclaim/GSMD 24534a21077 > counterfactual 24542c21085 < countermand/MDGS --- > countermand/GMDS 24545c21088 < counteroffensive/MS --- > counteroffensive/SM 24547,24548c21090,21092 < counterpane/MS < counterpart/MS --- > counterpane/SM > counterpart/SM > counterpetition 24552c21096 < counterrevolution/MS --- > counterrevolution/SM 24554c21098 < countersign/GMDS --- > countersign/GSMD 24556c21100 < countersink/GMS --- > countersink/GSM 24558d21101 < counterstrike 24561c21104 < countervail/GDS --- > countervail/GSD 24575c21118,21119 < coup/ASM --- > coup's > coup/AS 24577,24578c21121,21122 < couple/CUDSGM < coupler/S --- > couple's > couple/UCGSD 24605c21149 < cousin/SMY --- > cousin/SM 24608,24609d21151 < covalent/Y < covariance/S 24613,24614c21155,21157 < cover/AEUGDSM < coverage/MS --- > cover's > cover/AEUGDS > coverage/M 24616c21159,21160 < covering/MS --- > covering's > coverings 24618d21161 < coversheet 24639c21182 < cowl/MDGSJ --- > cowl/MGSJ 24677,24678c21220 < crack/SMDRYZGBJ < crackable/U --- > crack/SMDRYZGJ 24685d21226 < crackly/TR 24713c21254 < crank/SMDRTG --- > crank/SMDG 24724c21265 < crappie/RSMT --- > crappie/M 24726c21267 < crappy --- > crappy/RSPT 24728,24730c21269,21270 < crapshooter/SM < crash/MDRSZG < crashing/Y --- > crapshooter/MS > crash/MDSG 24744c21284 < crawlspace/MS --- > crawlspace/SM 24765,24769c21305,21306 < creased/U < creatable < create/KADSGNV < created/U < creation/ASMK --- > create/AKVNGSDX > creation/KAM 24780c21317 < credential/GSMD --- > credential/SGMD 24786d21322 < creditability 24788d21323 < credited/U 24807c21342 < crematorium/SM --- > crematorium/MS 24810c21345 < crenelate/GNXDS --- > crenelate/XGNDS 24849d21383 < criminalization/C 24851d21384 < criminological 24863c21396 < crippleware/S --- > crippleware 24872c21405 < crisscross/MDSG --- > crisscross/GMDS 24907c21440 < croquet/MDG --- > croquet/M 24910c21443,21444 < cross/AUGTSDM --- > cross's > cross/AUGTSD 24918,24920c21452,21454 < crossbreed/SMG < crosscheck/SGMD < crosscurrent/SM --- > crossbreed/SGM > crosscheck/SMDG > crosscurrent/MS 24925c21459 < crosshatch/DSG --- > crosshatch/GDS 24934d21467 < crosstalk 24937d21469 < crossways 24943,24944c21475 < crotchety/P < crotchless --- > crotchety 24954,24955c21485 < crowdfunded < crowdfunding --- > crowdfund/SDG 24957c21487 < crowfoot/M --- > crowfoot/SM 24960a21491 > croûton/MS 24962d21492 < cruciate 24964d21493 < crucifiable 24966c21495 < crucifixion/MS --- > crucifixion/SM 24974a21504 > crudités/M 24979,24980c21509,21510 < cruft/SDG < crufty/S --- > cruft/SD > crufty 24993c21523 < crunch/ZGMDRS --- > crunch/GMDRS 25003c21533 < crust/ISDGM --- > crust/SMDG 25015,25017c21545 < cryonic < cryonics < cryostat --- > cryonic/S 25019,25022c21547 < crypt/CSM < cryptanalysis < cryptanalyst < cryptanalytic --- > crypt/SM 25026,25028c21551 < cryptographer/MS < cryptographic < cryptographically --- > cryptographer/SM 25031d21553 < cryptology 25037d21558 < crystallographer/S 25039a21561 > crèche/MS 25044c21566 < cub/ZGSJMDR --- > cub/ZGSMDR 25049c21571 < cubical/Y --- > cubical 25051d21572 < cubing/GD 25062c21583 < cuddly/TRP --- > cuddly/TR 25066d21586 < cufflink/SM 25072c21592 < culminate/DSXGN --- > culminate/XDSGN 25083,25084c21603,21604 < cultivar/MS < cultivate/DSBXGN --- > cultivar/SM > cultivate/BDSGN 25093,25094c21613,21614 < cumber/ISDG < cumbersome/PY --- > cumber/SDG > cumbersome/P 25100d21619 < cumquat/MS 25115d21633 < cupidinously 25131c21649 < curatorships --- > curaçao 25138c21656,21657 < cure/KZGBDRSM --- > cure's > cure/KZGBDRS 25145d21663 < curial 25149c21667 < curious/RYTP --- > curious/YP 25152c21670,21671 < curl/UDGSM --- > curl's > curl/UDGS 25159d21677 < curlycue/MS 25163,25164c21681,21682 < current/FAYSM < curricle --- > current's > current/FSY 25170,25172c21688,21692 < curse/DSMGV < cursed/TRY < cursive/EAYM --- > curse's > curse/ADSGV > cursed/Y > cursive's > cursive/EAY 25179c21699 < curtailment/MS --- > curtailment/SM 25182d21701 < curtsey/MDGS 25186d21704 < curvacious 25189d21706 < curvilinear 25196c21713,21714 < cuss/FEGSDM --- > cuss's > cuss/EFGSD 25207,25209c21725,21727 < customhouse/MS < customization/MS < customize/DSGB --- > customhouse/SM > customization/M > customize/DSG 25216d21733 < cutesie 25221d21737 < cutlas/M 25231d21746 < cuttle 25239d21753 < cyanogen 25240a21755 > cyberbully/S 25241a21757 > cybercafé/S 25244a21761 > cybersex 25249d21765 < cycleway/S 25253d21768 < cycloid 25257c21772 < cyclopaedia/SM --- > cyclopaedia/MS 25262d21776 < cyder/SM 25265c21779 < cylindrical/Y --- > cylindrical 25272c21786 < cypher/MDSG --- > cypher/M 25275d21788 < cysteine/M 25278,25281c21791,21792 < cytochrome < cytokine/MS < cytological < cytologist/MS --- > cytokine/SM > cytologist/SM 25286d21796 < cytotoxic 25291,25292c21801,21802 < d'Arezzo < d'Estaing --- > d'Arezzo/M > d'Estaing/M 25310c21820 < dado/M --- > dado/SM 25341d21850 < dalesman 25351d21859 < damaging/Y 25360,25361c21868 < damned/TR < damning/Y --- > damned/T 25371d21877 < danceable 25382c21888 < dangerous/PY --- > dangerous/Y 25401,25402d21906 < darkish < darkly/TR 25420d21923 < databank/SM 25422,25423c21925,21927 < datasheet/MS < date/DRSBMZGV --- > datasheet/SM > datatype > date/DRSMZGV 25430c21934 < datum/MS --- > datum/M 25453d21956 < daysack 25468c21971 < dead/PXTMNRY --- > dead/XTMNRY 25480d21982 < deadweight/MS 25488c21990 < dealership/MS --- > dealership/SM 25506d22007 < deathly/RT 25522c22023 < debilitate/GNDS --- > debilitate/DSGN 25527d22027 < debonaire 25529a22030 > debridement 25535d22035 < debutant 25542c22042 < decaffeinate/GDS --- > decaffeinate/DSG 25546c22046 < decapitate/XDSGN --- > decapitate/XGNDS 25554c22054 < deceitful/PY --- > deceitful/YP 25559c22059 < decelerate/XDSGN --- > decelerate/GNDS 25561c22061 < decelerator/MS --- > decelerator/SM 25564c22064 < decent/ITRY --- > decent/IY 25568d22067 < decertify/DSGNX 25570d22068 < decidability/U 25575d22072 < deciles 25579d22075 < decimalize 25583,25584c22079 < decipherable/IU < decipherment/S --- > decipherable/UI 25593c22088 < declamation/SM --- > declamation/MS 25595c22090 < declaration/SM --- > declaration/MS 25602c22097 < declination/MS --- > declination/M 25606,25607c22101 < deco < decolletage/MS --- > decolletage/SM 25609d22102 < decompose/B 25611d22103 < deconstruct/V 25613,25614d22104 < deconvolution < deconvolve 25617d22106 < decorated/U 25631,25632c22120,22121 < decrement/GDS < decremental --- > decremented > decrements 25637d22125 < decrypt/GD 25639d22126 < decustomised 25645a22133 > deduct/GVD 25654d22141 < deepish 25656c22143 < deer/SM --- > deer/M 25659d22145 < deerstalking 25663,25664c22149 < defaecate < defalcate/XDSGN --- > defalcate/DSXGN 25680c22165 < defective/MYSP --- > defective/MPYS 25685c22170 < defenestrate/NDX --- > defenestration/S 25687c22172 < defenseless/PY --- > defenseless/YP 25689d22173 < defensibility 25701a22186 > defibrillation 25706d22190 < defiled/U 25709,25710c22193 < definably/I < define/AGDRS --- > define/AGDS 25715,25718c22198,22201 < definition/ASM < definitional < definitive/PY < deflate/GNBDS --- > definition/AM > definitions > definitive/Y > deflate/GNDS 25729d22211 < deform/B 25741,25743c22223,22224 < degauss/GD < degeneracy/SM < degenerate/MV --- > degeneracy/M > degenerate/MVX 25745d22225 < degrease 25750d22229 < deictic 25765,25766c22244,22245 < delete/BXGNDRS < deleterious/Y --- > delete/XGNDS > deleterious 25771c22250 < deliberate/YVPX --- > deliberate/XYVP 25777c22256 < delicious/YP --- > delicious/PY 25781,25782c22260,22261 < deliminator/S < delineate/GNDSX --- > deliminator > delineate/GNXDS 25786c22265 < deliquesce/GDS --- > deliquesce/DSG 25788c22267 < delirious/PY --- > delirious/YP 25792c22271,22272 < deliverable/US --- > deliverable/S > deliverables/U 25799d22278 < deltoids 25808d22286 < demagog/MS 25816c22294 < demarcate/XDSGN --- > demarcate/DSGNX 25834c22312 < democratically/U --- > democratically 25836c22314 < democratize/DSG --- > democratize/GDS 25838,25840c22316,22317 < demodulator < demographer/MS < demographic/MS --- > demographer/SM > demographic/SM 25844c22321 < demolish/DRSG --- > demolish/DSG 25857c22334 < demonstrate/GNVXDS --- > demonstrate/XGNVDS 25859c22336 < demonstrative/SMYP --- > demonstrative/MYSP 25861c22338 < demonstrator/SM --- > demonstrator/MS 25864c22341 < demount/BG --- > demount 25874a22352 > denaturation 25877,25878d22354 < dendrochronological < dendrochronology 25879a22356 > deniability 25883c22360 < denigrate/DSXGN --- > denigrate/DSGN 25885a22363 > denitrification 25888d22365 < denotational 25890,25891c22367,22368 < denouement/SM < denounce/DSGL --- > denouement/MS > denounce/LDSG 25908c22385 < denunciation/MS --- > denunciation/SM 25923d22399 < dependance/M 25938c22414 < deportation/SM --- > deportation/MS 25942d22417 < depositary 25947c22422 < deprecate/GNXDS --- > deprecate/GNDS 25953,25954c22428,22429 < depredation/MS < depressant/MS --- > depredation/SM > depressant/SM 25956,25957c22431,22432 < depression/MS < depressive/MS --- > depression/SM > depressive/SM 25961d22435 < deprogram/S 25965c22439 < deputation/SM --- > deputation/MS 25969,25971c22443,22444 < dequeue/DSG < derailleur/MS < derailment/MS --- > derailleur/SM > derailment/SM 25975,25976c22448,22449 < dereliction/MS < deride/D --- > dereliction/M > deride/GDS 25982c22455 < derivative/MYS --- > derivative/MS 25987c22460 < dermatologist/MS --- > dermatologist/SM 25996a22470 > derrière/SM 25999c22473 < desalinate/DSGN --- > desalinate/GNDS 26005,26007c22479,22480 < descendant/SM < descendent/SM < descender/S --- > descendant/MS > descender 26009c22482,22483 < describer/MS --- > describe/BZGDR > describer/M 26011c22485 < descriptive/YP --- > descriptive/PY 26013d22486 < descriptivism 26032,26033c22505 < design/MRZB < designate/XDSGN --- > designate/DSGNX 26036,26038d22507 < designational < designator/S < designed/Y 26040d22508 < desirabilia 26051c22519 < desolate/DSPYGN --- > desolate/PDSYGN 26054d22521 < desorption 26059c22526 < desperate/PYN --- > desperate/YNP 26067d22533 < despond 26077,26079c22543 < dessicated < dessication < destination/MS --- > destination/SM 26084c22548 < destroy/SBZGDR --- > destroy/SZGDR 26094c22558 < desultory/P --- > desultory 26096c22560 < detachment/SM --- > detachment/MS 26101d22564 < detectability/U 26103d22565 < detectably/U 26105,26106c22567 < detectible < detection/SM --- > detection/M 26117d22577 < determinacy/I 26119c22579 < determinate/YV --- > determinate 26125d22584 < determinist 26127d22585 < deterministically 26132d22589 < detest/RZB 26135c22592 < dethrone/GL --- > dethrone/DSLG 26138d22594 < detonated/U 26150d22605 < deuteron 26177c22632 < devoted/PY --- > devoted/Y 26181c22636 < devour/SDRZG --- > devour/SDG 26184c22639 < dew/SM --- > dew/M 26195c22650 < dextrous/Y --- > dharma 26202,26203d22656 < diabolism < diachronic 26205c22658 < diacritical/S --- > diacritical 26209,26211c22662 < diagnosable/U < diagnose/DSBG < diagnosed/U --- > diagnose/DSG 26215c22666 < diagnostician/MS --- > diagnostician/SM 26218d22668 < diagonalize/DSG 26228c22678 < dialectical/Y --- > dialectical 26230d22679 < dialer 26232,26233c22681,22683 < dialog/SMGD < dialogue/SMRGD --- > dialog/SDG > dialogue/DRSMG > dialyses 26237a22688 > diamanté 26242c22693 < diamondback/SM --- > diamondback/MS 26263a22715 > dices/I 26265d22716 < dichloride 26274c22725 < dicky/RMT --- > dicky/SM 26298c22749 < dido/M --- > dido/MS 26303d22753 < dieing 26317c22767,22768 < difference/MGS --- > difference/IM > differences 26319,26322c22770,22771 < differentiability < differentiable < differential/MYS < differentiate/DSGNX --- > differential/SM > differentiate/DSGN 26325d22773 < differentiators 26332c22780 < diffuse/DRSYZGNVP --- > diffuse/DSYGNVP 26335,26336d22782 < diffusional < diffusivity 26348a22795 > digicam/S 26353c22800 < digitize/ZGDRS --- > digitize/GDS 26361,26362c22808 < digression/SM < dihedral --- > digression/MS 26382,26383c22828 < dillydally/GDS < diluent --- > dillydally/DSG 26387c22832 < dim/ZPSRY --- > dim/PSRY 26389,26391c22834,22835 < dimension/SGMD < dimensional/Y < dimensionality --- > dimension/SM > dimensional 26393c22837 < diminish/GBDS --- > diminish/GDS 26395a22840 > diminuendoes 26404,26405d22848 < dimorphic < dimorphism 26407c22850 < dimply/RT --- > dimply 26422c22865 < dingo/SM --- > dingo/M 26426c22869 < dink/RT --- > dink/R 26434c22877 < dint/MS --- > dint/M 26438d22880 < diopter/S 26445d22886 < diplexers 26453c22894,22895 < diplomatist/SM --- > diplomatist/MS > diplopia 26466c22908 < dire/YTPR --- > dire/YTR 26468d22909 < directed/U 26470,26472c22911,22912 < direction/ISM < directional/Y < directionality --- > direction/IM > directional 26473a22914 > directions 26495,26496c22936 < disaggregation < disambiguate/DGN --- > disambiguate/N 26499d22938 < disassemble/R 26505,26506c22944,22945 < disburse/LDSG < disbursement/SM --- > disburse/DSGL > disbursement/MS 26516c22955 < disciplinarian/MS --- > disciplinarian/SM 26520c22959 < disclose/DSG --- > disclose/DSBG 26527c22966 < discomfit/GD --- > discomfit/DG 26529c22968 < discommode/GD --- > discommode/DG 26533c22972 < disconsolate/YN --- > disconsolate/Y 26536c22975 < discotheque/MS --- > discotheque/SM 26538c22977 < discouragement/MS --- > discouragement/SM 26541d22979 < discoverable 26549c22987 < discrete/YNP --- > discrete/PYN 26553,26555c22991,22992 < discriminant/S < discriminate/DSGNV < discriminated/U --- > discriminant > discriminate/GNDS 26562,26565c22999,23000 < discuss/B < discussant/MS < discussed/A < discussion/MS --- > discussant/SM > discussion/SM 26568c23003 < disembowel/GLSD --- > disembowel/SDLG 26570c23005 < disfigurement/MS --- > disfigurement/SM 26573c23008 < disgruntle/LDSG --- > disgruntle/LGDS 26575a23011 > disguised/U 26584c23020 < dishevel/DGSL --- > dishevel/DGLS 26590c23026 < dishwasher/SM --- > dishwasher/MS 26593c23029 < disillusion/DGL --- > disillusion/GLD 26595c23031 < disinfectant/SM --- > disinfectant/MS 26596a23033 > disinterested/PY 26598,26600c23035 < disinvest < disjoint/P < disjointed/PY --- > disjointed/YP 26602d23036 < disjunction/S 26607d23040 < dislike/DSMG 26609c23042 < dismal/RYT --- > dismal/Y 26615d23047 < dismissible 26619c23051 < disparage/LDSG --- > disparage/DSGL 26632,26633c23064 < dispersant < disperse/XZGNVDRS --- > disperse/GNDS 26635d23065 < dispersive/Y 26637,26639d23066 < dispirited/Y < displace/R < displayed/AU 26642a23070 > disposed/I 26645a23074,23075 > disproportional > disprove/B 26649c23079 < disputation/MS --- > disputation/SM 26655c23085 < disquisition/SM --- > disquisition/MS 26662,26663d23091 < disruptor < diss/DSG 26664a23093 > dissed 26668c23097 < disseminate/DSGN --- > disseminate/GNDS 26670c23099 < dissension/MS --- > dissension/SM 26674c23103 < dissertation/MS --- > dissertation/SM 26679,26680c23108,23109 < dissipate/GNVDS < dissipated/U --- > dissing > dissipate/GNDS 26682c23111 < dissociate/GNVDS --- > dissociate/GNDS 26684d23112 < dissociative/Y 26700,26701c23128,23129 < distention/MS < distil/S --- > distemper/M > distention/SM 26708c23136 < distinctive/PY --- > distinctive/YP 26713d23140 < distinguishably/I 26716d23142 < distorted/U 26718,26719c23144,23145 < distracted/YP < distracting/Y --- > distract/DG > distracted/Y 26726c23152 < distribute/AGNVDSB --- > distribute/AGNVDS 26732,26733c23158,23159 < distributivity < distributor/SM --- > distributor's > distributor/AS 26735c23161,23162 < district/ASM --- > district's > district/AS 26741d23167 < disulphide 26744d23169 < disyllable 26749c23174 < ditsy/RT --- > ditsy 26750a23176 > dittoes 26753,26754c23179 < ditzy/RT < diuresis --- > ditzy/R 26769c23194 < diversify/NGDS --- > diversify/GNDS 26776c23201 < divestiture/SM --- > divestiture/MS 26796c23221,23222 < divorcement/SM --- > divorcement/MS > divorcée/MS 26805d23230 < djellabah/M 26807,26808c23232,23233 < djinn/M < do/SJRHZG --- > djinn > do/SJMRHZG 26814a23240 > dobro 26823c23249 < dockworker/SM --- > dockworker/MS 26829c23255 < doctrinal/Y --- > doctrinal 26839,26841d23264 < dodecahedra < dodecahedral < dodecahedron 26872a23296 > doglike 26877a23302 > dognapper 26884d23308 < dogy/SM 26889c23313,23314 < dole/FGDSM --- > dole's > dole/FGDS 26891,26892d23315 < dolefuller < dolefullest 26894d23316 < dolerite 26912c23334 < domesticate/GNDS --- > domesticate/DSGN 26935c23357 < done/AU --- > done/FAU 26942c23364 < donnybrook/SM --- > donnybrook/MS 26944c23366 < donuts/S --- > donuts 26957c23379,23380 < door/ISM --- > door's > door/IS 26959d23381 < doorhandles 26967d23388 < doornail 26980a23402,23403 > dopier > dopiest 26984c23407 < dopy/RTP --- > doppelgänger/S 27000c23423 < doss/DRZG --- > doss/DRSZG 27006a23430 > dotcom/SM 27012,27013c23436,23438 < dotty/RPT < double/ADSGM --- > dotty/RT > double's > double/ADSG 27015d23439 < doubler 27018,27019d23441 < doubletalk < doublethink 27024c23446 < doubtful/YP --- > doubtful/PY 27031d23452 < doughs 27053a23475 > downfield 27055c23477 < downhearted/YP --- > downhearted/PY 27058,27060c23480 < downland/S < download/MDSG < downloadable --- > download/MDBSG 27062d23481 < downpipes 27084c23503 < downward/YS --- > downward/S 27097a23517 > dpi 27105,27106c23525,23526 < draft/ASDGM < draftboard --- > draft's > draft/ASDG 27129c23549 < drainboard/MS --- > drainboard/SM 27139c23559 < dramatization/MS --- > dramatization/SM 27149,27152c23569,23570 < draughtboards < draughtswoman < draughtswomen < draw/MRZGSBJ --- > draughtboard/S > draw/MRZGSJ 27155d23572 < drawcord 27159c23576 < drawn/AI --- > drawn/A 27166d23582 < dreadnaught/SM 27177c23593 < dreamworld/MS --- > dreamworld/SM 27206c23622 < drillmaster/MS --- > drillmaster/SM 27215c23631 < drive/RSMZGBJ --- > drive/RSMZGJ 27219a23636 > driveshaft/SM 27222c23639 < drizzly/TR --- > drizzly 27234d23650 < drooping/Y 27248,27250c23664 < drouth/M < drouths < drove/RSMZG --- > drove/RSMZ 27266c23680 < druggie/M --- > druggie/SM 27269c23683 < druggy/SM --- > druggy 27289d23702 < dryish 27292d23704 < drystone 27294c23706 < dual/YS --- > dual 27296,27298c23708 < dualist < dualistic < duality/SM --- > duality/M 27311c23721 < duck/JMDGS --- > duck/MDGS 27316d23725 < duckpond 27319c23728,23729 < duct/CIFDGM --- > duct's/K > duct/CKIFS 27321a23732 > ducting 27323d23733 < ducts/IKC 27327c23737,23738 < due/ISM --- > due's > due/IS 27334d23744 < duffel 27347d23756 < dulness/M 27357d23765 < dumfound/GDS 27361a23770 > dumpsite/S 27366c23775 < dunderhead/SM --- > dunderhead/MS 27383d23791 < duologue 27389,27390c23797,23798 < duplicability < duplicate/AGNDSM --- > duplicate's > duplicate/AGNDS 27392d23799 < duplications 27395c23802 < duplicity/SM --- > duplicity/M 27397c23804 < durable/S --- > durable 27400c23807 < duration/MS --- > duration/M 27412d23818 < dustcover 27414d23819 < dustily 27429c23834 < dwarf/STGMDR --- > dwarf/SGMD 27438d23842 < dyad 27445c23849 < dyestuff/SM --- > dyestuff/M 27457d23860 < dyne 27459c23862 < dysfunction/SM --- > dysfunction/MS 27464d23866 < dyslexically 27466a23869 > dysphagia 27468c23871 < dystrophy --- > dystonia 27469a23873,23880 > débridement > débutante/SM > décolletage/SM > décolleté > démodé > dérailleur/MS > déshabillé/M > détente/M 27475a23887 > eMusic/M 27483a23896 > earbud/SM 27505c23918,23919 < earth/UDYGM --- > earth's > earth/UDYG 27527c23941 < east/MG --- > east/M 27544c23958 < eavesdropper/MS --- > eavesdropper/SM 27554a23969 > ecclesial 27559c23974,23975 < echo/ADGM --- > echo's > echo/ADG 27579c23995 < econometric/S --- > econometric 27584d23999 < economization 27588a24004,24005 > ecotourism/M > ecotourist/MS 27593,27594d24009 < ectopic < ectoplasm 27600a24016 > edamame 27605d24020 < edgeless 27622c24037,24038 < edit/ADGSM --- > edit's > edit/ADGS 27628,27629c24044,24045 < editorialize/GDS < editorship/MS --- > editorialize/DSG > editorship/M 27642d24057 < eduction 27646c24061 < eerie --- > eerie/RT 27649d24063 < eery/RTP 27654c24068 < effective/IYP --- > effective/IPY 27656d24069 < effector/S 27658c24071 < effectuate/GDS --- > effectuate/DSG 27670c24083 < efficiency/ISM --- > efficiency/IM 27680c24093 < effortless/PY --- > effortless/YP 27699d24111 < egis/M 27722,27724d24133 < eidetic < eigenfunction/S < eigenstate/S 27730d24138 < eightfold 27735d24142 < eightpence 27744d24150 < ejecta 27748c24154 < elaborate/PYGNDSX --- > elaborate/YGNDSPX 27757c24163 < elasticity/SM --- > elasticity/M 27759d24164 < elastodynamics 27767c24172 < elderflower --- > eldercare/M 27769,27772c24174,24177 < elect/ASDGVM < electability < electable/U < elected/U --- > eldritch > elect's > elect/ASDGV > electable 27774c24179 < electioneer/DSG --- > electioneer/DGS 27785,27786c24190,24191 < electrify/NZGDRS < electrocardiogram/SM --- > electrify/ZGNDRS > electrocardiogram/MS 27790,27791c24195 < electrochemical/Y < electrocute/GNDSX --- > electrocute/DSXGN 27794c24198 < electrodynamic/S --- > electrodynamics 27801d24204 < electroluminescent 27805,27806d24207 < electrolytically < electrolyze/GD 27811,27812d24211 < electromechanical < electromechanics 27815d24213 < electronegative 27816a24215 > electronica/M 27819d24217 < electrophoresis 27836d24233 < elementarily 27858,27859c24255 < eligibly/I < eliminate/DSXGN --- > eliminate/XDSGN 27888c24284 < elucidate/XDSGN --- > elucidate/DSGNX 27893,27894d24288 < eluted < elven 27897,27898c24291,24293 < elvish/S < em/SM --- > elvish > em's > em/S 27904c24299 < emancipate/GNDS --- > emancipate/DSGN 27906,27908c24301,24302 < emancipator/SM < emancipatory < emasculate/DSGN --- > emancipator/MS > emasculate/GNDS 27919c24313 < embarrass/LGDS --- > embarrass/GLDS 27926d24319 < embeddable 27928,27929c24321,24322 < embedding/S < embellish/LDSG --- > embedding > embellish/LGDS 27935c24328 < embitter/GDLS --- > embitter/GLDS 27943d24335 < embodiments 27947c24339 < embosom --- > embolization 27963c24355 < embryologist/SM --- > embryologist/MS 27969c24361 < emendation/SM --- > emendation/MS 27990d24381 < emissivity/S 27994a24386,24387 > emo/SM > emoji 28002,28003c24395 < emotionality < emotionalize/DSG --- > emotionalize/GDS 28008,28009d24399 < empathetical < empathic 28024,28025c24414,24416 < emplacement/MS < employ/ADGLSM --- > emplacement/SM > employ's > employ/ADGLS 28027d24417 < employe/RSMZB 28029c24419 < employer/M --- > employer/SM 28060c24450 < encapsulate/GNXDS --- > encapsulate/XGNDS 28066d24455 < encephalopathy 28076,28077c24465,24466 < encircle/LDSG < encirclement/SM --- > encircle/DSGL > encirclement/M 28089c24478 < encourage/DRSGL --- > encourage/DSLG 28092c24481 < encroach/GDSL --- > encroach/GLDS 28095c24484 < encrustation/MS --- > encrustation/SM 28097d24485 < encrypted/U 28101c24489 < encumbrance/SM --- > encumbrance/MS 28105d24492 < encyclopaedic 28124a24512 > endocarditis 28129,28131c24517,24520 < endomorphism/S < endoplasmic < endorphin/MS --- > endometrial > endometriosis > endometrium > endorphin/M 28133c24522 < endorsement/SM --- > endorsement/MS 28137a24527 > endothelial 28141d24530 < endpapers 28144d24532 < endungeoned 28149d24536 < endwise 28152c24539 < energetic/S --- > energetic 28163,28164c24550 < enforce/AGDS < enforceability --- > enforce/LZGDRS 28167,28169c24553,24555 < enforcement/MS < enforcer/MS < enfranchise/ELGDS --- > enforcement/M > enforcer/M > enfranchise/EGDSL 28171d24556 < enfranchiser 28173,28174c24558 < engaged/U < engagement/ESM --- > engagement/EMS 28177c24561 < engine/DSM --- > engine/SM 28182d24565 < engrained 28192d24574 < enhanceable 28194d24575 < enharmonic 28198d24578 < enjambement/SM 28202d24581 < enjoyability 28209c24588 < enlighten/LSGD --- > enlighten/SGLD 28211d24589 < enlightening/U 28226c24604 < enormous/YP --- > enormous/PY 28237d24614 < enrobed 28242c24619 < enshrine/GDSL --- > enshrine/GLDS 28256c24633 < entangle/EDSGL --- > entangle/EDSLG 28259d24635 < entangler 28262c24638 < entered/U --- > enteric 28264c24640 < enterprise/SMG --- > enterprise/MGS 28266c24642 < entertain/DRSZGL --- > entertain/ZGDRSL 28270d24645 < enthalpy/S 28273c24648 < enthrone/LGDS --- > enthrone/GDSL 28279c24654 < enthusiastically/U --- > enthusiastically 28291c24666 < entomologist/SM --- > entomologist/MS 28296,28297c24671 < entrain/DL < entrance/DSLMG --- > entrance/LDSMG 28311c24685 < entrepreneur/MS --- > entrepreneur/SM 28314d24687 < entropic 28319a24693 > entrée/MS 28338d24711 < environ/SL 28342c24715 < environmentalist/MS --- > environmentalist/SM 28352a24726,24727 > eosinophil/S > eosinophilic 28354d24728 < epaulette/MS 28359d24732 < ephemeris 28361d24733 < epically 28365,28366d24736 < epicycles < epicycloid 28370c24740 < epidemiologist/MS --- > epidemiologist/SM 28380d24749 < epigraphical 28385d24753 < epilog/MS 28387d24754 < epinephrin/M 28390,28391d24756 < epiphenomena < epiphenomenon 28394d24758 < episcopalian 28406,28407d24769 < epitaxial < epitaxy 28411d24772 < epithetic 28424c24785 < equality/ISM --- > equality/IM 28437d24797 < equiangular 28439,28441c24799 < equilateral/MS < equilibrating < equilibration --- > equilateral/SM 28448,28449c24806 < equipartition < equipment/MS --- > equipment/M 28458c24815 < equivalence/SM --- > equivalence/MS 28463c24820 < equivocate/XGNDS --- > equivocate/GNXDS 28465,28466c24822,24823 < equivocator/MS < er --- > equivocator/SM > er/C 28486d24842 < ergodic 28490d24845 < ergophobia 28498d24852 < erosional 28504d24857 < erotics/S 28524c24877,24878 < erythrocyte/MS --- > erythrocyte/SM > erythromycin 28530d24883 < escalop/GDS 28535c24888 < escapement/MS --- > escapement/SM 28542c24895 < escarpment/SM --- > escarpment/MS 28548d24900 < escorted/U 28552c24904 < escutcheon/MS --- > escutcheon/SM 28555c24907 < esophagus/M --- > esophagus/MS 28557d24908 < esoterica 28560c24911 < espadrille/SM --- > espadrille/MS 28576d24926 < essentialist 28578,28579c24928 < establish/EASDGL < established/U --- > establish/AESDGL 28585d24933 < esthete/SM 28587,28588d24934 < esthetically < esthetics/M 28595c24941 < estrangement/SM --- > estrangement/MS 28599d24944 < estuarine 28613d24957 < etherized 28616d24959 < ethicist 28628c24971 < ethnologist/MS --- > ethnologist/SM 28653d24995 < eukaryote 28665d25006 < euphonium/S 28680c25021 < evade/DRSZGB --- > evade/DRSZG 28682d25022 < evaluable 28684d25023 < evaluated/U 28686,28687d25024 < evaluational < evaluator/S 28709c25046 < event/SMG --- > event/SM 28719,28720c25056 < everlasting/SMY < everliving --- > everlasting/MYS 28725d25060 < everyman 28734d25068 < evidential 28747d25080 < evolute/NX 28749d25081 < evolutionarily 28751,28752c25083 < evolutionism < evolutionist/MS --- > evolutionist/SM 28760c25091 < exact/SPDRYTGB --- > exact/SBPDRYTG 28762,28763c25093,25094 < exacting/YP < exaction/MS --- > exacting/PY > exaction/SM 28767c25098 < exaggerate/DSGNX --- > exaggerate/XDSGN 28770c25101 < exaggerator/SM --- > exaggerator/MS 28774d25104 < examinable 28777,28778d25106 < examined/U < examinees 28799c25127 < exception/SMB --- > exception/BSM 28801a25130 > exceptionalism 28805c25134 < exchange/DRSMZG --- > exchange/DSMG 28812c25141 < excitation/SM --- > excitation/M 28818,28819c25147 < exciton < excl/S --- > excl 28821c25149 < exclamation/MS --- > exclamation/SM 28826c25154 < exclusive/MYPS --- > exclusive/PMYS 28829c25157 < excommunicate/GNXDS --- > excommunicate/GNDSX 28831c25159 < excoriate/DSXGN --- > excoriate/DSGNX 28842d25169 < excruciation 28847c25174 < excursionist/SM --- > excursionist/MS 28855,28856d25181 < execked < execking 28862c25187 < execution/MRZ --- > execution/ZMR 28875c25200 < exemplify/XGDSN --- > exemplify/GDSXN 28878c25203 < exercise/DRSBMZG --- > exercise/DRSMZG 28892c25217 < exhibition/ZMRS --- > exhibition/MS 28896c25221 < exhilarate/GNDS --- > exhilarate/DSGN 28899c25224 < exhortation/SM --- > exhortation/MS 28913,28914c25238 < existentialist/SM < existentialistic --- > existentialist/MS 28917d25240 < exocrine 28922a25246 > exoplanet/MS 28928,28929c25252 < exorcize/DSG < exoskeleton/MS --- > exoskeleton/SM 28932d25254 < exothermically 28938,28940c25260 < expand/BGSDR < expandability < expanded/U --- > expand/BGSD 28947c25267 < expansive/PY --- > expansive/YP 28952c25272 < expatriate/MGNDS --- > expatriate/DSMGN 28955c25275 < expectancy/SM --- > expectancy/M 28957,28960c25277,25279 < expectation/MS < expectational < expectorant/MS < expectorate/GNDS --- > expectation/SM > expectorant/SM > expectorate/DSGN 28971c25290 < expeditious/YP --- > expeditious/PY 28973d25291 < expeditor/SM 28979c25297 < expenditure/MS --- > expenditure/SM 28981c25299 < expensive/IPY --- > expensive/IYP 28983c25301 < experience/IDM --- > experience/IMD 28987c25305 < experiment/ZGSMDR --- > experiment/MDRSZG 28990d25307 < experimentalist/S 28995d25311 < expertize 29001d25316 < expiratory 29006c25321 < explainable/U --- > explainable 29012c25327 < explicate/XGNVDS --- > explicate/XGNDS 29016,29017c25331 < explode/ZGDRS < exploded/U --- > explode/GDS 29019c25333 < exploitation/MS --- > exploitation/M 29025c25339 < explore/BZGDRS --- > explore/ZGDRS 29029c25343 < explosive/SMYP --- > explosive/SPMY 29036d25349 < exportability 29052c25365 < expression/MS --- > expression/SM 29057c25370 < expressive/YP --- > expressive/PY 29059,29060c25372,25373 < expressway/MS < expropriate/XGNDS --- > expressway/SM > expropriate/GNXDS 29062c25375 < expropriator/MS --- > expropriator/SM 29065c25378 < expurgate/XDSGN --- > expurgate/DSGNX 29072c25385 < extemporaneous/YP --- > extemporaneous/PY 29078d25390 < extendability 29081,29082c25393 < extensibility < extensible/I --- > extensible 29084c25395 < extensional/Y --- > extensional 29087d25397 < extensors 29092c25402 < exterminate/GNDSX --- > exterminate/DSXGN 29094c25404 < exterminator/SM --- > exterminator/MS 29097c25407 < externalize/GDS --- > externalize/DSG 29100c25410 < extinguish/BZGDRS --- > extinguish/ZGBDRS 29106c25416,25417 < extoll/SGD --- > extolled > extolling 29108c25419 < extortion/ZMR --- > extortion/MRZ 29111c25422 < extortionist/SM --- > extortionist/MS 29114,29115c25425,25426 < extract/BMDGVS < extraction/MS --- > extract/MDGS > extraction/SM 29118c25429 < extradite/GNDSBX --- > extradite/GNBXDS 29120d25430 < extragalactic 29123d25432 < extralinguistic 29130c25439 < extrapolate/GNXDS --- > extrapolate/XGNDS 29133,29134c25442 < extrasolar < extraterrestrial/SM --- > extraterrestrial/MS 29137c25445 < extravagance/SM --- > extravagance/MS 29139c25447 < extravaganza/SM --- > extravaganza/MS 29141,29143d25448 < extravert/MS < extrema < extremal 29161d25465 < exudate/N 29167d25470 < exulting/Y 29170c25473 < exurbanite/MS --- > exurbanite/SM 29177a25481 > eyeing 29186d25489 < eyeshadow 29194,29195d25496 < eyrie/M < eyry/SM 29201c25502 < fabricate/DSXGN --- > fabricate/DSGNX 29203,29204c25504 < fabricator/MS < fabulists --- > fabricator/SM 29207c25507,25508 < face/ACSDGM --- > face's > face/ACSDG 29212d25512 < faceplate 29218c25518 < facilitate/GNVDS --- > facilitate/GNDS 29220c25520 < facilitator/SM --- > facilitator/MS 29232c25532,25533 < factor/SMDG --- > factor's > factor/ASDG 29234,29235c25535 < factorisable < factorization/S --- > factorization 29246d25545 < fadeout 29248,29249c25547 < faerie/M < faery/SM --- > faerie/SM 29256d25553 < fagoting/M 29267c25564 < fairground/SM --- > fairground/MS 29269,29270d25565 < fairings/S < fairish 29275d25569 < fairytale 29277c25571,25572 < faithful/UPYM --- > faithful's > faithful/UPY 29291c25586 < fall/MNRZGS --- > fall/MNGS 29300d25594 < fallopian 29308,29309c25602 < falsifiability < falsifiable/U --- > falsifiable 29312c25605 < falsify/DRSZGXN --- > falsify/DRSZGNX 29316c25609,25610 < fame/DM --- > fame's > fame/D 29319d25612 < familiarities 29330a25624 > fanboy/SM 29333c25627 < fanciful/PY --- > fanciful/YP 29339a25634 > fandom 29356c25651 < faradize/DSG --- > faradize/DG 29388c25683 < fascinate/XGNDS --- > fascinate/GNDSX 29397a25693 > fashionista/MS 29404c25700 < fastidious/YP --- > fastidious/PY 29419d25714 < fatheaded/P 29426d25720 < fathomed/U 29429d25722 < fatigued/U 29433d25725 < fatted 29445c25737 < faultfinder/MS --- > faultfinder/SM 29449c25741 < faultless/YP --- > faultless/PY 29461d25752 < favored/U 29466d25756 < fawning/Y 29470a25761 > faïence/M 29474,29475d25764 < fearfuller < fearfullest 29479c25768 < fearsome/YP --- > fearsome 29482c25771 < feasibly/U --- > feasibly 29489d25777 < featherlight 29521,29522d25808 < feedstock < feedstuffs 29532d25817 < felafel/S 29534c25819 < felicitate/XGNDS --- > felicitate/GNXDS 29545c25830 < fellowship/SM --- > fellowship/MS 29562,29563d25846 < fenced/U < fencepost 29569d25851 < fenland 29576d25857 < fermion/S 29580c25861 < ferocious/YP --- > ferocious/PY 29585d25865 < ferrite 29619d25898 < fetich/MS 29627c25906,25907 < fetter/USGDM --- > fetter's > fetter/USGD 29647c25927,25929 < fiasco/M --- > fiancé/SM > fiancée/MS > fiasco/SM 29654c25936 < fiber/MD --- > fiber/M 29662d25943 < fibroblast/S 29669d25949 < fices 29676,29677c25956,25957 < fictionalization/MS < fictionalize/GDS --- > fictionalization/SM > fictionalize/DSG 29681c25961 < fiddle/DRSJMZG --- > fiddle/DRSMZG 29698c25978 < fieldwork/ZMR --- > fieldwork/MRZ 29704d25983 < fierily 29718c25997 < fig/SLM --- > fig/FSM 29724d26002 < figural 29727c26005,26006 < figure/FEGSDM --- > figure's > figure/EFGSD 29731d26009 < filamentary 29735,29738c26013,26017 < file/CAKGDSM < filer/CSM < filesystem/MS < filet/GSMD --- > file/KCSRDGZM > filename/S > filer/KCM > filesystem/SM > filet 29740c26019 < filibuster/ZGSMDR --- > filibuster/MDRSZG 29744,29745c26023,26026 < filing/SM < fill/AIDGSM --- > filing's > filings > fill's > fill/AIDGS 29766,29767c26047,26048 < filtrable < filtrate/IGNDSM --- > filtrate's > filtrate/IGNDS 29778,29780c26059,26061 < finance/ADSGM < financial/Y < financials --- > finance's > finance/ADSG > financial/YS 29784c26065 < find/BJMRZGS --- > find/JMRZGS 29788c26069,26070 < fine/CAFTGDSM --- > fine's/F > fine/CAFTGDS 29795c26077 < fingerboard/MS --- > fingerboard/SM 29797d26078 < fingerless 29801c26082 < fingerprint/MDSG --- > fingerprint/SGMD 29808c26089,26090 < finish/ADSGM --- > finish's > finish/ADSG 29811c26093 < finite/PY --- > finite/IY 29814,29815c26096 < finny/TR < fiord/SM --- > finny 29827d26107 < fired/U 29829c26109 < firefight/MRSJZG --- > firefight/MRSZG 29843d26122 < firesafe 29853d26131 < firkin 29857c26135 < firmware/MS --- > firmware/M 29883,29884c26161,26162 < fission/BSM < fissure/DSM --- > fission/BM > fissure/SM 29902d26179 < fivefold 29918c26195 < flabbergast/GSD --- > flabbergast/SGD 29949,29950c26226 < flam < flamage/S --- > flamage 29956a26233 > flambé/MD 29959,29960c26236,26237 < flameproof/DSG < flamethrower/MS --- > flameproof/DGS > flamethrower/SM 29965c26242 < flange/MDS --- > flange/MS 29969d26245 < flannelet/M 29994a26271 > flatbread 30021d26297 < flautist/SM 30032c26308 < flay/DRZGS --- > flay/DGS 30039d26314 < fledgeling/SM 30052d26326 < fleshless 30059d26332 < flexibilities 30064c26337 < flexitime/M --- > flexion 30066c26339 < flibbertigibbet/MS --- > flibbertigibbet/SM 30069d26341 < flickery 30071c26343 < flight/MDS --- > flight/MS 30074d26345 < flightpath 30088c26359,26361 < flippable --- > flipflop/S > flipflopped > flipflopping 30097c26370 < flirtation/SM --- > flirtation/MS 30105d26377 < floatation 30107,30108d26378 < floaty < flocculation 30118c26388 < floodlight/MDGS --- > floodlight/MDSG 30121c26391 < floodwater/M --- > floodwater/MS 30125,30126c26395 < floorspace < floorwalker/MS --- > floorwalker/SM 30132d26400 < flopper 30152c26420 < flouncy/TR --- > flouncy 30156c26424 < floury/RT --- > floury 30159c26427 < flow/IMGS --- > flow/MDGS 30161,30162c26429,26430 < flowed < flower/CSDGM --- > flower's > flower/CSDG 30175c26443 < fluctuate/XGNDS --- > fluctuate/GNDSX 30185c26453 < fluidize/DSG --- > fluidize/GS 30187d26454 < flukey 30193d26459 < flunkey/MS 30203,30204c26469,26470 < fluorocarbon/SM < fluoroscope/MS --- > fluorocarbon/MS > fluoroscope/SM 30215,30216c26481,26484 < flux/ADGM < fluxes --- > flux's/A > flux/IMS > fluxed > fluxing 30223c26491 < flyer/MS --- > flyer/SM 30237,30238c26505 < fo'c's'le < fo'c'sle --- > fo'c'sle/MS 30248c26515,26516 < focus/ADSGM --- > focus's > focus/ADSG 30252,30253c26520,26521 < foetid < fog/CSM --- > fog's > fog/CS 30267c26535,26536 < fold/IAUSGDM --- > fold's > fold/AUSGD 30272c26541 < foliate --- > folic 30281d26549 < folksong 30287,30288c26555 < follicular < follow/SDRZGBJ --- > follow/SDRZGJ 30299d26565 < fondu/M 30305c26571 < foobar/S --- > foobar 30313,30314c26579,26580 < foolhardy/PTR < foolish/TRYP --- > foolhardy/TPR > foolish/YP 30322c26588 < footbridge/MS --- > footbridge/SM 30334d26599 < footmarks 30337d26601 < footpads 30377d26640 < fordable/U 30387c26650 < foreclosure/SM --- > foreclosure/MS 30389d26651 < foredeck 30396,30397c26658,26660 < foregather/SGD < foregoing --- > foregather/GDS > forego/G > foregoes 30399c26662 < foreground/MDGS --- > foreground/GMDS 30421c26684 < foreordain/GDS --- > foreordain/GSD 30423d26685 < forepaws 30426c26688 < forequarter/SM --- > forequarter/MS 30431d26692 < foreseeability 30436c26697 < foreshadow/SGD --- > foreshadow/GDS 30438c26699 < foreshorten/SDG --- > foreshorten/DSG 30442c26703,26704 < forest/ACGDSM --- > forest's > forest/ACGDS 30448,30450d26709 < foreswear/GS < foreswore < foresworn 30470c26729 < forgetful/PY --- > forgetful/YP 30477c26736 < forgiven/U --- > forgiven 30490,30492c26749,26752 < forlorn/PTRY < form/CAIFDGSM < forma --- > forlorn/Y > form's > form/CAIFDGS > forma/K 30496c26756 < formalism/MS --- > formalism/M 30498d26757 < formalistic 30501c26760 < formalization/MS --- > formalization/M 30503d26761 < formant 30509c26767 < former/AIFMS --- > former/FIAM 30517a26776 > formulae 30537c26796 < forthright/PY --- > forthright/YP 30545c26804 < fortify/DRSZGNX --- > fortify/DRSNZGX 30550c26809 < fortuitous/PY --- > fortuitous/YP 30562a26822 > fossa 30564d26823 < fossiliferous 30575d26833 < foundational 30585,30587c26843 < fourpence < fourpenny < fourposter/MS --- > fourposter/SM 30613,30614c26869 < frack/DRGS < fracker/S --- > frack/SDRZG 30616c26871 < fraction/IASM --- > fraction/ISM 30618d26872 < fractionate/GND 30638c26892,26893 < franchise/EDSGM --- > franchise's > franchise/EDSG 30652a26908 > frappé/M 30661c26917,26918 < fraud/SM --- > fraud's > fraud/S 30666c26923,26924 < fray/CDGSM --- > fray's > fray/CDGS 30674c26932 < freckly/TR --- > freckly 30703c26961 < freeware/SM --- > freeware/M 30705c26963 < freewheel/DSG --- > freewheel/DGS 30708c26966,26967 < freeze/UAGSM --- > freeze's > freeze/UAGS 30710c26969 < freezing/M --- > freezing's 30718d26976 < freon/S 30736d26993 < fretboard 30751d27007 < frictionless 30754,30755c27010,27012 < friend/SM < friendless/P --- > friend's > friend/US > friendless 30757d27013 < friendlily 30759,30760c27015,27017 < friendly/UTPRM < friendship/SM --- > friendly's > friendly/UPTR > friendship/MS 30767c27024 < frighten/DZG --- > frighten/DG 30776c27033,27034 < fringe/IDSGM --- > fringe's > fringe/IDSG 30786c27044 < frivolous/YP --- > frivolous/PY 30788d27045 < friz/M 30791d27047 < frizzly/TR 30794c27050,27051 < frock/CUSM --- > frock's > frock/CUS 30796c27053 < frogging/DGS --- > frogging/S 30808c27065,27066 < front/FSDGM --- > front's > front/FSDG 30817,30818c27075 < frontispiece/SM < frontrunner/SM --- > frontispiece/MS 30821c27078,27079 < frost/CSDGM --- > frost's > frost/CSDG 30837,30838d27094 < frowning/Y < frowsty 30852,30854c27108 < fruitful/PY < fruitfuller < fruitfullest --- > fruitful/YP 30858c27112 < fruitless/YP --- > fruitless/PY 30864,30865c27118 < frustrate/GNDSX < frustrated/Y --- > frustrate/GNXDS 30869c27122 < fry/ZGDRSM --- > fry/GDSM 30872c27125 < ftp/ZGSR --- > ftp/ZGS 30875c27128 < fucker/SM! --- > fucker/M! 30880c27133,27134 < fuel/ADGSM --- > fuel's > fuel/ADGS 30889a27144 > fulfilling/U 30894d27148 < fullish 30896d27149 < fullstops 30900d27152 < fulness/M 30904d27155 < fumarole/S 30913d27163 < fuming/Y 30920c27170 < functionality --- > functionality/S 30922d27171 < functionless 30926c27175 < fundamentalist/MS --- > fundamentalist/SM 30928,30929d27176 < fundholders < fundholding 30961c27208,27209 < furl/UDGSM --- > furl's > furl/UDGS 30987c27235,27236 < fuse/CAIFGDSM --- > fuse's/A > fuse/CAIFGDS 30997c27246 < fussbudget/SM --- > fussbudget/MS 31017d27265 < fuze/MGDS 31025c27273,27274 < g/SNXB --- > fête/SM > g/SNXVB 31055c27304,27305 < gain/ADGSM --- > gain's > gain/ADGS 31067c27317,27318 < gale/ASM --- > gale's > gale/AS 31071,31072c27322,27323 < gallantry/SM < gallbladder/SM --- > gallantry/M > gallbladder/MS 31075c27326 < gallery/DSM --- > gallery/SM 31087d27337 < galoshe/M 31095d27344 < galvanometric 31101c27350 < game/MYZTGDRSP --- > game/MYTGDRSP 31103c27352 < gamekeeper/SM --- > gamekeeper/MS 31106d27354 < gamesmen 31111c27359 < gamify/NGDS --- > gamify/DSNG 31122c27370 < gang/MDYGS --- > gang/MDGS 31129d27376 < gangly/RT 31135d27381 < gangsterism 31141,31142d27386 < gaolbirds < gaolbreak/S 31145d27388 < gaping/Y 31173,31174c27416 < garnishment/MS < garote/DSMG --- > garnishment/SM 31182c27424 < garrulous/YP --- > garrulous/PY 31185c27427,27429 < gas/CSM --- > garçon/SM > gas's > gas/CS 31215c27459 < gateau/S --- > gateau 31224d27467 < gathered/I 31236c27479 < gaunt/RYPT --- > gaunt/RPT 31251,31252c27494 < gay/TSPMRY < gayety/M --- > gay/TSPMR 31267d27508 < gearstick 31272d27512 < geegaw/SM 31277d27516 < geez/RZ 31282d27520 < gelatine/M 31299d27536 < genderless 31302c27539 < genealogist/SM --- > genealogist/MS 31306c27543 < generalissimo/SM --- > generalissimo/MS 31310c27547 < generalize/GBDS --- > generalize/GDS 31313c27550,27551 < generation/ASMC --- > generation's/A > generation/CSM 31319c27557 < generous/UY --- > generous/PY 31325c27563 < geneticist/SM --- > geneticist/MS 31328a27567 > geniculate 31342,31343c27581 < genomic/S < genotype/S --- > genomics 31346c27584 < genteel/RYTP --- > genteel/YP 31352c27590 < gentlefolk/SM --- > gentlefolk/MS 31368a27607 > geocache/DSG 31371d27609 < geochemical 31376a27615 > geoengineering 31388d27626 < geomagnetically 31390c27628 < geometer/S --- > geometer 31394d27631 < geomorphology 31400d27636 < geoscientific 31403c27639 < geosyncline/SM --- > geosyncline/MS 31418d27653 < germinated/U 31420d27654 < gerontocracy 31422c27656 < gerontologist/SM --- > gerontologist/MS 31424c27658 < gerrymander/SMDG --- > gerrymander/GMDS 31426c27660 < gerund/VMS --- > gerund/MS 31432c27666 < gesticulate/XDSGN --- > gesticulate/DSGNX 31437c27671 < get/SM --- > get/S 31439,31440d27672 < gettable < getter 31453d27684 < ghostlike 31461c27692 < ghoulish/PY --- > ghoulish/YP 31465d27695 < giantkiller 31478c27708 < gigabit/MS --- > gigabit/SM 31481c27711 < gigajoule/MS --- > gigajoule/SM 31485,31486c27715 < gigavolt < gigawatt/MS --- > gigawatt/SM 31509c27738 < gimpy/RT --- > gimpy 31517,31518c27746 < gingko/M < ginkgo/M --- > ginkgo/SM 31524d27751 < gipsy/SM 31530c27757 < girlfriend/SM --- > girlfriend/MS 31540d27766 < gismo/SM 31544c27770 < give/MZGJRS --- > give/ZGJRS 31558,31560c27784 < glaciological < glaciologist/S < glaciology --- > glacé/SDG 31571d27794 < gladly/TR 31573c27796 < gladsome/RT --- > gladsome 31578a27802 > glamour/GMDS 31594d27817 < glassless 31599d27821 < glazed/U 31609a27832,27833 > glenohumeral > glenoid 31646c27870 < glockenspiel/MS --- > glockenspiel/SM 31652c27876 < gloppy/TR --- > gloppy 31654c27878 < glorify/GNDS --- > glorify/GDSN 31669a27894 > glucagon 31680d27904 < gluon 31682d27905 < glutamate 31694d27916 < glycine 31696d27917 < glycol 31698d27918 < glyphs 31710,31711d27929 < gnostic < gnosticism 31713c27931 < go/SJMRHZG --- > go/JMRHZG 31717c27935 < goalkeeper/SM --- > goalkeeper/MS 31724,31725c27942 < goalscoring < goaltender/SM --- > goaltender/MS 31735d27951 < gobbledegook/M 31745,31746c27961,27962 < godchildren < goddam --- > godchildren/M > goddam/D 31749c27965 < goddaughter/SM --- > goddaughter/MS 31772,31773c27988,27989 < gold/MNRTS < goldbrick/SZGMDR --- > gold/MNS > goldbrick/ZGSMDR 31794c28010 < gonk/DGS --- > gonk/S 31818a28035 > google/DSMG 31834c28051,28052 < gorge/EDSGM --- > gorge's > gorge/EDSG 31879c28097 < governorship/MS --- > governorship/M 31890,31891d28107 < gracefuller < gracefullest 31893c28109 < graceless/YP --- > graceless/PY 31898c28114 < grad/MRZSBJ --- > grad/MRZSB 31900,31901c28116,28118 < gradation/CSM < grade/CADSGM --- > gradation/CM > grade's > grade/CADSG 31907d28123 < gradualist 31909d28124 < graduand/S 31917c28132 < grail/S --- > grail 31924a28140 > grammatically/K 31930,31931c28146 < grandad/S < grandaddy/S --- > grandad/MS 31935c28150 < grandchildren --- > grandchildren/M 31938c28153 < granddaughter/MS --- > granddaughter/SM 31942c28157 < grandfather/SMDYG --- > grandfather/GMDYS 31948d28162 < grandmaster/S 31956c28170 < grandstand/SMDG --- > grandstand/SGMD 31959c28173 < granite/MS --- > granite/M 31967d28180 < grantor/MS 31975c28188 < grapefruit/SM --- > grapefruit/MS 31982c28195 < graphologist/SM --- > graphologist/MS 31987c28200 < grasp/SMDRBG --- > grasp/SMDBG 31989c28202 < grasshopper/SM --- > grasshopper/MS 31995,31996d28207 < gratefuller < gratefullest 31999d28209 < graticule 32001c28211 < gratify/XNGDS --- > gratify/GNXDS 32012c28222 < gravedigger/MS --- > gravedigger/SM 32020c28230 < gravimeter/SM --- > gravimeter/MS 32024,32026c28234,28235 < gravitational/Y < graviton/S < gravity/SM --- > gravitational > gravity/M 32036d28244 < greaseproof 32056,32057c28264 < greengrocer/MS < greengrocery --- > greengrocer/SM 32079,32080c28286,28288 < grey/MDRTGSP < greybeard/SM --- > grey/MDRTGS > greybeard's > greybeards 32082,32083c28290 < greyish < greyness/M --- > greyness's 32086d28292 < gridded 32095c28301 < grievous/YP --- > grievous/PY 32112c28318 < grindstone/SM --- > grindstone/MS 32115d28320 < grinner 32126d28330 < gristly/RT 32137c28341 < groan/SZGMDR --- > groan/SGMD 32157c28361 < grope/DRSJMZG --- > grope/DRSMZG 32159d28362 < groping/Y 32164c28367 < grotesque/SMYP --- > grotesque/SPMY 32177d28379 < grounded/U 32212d28413 < groyne/S 32240d28440 < gryphon/SM 32245a28446 > guaranies 32251c28452 < guarded/YP --- > guarded/Y 32262c28463 < gudgeon --- > guerilla/SM 32265d28465 < guessable/U 32270c28470 < guestbook/MS --- > guestbook/SM 32287c28487 < guileless/PY --- > guileless/YP 32306d28505 < gulley/MS 32324d28522 < gumtree/S 32333c28531 < gunky/TR --- > gunky 32375c28573 < guttersnipe/SM --- > guttersnipe/MS 32377c28575 < guttural/MYS --- > guttural/MS 32395c28593 < gynecologist/MS --- > gynecologist/SM 32409d28606 < gyromagnetic 32416c28613 < haberdasher/MS --- > haberdasher/SM 32419c28616,28617 < habit/ISBM --- > habit's > habit/ISB 32427a28626 > habitué/SM 32429c28628 < hack/BMDRZGS --- > hack/MDRZGS 32432,32434c28631 < hackish/SP < hackishness/S < hackitude/S --- > hackish 32437a28635 > hacktivist/S 32441,32443d28638 < hadj/M < hadjes < hadji/SM 32445d28639 < hadron/S 32470d28663 < haircare 32474c28667 < hairdresser/MS --- > hairdresser/SM 32476c28669 < hairdrier/S --- > hairdrier/MS 32488c28681 < hairsplitter/MS --- > hairsplitter/SM 32491,32493c28684,28686 < hairspring/SM < hairstyle/MGS < hairstylist/MS --- > hairspring/MS > hairstyle/MS > hairstylist/SM 32506,32507c28699 < halfbreed < halfhearted/YP --- > halfhearted/PY 32511d28702 < halfpennyworth 32517d28707 < halide/S 32521,32522d28710 < halleluiah/M < halleluiahs 32525d28712 < halliard/MS 32527d28713 < hallo/M 32531c28717 < hallucinate/DSXGN --- > hallucinate/GNXDS 32535c28721 < hallucinogenic/MS --- > hallucinogenic/SM 32539,32540c28725 < halogenated < halon/S --- > halon 32563c28748 < hamstring/SGM --- > hamstring/GSM 32565c28750,28751 < hand/UDGSM --- > hand's > hand/UDGS 32569d28754 < handbasin 32585c28770 < handicapper/SM --- > handicapper/MS 32591c28776 < handkerchief/SM --- > handkerchief/MS 32641c28826 < happenstance/MS --- > happenstance/SM 32670,32671c28855 < hardline/ZR < hardliner/M --- > hardliner/MS 32690,32691c28874 < hark/DNXGS < harken/DG --- > hark/DGS 32695c28878 < harm/MDRGS --- > harm/MDGS 32712c28895,28896 < harness/UDSGM --- > harness's > harness/UDSG 32717,32718c28901,28902 < harpsichord/SM < harpsichordist/MS --- > harpsichord/MS > harpsichordist/SM 32733d28916 < hasheesh/M 32735c28918 < hashtag/S --- > hashtag/SM 32784d28966 < havering 32796d28977 < hayfield 32804d28984 < haywain 32814a28995 > hazmat 32850d29030 < headmastership 32853d29032 < headnote 32857c29036 < headquarter/SGD --- > headquarter/SDG 32865c29044 < headshrinker/MS --- > headshrinker/SM 32870d29048 < headstock 32874c29052 < headwaiter/MS --- > headwaiter/SM 32884c29062 < healthcare/M --- > healthcare 32889d29066 < healths 32898c29075,29076 < hearse/ASM --- > hearse's > hearse/AS 32902c29080 < heartbreak/MSG --- > heartbreak/SMG 32910c29088 < hearthstone/MS --- > hearthstone/SM 32914c29092 < heartless/YP --- > heartless/PY 32924c29102,29103 < heat/ADGSM --- > heat's > heat/ADGS 32928c29107 < heath/MNRXZ --- > heath/MNRX 32934,32935d29112 < heathery < heathland 32952c29129 < heavyweight/SM --- > heavyweight/MS 32961d29137 < hectoliters 33001c29177 < helicopter/SMDG --- > helicopter/SGMD 33003,33004d29178 < heliography < heliosphere 33010c29184 < hell/MS --- > hell/M 33014d29187 < hellfire 33033c29206 < helpline/S --- > helpline/SM 33035d29207 < helpmeet/SM 33041c29213 < hematologist/SM --- > hematologist/MS 33054c29226 < hemophiliac/SM --- > hemophiliac/MS 33067d29238 < henge 33070c29241 < hentai/! --- > hentai 33074a29246 > hepatocyte/S 33079d29250 < heptane 33081d29251 < her/M 33090d29259 < herbalism 33116d29284 < hereunder 33120d29287 < heritability 33125d29291 < hermeneutic/S 33164d29329 < heterozygous 33176c29341,29342 < hexane/SM --- > hexane's > hexanes 33187c29353 < hibernator/SM --- > hibernator/MS 33188a29355,29356 > hiccough/DG > hiccoughs 33194c29362 < hidden/U --- > hidden 33208d29375 < hieratic 33210c29377 < hieroglyphic/SM --- > hieroglyphic/MS 33219d29385 < highfaluting 33222,33223d29387 < highish < highjack/SGMD 33229,33230d29392 < highpoint < highrise/MS 33241d29402 < hijinks 33254d29414 < hillwalking 33257c29417 < him/SM --- > him/S 33266c29426,29427 < hinge/UDSGM --- > hinge's > hinge/UDSG 33269c29430 < hinterland/MS --- > hinterland/SM 33279c29440 < hippie/SM --- > hippie/M 33284a29446 > hippy/SM 33286c29448,29450 < hire/AGDSM --- > hiragana > hire's > hire/AGDS 33288d29451 < hirer 33291c29454 < hiss/MDSGJ --- > hiss/MDSG 33295d29457 < histological 33301d29462 < historicist 33304d29464 < historiographical 33311c29471,29472 < hitch/UDSGM --- > hitch's > hitch/UDSG 33317d29477 < hittable 33325,33327c29485 < hoagie/M < hoagy/SM < hoar --- > hoagie/MS 33350a29509 > hoboes 33365d29523 < hogger 33379c29537 < hold/MRBJSZG --- > hold/MRJSZG 33427d29584 < homeomorphism/S 33447a29605 > homewrecker/SM 33451a29610 > homie/RSMT 33455a29615 > hominoid/S 33459d29618 < homogenates 33464d29622 < homogenous 33467d29624 < homological 33469,33471d29625 < homologue < homology/S < homomorphism/S 33473d29626 < homophobes 33477,33478c29630 < homophony < homosexual/SMY --- > homosexual/SM 33480,33483d29631 < homotopy < homozygous < homunculus < homy/RPT 33493c29641 < honeycomb/GMDS --- > honeycomb/MDSG 33496c29644 < honeymoon/MDRSZG --- > honeymoon/ZGMDRS 33510d29657 < honored/U 33515a29663 > hoodie/MS 33521,33522c29669,29670 < hook/UDSGM < hooka/SM --- > hook's > hook/UDSG 33526d29673 < hookey/M 33534c29681 < hooray/MDSG --- > hooray/MS 33544d29690 < hoped/U 33547c29693 < hopeless/PY --- > hopeless/YP 33552c29698 < hopscotch/GMDS --- > hopscotch/MDSG 33557,33558c29703,29704 < horizontal/MYS < hormonal/Y --- > horizontal/SMY > hormonal 33561d29706 < hornbeam 33583c29728,29729 < horse/UDSGM --- > horse's > horse/UDSG 33621a29768 > hospholipase 33627,33628c29774,29775 < hospitalization/MS < hospitalize/GDS --- > hospitalization/SM > hospitalize/DSG 33644d29790 < hotchpotch 33654a29801 > hotkey/S 33662d29808 < hotspot/MS 33665a29812 > hottie/S 33667,33668d29813 < houmous < houmus 33673c29818,29819 < house/ADSGM --- > house's > house/ADSG 33682,33683c29828 < housebuilding < houseclean/DGS --- > houseclean/DSG 33690c29835 < househusband/MS --- > househusband/SM 33701d29845 < housemoving 33708c29852 < housewarming/MS --- > housewarming/SM 33715c29859 < hover/SGDR --- > hover/SGD 33716a29861,29862 > how'd > how're 33758d29903 < hullo/M 33766c29911 < humanitarian/SM --- > humanitarian/MS 33794c29939 < humiliate/XDSGN --- > humiliate/DSGNX 33798d29942 < hummable 33807a29952 > humoresque 33809c29954 < humorless/PY --- > humorless/YP 33817d29961 < humungous 33825c29969 < hundredweight/MS --- > hundredweight/SM 33847,33848c29991,29993 < hurrah/M < hurray/GSMD --- > hurrah/GMD > hurrahs > hurray 33873,33874d30017 < hutzpa/M < hutzpah/M 33888c30031,30032 < hydrate/CGNDSM --- > hydrate's > hydrate/CGNDS 33893,33894d30036 < hydrazine < hydride 33896c30038 < hydrocarbon/SM --- > hydrocarbon/MS 33898,33900d30039 < hydrocephaly/M < hydrochloric < hydrochloride 33902d30040 < hydrodynamical 33907d30044 < hydrofluoric 33910c30047 < hydrogenate/CDSGN --- > hydrogenate/CGDS 33913d30049 < hydrological 33915a30052 > hydrolyses 33918,33919d30054 < hydromagnetic < hydromechanics 33924,33925c30059,30060 < hydrophone/MS < hydroplane/MGDS --- > hydrophone/SM > hydroplane/GDSM 33930d30064 < hydrostatic/S 33932d30065 < hydrothermal 33941d30073 < hygroscopic 33954d30085 < hyperboloid/S 33956,33957d30086 < hypercube/S < hyperfine 33960c30089 < hyperlink/SM --- > hyperlink/GSMD 33963c30092 < hyperplane/S --- > hyperparathyroidism 33967d30095 < hypersonic 33969d30096 < hypersphere 33971c30098 < hypertensive/MS --- > hypertensive/SM 33975c30102 < hypertrophy/GDSM --- > hypertrophy/DSMG 33980d30106 < hyphenated/U 33993d30118 < hypocaust 33995c30120 < hypochondriac/MS --- > hypochondriac/SM 33999c30124 < hypodermic/SM --- > hypodermic/MS 34002c30127 < hypotenuse/SM --- > hypotenuse/MS 34008c30133 < hypothesize/GDRS --- > hypothesize/DSG 34012d30136 < hypoxia 34020a30145 > iPad/M 34028d30152 < iatrogenic 34034c30158,30159 < ice/CDSGM --- > ice's > ice/CDSG 34039c30164 < icebreaker/MS --- > icebreaker/SM 34043,34045d30167 < icepack < icepick/S < ichneumon 34056c30178 < iconoclast/MS --- > iconoclast/SM 34058d30179 < iconographic 34060,34062d30180 < icosahedra < icosahedral < icosahedron 34072c30190 < idealization/SM --- > idealization/MS 34078d30195 < identifiably 34086d30202 < ideographic 34089c30205 < ideologist/MS --- > ideologist/SM 34094d30209 < idiolect 34116d30230 < idyl/MS 34127d30240 < ignitible 34136c30249 < ignore/GDSB --- > ignore/GDS 34140d30252 < ikon/MS 34160d30271 < illiquid 34166,34167c30277 < illuminant < illuminate/XDSGN --- > illuminate/GNXDS 34175,34176c30285 < illustrate/GNVDSX < illustrated/U --- > illustrate/GNVXDS 34182d30290 < ilmenite 34186a30295 > imaginal 34188c30297 < imagination/SM --- > imagination/MS 34191d30299 < imagined/U 34199,34201d30306 < imbed/S < imbedded < imbedding 34227c30332 < immediate/YP --- > immediate/PY 34230c30335 < immense/RYTP --- > immense/Y 34236c30341 < immigrate/DSGNX --- > immigrate/DSGN 34240d30344 < immiscible 34242d30345 < immobilisers 34255c30358 < immortalize/GDS --- > immortalize/DSG 34259d30361 < immoveable 34261,34262c30363,30364 < immunity/SM < immunization/MS --- > immunity/M > immunization/SM 34264d30365 < immunoassay 34266a30368 > immunoglobulin/S 34268c30370 < immunological/Y --- > immunological 34277d30378 < impaction 34280c30381 < impairment/SM --- > impairment/MS 34282c30383 < impale/DRSGL --- > impale/DSGL 34296c30397 < impassive/PY --- > impassive/YP 34315c30416 < impediment/MS --- > impediment/SM 34327c30428 < imperative/MYS --- > imperative/SMY 34333,34334c30434,30435 < imperfect/SPMY < imperfection/SM --- > imperfect/SMYP > imperfection/MS 34354,34355c30455 < impersonality < impersonate/XDSGN --- > impersonate/GNXDS 34357c30457 < impersonator/MS --- > impersonator/SM 34384c30484 < implement/BZGMDRS --- > implement/GBMDRS 34387,34388c30487 < implemented/UA < implementing/A --- > implemented/U 34393d30491 < implied/Y 34403c30501 < imponderable/SM --- > imponderable/MS 34407c30505 < importation/SM --- > importation/MS 34409d30506 < importing/A 34413d30509 < imposable 34418c30514 < imposition/SM --- > imposition/MS 34430c30526 < impoverish/LGDS --- > impoverish/DSLG 34436c30532 < impracticality/SM --- > impracticality/M 34452c30548 < impression/MSB --- > impression/BSM 34457c30553 < impressive/YP --- > impressive/PY 34459c30555 < imprimatur/MS --- > imprimatur/SM 34462,34463c30558,30559 < imprison/SDGL < imprisonment/MS --- > imprison/SDLG > imprisonment/SM 34470c30566 < improve/GBDRSL --- > improve/GBDSL 34472c30568 < improvement/SM --- > improvement/MS 34477d30572 < improvisatory 34485c30580 < impugn/ZGBSDR --- > impugn/ZGSDR 34496a30592 > inaccuracy/S 34498d30593 < inactivity 34509d30603 < inapplicability 34515c30609 < inaugurate/GNDSX --- > inaugurate/XGNDS 34518,34519c30612,30613 < inbound/s < inbox/M --- > inbound > inbox/MS 34525d30618 < incant 34527,34530c30620,30621 < incantatory < incapable < incapacitate/DSGN < incarcerate/GNXDS --- > incapacitate/GDS > incarcerate/XDSGN 34532c30623 < incarnadine/GDS --- > incarnadine/DSG 34537,34538c30628,30630 < incentive/ESM < incentivize/SDG --- > incentive's > incentive/ES > incentivize/DSG 34541c30633 < incest/MS --- > incest/M 34552c30644 < incinerator/SM --- > incinerator/MS 34557c30649 < incisive/YP --- > incisive/PY 34566c30658,30659 < incline/EGDSM --- > incline's > incline/EGDS 34572d30664 < incoherency 34577c30669,30670 < incompetent/SM --- > incompatibility/S > incompetent/MS 34586c30679 < incontinent/Y --- > incontinent 34588,34590c30681,30682 < inconvenience/DG < incorporable < incorporate/AGNDS --- > inconvenience/GD > incorporate/ADSGN 34595c30687 < incorrigibleness --- > incorrigible/P 34598c30690 < increment/SMDG --- > increment/SMD 34600c30692,30693 < incrementation --- > incrementalism > incrementalist/SM 34604c30697 < incrustation/MS --- > incrustation/SM 34626,34627d30718 < indecent/T < indeclinable 34632a30724 > indefinably 34636c30728 < indemnify/XGNDS --- > indemnify/GDSXN 34638c30730 < indentation/SM --- > indentation/MS 34649d30740 < indicant/S 34654d30744 < indices 34658d30747 < indifference/M 34673d30761 < indispose/D 34675a30764 > indistinguishably 34680c30769 < individualist/SM --- > individualist/MS 34685c30774 < individualize/DSG --- > individualize/GDS 34689c30778 < indoctrinate/DSXGN --- > indoctrinate/GNDS 34691d30779 < indoctrinator/S 34696d30783 < indorse/GDS 34702c30789 < inducible --- > induct/DGV 34707d30793 < inductor/S 34709,34710c30795,30796 < indulge/DRSG < indulgence/MS --- > indulge/DSG > indulgence/SM 34714c30800 < industrialist/MS --- > industrialist/SM 34716c30802 < industrialize/GDS --- > industrialize/DSG 34727c30813 < ineffectual/P --- > inefficiency/S 34729a30816 > ineligibly 34735c30822 < ineradicably --- > inequality/S 34747d30833 < inexactitude/S 34756d30841 < inexpressibility 34765c30850 < infanticide/SM --- > infanticide/MS 34774,34775c30859 < infeasibility < infect/AESDVG --- > infect/AESDG 34782c30866 < inferential/Y --- > inferential 34790c30874 < infestation/SM --- > infestation/MS 34793d30876 < infiltrate/X 34795c30878 < infinite/MYV --- > infinite/MV 34798c30881 < infinitive/SM --- > infinitive/MS 34816,34817c30899,30900 < inflict/SDRGV < infliction/MS --- > inflict/SDGV > infliction/M 34818a30902 > inflow/SM 34823d30906 < influx/MS 34825c30908,30909 < infomercial/MS --- > infomercial/SM > inform/Z 34828d30911 < informatics 34831c30914 < informative/UY --- > informative/PY 34833d30915 < informatory 34840c30922 < infrastructure/MS --- > infrastructure/SM 34856d30937 < ingoing 34865d30945 < ingression 34866a30947 > ingénue/SM 34872c30953 < inhalation/SM --- > inhalation/MS 34886,34887d30966 < inhomogeneity/S < inhomogeneous 34895,34898c30974,30977 < initialization/S < initialize/ADG < initialized/U < initializes --- > initialism > initialization > initialize/DSG > initialized/AU 34911c30990 < injurious/Y --- > injurious 34915c30994 < inkjet/MS --- > inkjet/SM 34937c31016 < innocent/MRYST --- > innocent/MYS 34944a31024 > innuendoes 34956c31036 < inquisition/SM --- > inquisition/MS 34960,34961c31040,31041 < inquisitor/MS < inquisitorial/Y --- > inquisitor/SM > inquisitorial 34964d31043 < insanity/S 34967,34968c31046,31048 < inscriber/SM < inscription/SM --- > inscribe/ZGDR > inscriber/M > inscription/MS 34975c31055 < insecticide/SM --- > insecticide/MS 34979c31059 < inseminate/GNDS --- > inseminate/DSGN 34984,34985c31064,31066 < inseparable/SM < insert/AGSDM --- > inseparable/MS > insert's > insert/AGSD 34992c31073 < insidious/PY --- > insidious/YP 34996d31076 < insigne/M 34998,34999c31078 < insinuate/GNVXDS < insinuating/Y --- > insinuate/GNVDSX 35023,35024c31102,31103 < inspectorate/SM < inspiration/SM --- > inspectorate/MS > inspiration/MS 35030,35034c31109,31111 < instal/S < install/UBZRSDG < installation/SM < installer/UM < installment/MS --- > installation/MS > installer/UMS > installment/SM 35038c31115,31116 < instantiate/GNDSX --- > instantiate/DSG > instar 35043,35044c31121 < instigator/SM < instil/S --- > instigator/MS 35049c31126 < institute/MZGNXDRS --- > institute/XMZGNDRS 35053d31129 < institutionalism 35055,35056c31131,31132 < institutionalize/GDS < institutor/SM --- > institutionalize/DSG > institutor/MS 35060c31136 < instruction/SM --- > instruction/MS 35064,35066c31140,31142 < instrument/GMDS < instrumental/SMY < instrumentalist/MS --- > instrument/MDSG > instrumental/MYS > instrumentalist/SM 35075d31150 < insulated/U 35079c31154 < insult/SMDRG --- > insult/SMDG 35091,35092c31166,31167 < insurrection/MS < insurrectionist/MS --- > insurrection/SM > insurrectionist/SM 35097,35098d31171 < integrability < integrable 35100,35104c31173,31175 < integrand/S < integrate/EAVNGSD < integration/AEM < integrations < integrator/S --- > integrate/AEVNGSD > integration/EAM > integrator 35108c31179 < intellectual/SMY --- > intellectual/MYS 35110d31180 < intellectuality 35112c31182 < intelligence/MS --- > intelligence/M 35122c31192 < intensify/ZGDRSN --- > intensify/DRSZGN 35124c31194 < intensive/PMYS --- > intensive/MYPS 35127c31197 < intention/MDS --- > intention/MS 35129d31198 < intentionality 35134c31203 < interactive/PY --- > interactive/Y 35136d31204 < interbank 35138c31206 < interbreed/SG --- > interbreed/GS 35143,35144c31211,31212 < intercession/MS < intercessor/SM --- > intercession/SM > intercessor/MS 35153c31221 < intercommunicate/GNDS --- > intercommunicate/DSGN 35155,35156c31223 < interconnect/GSD < interconnected/P --- > interconnect/GDS 35159d31225 < interconversion 35165d31230 < interdependency 35171c31236 < interested/UEY --- > interested/U 35175,35179c31240,31241 < interfere/GDRS < interference/MS < interferometer/S < interferometric < interferometry --- > interfere/GDS > interference/M 35183d31244 < interglacial 35188,35190c31249,31250 < interject/DGS < interjection/MS < interjectional --- > interject/GDS > interjection/SM 35192,35193c31252,31253 < interlard/GDS < interleave/GDS --- > interlard/DGS > interleave/DSG 35195c31255 < interline/JGDS --- > interline/GDSJ 35197d31256 < interlingual 35199c31258 < interlink/GDS --- > interlink/DSG 35201c31260 < interlocutor/MS --- > interlocutor/SM 35206,35207c31265,31266 < intermarriage/MS < intermarry/DSG --- > intermarriage/SM > intermarry/GDS 35210,35212c31269,31271 < intermediate/SMYPGD < intermediation/SE < intermediator/SM --- > intermediate/XMYGNPDS > intermediation/ES > intermediator/MS 35219c31278 < intermission/MS --- > intermission/SM 35222,35223d31280 < intermolecular < intern/GDL 35226c31283 < internalize/DSG --- > internalize/GDS 35229c31286 < internationalist/MS --- > internationalist/SM 35231,35232c31288,31289 < internationalize/GDS < interne/MGDS --- > internationalize/DSG > interne/GDL 35234a31292 > interneship/S 35237c31295 < internment/MS --- > internment/M 35239,35240d31296 < internuclear < interocular 35242,35244c31298 < interoperability < interoperable < interpenetrate/GNDS --- > interpenetrate/DSGN 35247,35248c31301,31302 < interplay/MS < interpolate/BXGNDS --- > interplay/M > interpolate/XDSGN 35253,35254c31307 < interpretable/U < interpretation/ASM --- > interpretation/AMS 35258d31310 < interpretive/Y 35261,35263c31313,31314 < interregnum/MS < interrelate/XGNDS < interrelated/P --- > interregnum/SM > interrelate/XDSGN 35267c31318 < interrogate/GNVDSX --- > interrogate/DSGNVX 35274d31324 < interruptibility 35280c31330 < intersession/MS --- > intersession/SM 35290,35291c31340 < interstitial/Y < intertidal --- > interstitial 35299c31348 < interview/MDRZGS --- > interview/ZGMDRS 35304c31353 < interweave/SG --- > interweave/GS 35311d31359 < intifada 35318d31365 < intimidatory 35320,35322c31367,31368 < intonational < intoxicant/MS < intoxicate/GNDS --- > intoxicant/SM > intoxicate/DSGN 35324c31370 < intracellular --- > intracranial 35327c31373 < intranet/S --- > intranet/MS 35329c31375 < intransigent/SMY --- > intransigent/MYS 35344c31390,31391 < introduction/ASM --- > introduction/AM > introductions 35347c31394 < introspect/DGVS --- > introspect/GVDS 35359,35360c31406 < intuitionist < intuitive/YP --- > intuitive/PY 35371c31417 < invariance --- > invariant 35374c31420 < invective/SM --- > invective/M 35380d31425 < invented/U 35385c31430 < inventory/GDSM --- > inventory/DSMG 35387,35388c31432 < invert/SMDRZG < invertible --- > invert/SMDG 35390c31434 < investigate/DSXGNV --- > investigate/GNVDSX 35392c31436 < investigator/MS --- > investigator/SM 35395c31439 < investment/EAM --- > investment/AEM 35399c31443 < invidious/PY --- > invidious/YP 35411,35412c31455,31456 < invitation/MS < invitational/MS --- > invitation/SM > invitational/SM 35417c31461 < invoke/DRSZGB --- > invoke/DSG 35420d31463 < involute/XN 35423d31465 < involved/U 35434d31475 < ionized/C 35443c31484 < irate/RYTP --- > irate/YP 35467c31508 < ironwork/MS --- > ironwork/M 35472c31513 < irrationality/SM --- > irrationality/M 35481d31521 < irreducibility 35489,35490c31529,31530 < irrelevance/SM < irrelevancy/SM --- > irrelevance/MS > irrelevancy/MS 35491a31532 > irreligion 35508,35509c31549 < irresolvable < irrespective/Y --- > irrespective 35517d31556 < irreversibility 35530d31568 < irritated/Y 35551,35552c31589 < isolationist/MS < isolator/S --- > isolationist/SM 35560,35561d31596 < isomorphism/S < isoperimetrical 35563d31597 < isostatic 35565,35566d31598 < isothermal/Y < isotonic 35570,35572d31601 < isotropically < isotropy < issuable 35575d31603 < issued/U 35595d31622 < iterative/Y 35622c31649 < jackrabbit/SM --- > jackrabbit/MS 35625d31651 < jacuzzi 35633c31659 < jaggies/S --- > jaggies 35640d31665 < jailor/SM 35641a31667 > jalapeño/MS 35648,35649c31674,31675 < jammed/U < jamming/U --- > jammed > jamming 35653d31678 < jangly 35661a31687 > jardinière/SM 35670d31695 < jaundiced/U 35679c31704 < jawbreaker/SM --- > jawbreaker/MS 35697d31721 < jehad/SM 35711c31735 < jeopardize/DSG --- > jeopardize/GDS 35720a31745 > jerrican/S 35724d31748 < jessamine/MS 35738,35739c31762 < jewelery/S < jewellery/M --- > jewellery 35748c31771,31772 < jig/ASM --- > jig's > jig/AS 35750c31774,31775 < jigger/ASDGM --- > jigger's > jigger/ASDG 35753c31778 < jiggly/RT --- > jiggly 35755a31781 > jihadist/SM 35760,35761c31786 < jingly/TR < jingo --- > jingly 35768c31793 < jinricksha/MS --- > jinricksha/SM 35770d31794 < jinriksha/MS 35773d31796 < jitter/S 35780d31802 < jiujitsu/M 35812c31834,31835 < join/AFDSGM --- > join's > join/AFDSG 35815c31838,31839 < joint/EGSDM --- > joint's > joint/EGSD 35817d31840 < jointures 35823c31846,31847 < jokily --- > jokier > jokiest 35825d31848 < joky/RT 35843c31866 < jouncy/TR --- > jouncy 35880,35881c31903,31906 < judge/ADSGM < judgement/MS --- > judge's > judge/ADSG > judgement/SM > judgemental 35889c31914 < judicious/IPY --- > judicious/IYP 35908d31932 < jujutsu/M 35926d31949 < juniority 35942d31964 < jurisprudential 35951,35953c31973 < jussive < just/UYPT < juster --- > just/RYPT 35955d31974 < justifiability 35959,35961c31978,31979 < justificatory < justified/AU < justify/NGDSX --- > justified/U > justify/XGDSN 35969c31987 < juxtaposition/MS --- > juxtaposition/SM 35973a31992,31993 > kabbala > kabbalah 35980d31999 < kaftan/MS 35984c32003 < kaleidoscope/SM --- > kaleidoscope/MS 35987a32007 > kana 35988a32009 > kanji 35999a32021 > katakana 36019c32041 < kelp/MZ --- > kelp/M 36028a32051 > keratitis 36032d32054 < kerned 36034d32055 < kerning 36036d32056 < kerosine/M 36042d32061 < kettleful 36043a32063 > keybinding/S 36046c32066 < keyboardist/MS --- > keyboardist/SM 36049c32069 < keylogging/MS --- > keylogging/SM 36055d32074 < keyring 36061d32079 < khalif/S 36084,36086c32102 < kiddy/SM < kidnap/ZSR < kidnaper/M --- > kidnap/S 36102d32117 < kilobits 36107d32121 < kilojoules 36115c32129 < kin/SM --- > kin/M 36117c32131,32132 < kind/UPRYTM --- > kind's > kind/UPRYT 36119,36120c32134 < kindergarten/MRSZ < kindergartener/M --- > kindergarten/MS 36121a32136 > kindergärtner/SM 36142c32157 < kingfisher/MS --- > kingfisher/SM 36162d32176 < kirk/MS 36166d32179 < kissagram/S 36173c32186 < kitchenette/SM --- > kitchenette/MS 36183d32195 < kittiwakes 36188a32201 > kleptocracy 36190c32203 < kleptomaniac/MS --- > kleptomaniac/SM 36192c32205 < kluge/DSG --- > kluge/DS 36200c32213 < knackwurst/SM --- > knackwurst/MS 36234c32247 < knock/JSZGMDR --- > knock/SZGMDR 36248,36249c32261 < knowing/UTYS < knowinger --- > knowing/UYS 36266d32277 < kookie 36276,36277c32287 < kraut/MS! < kriegspiel --- > kraut/SM! 36283a32294,32295 > króna/M > krónur 36288d32299 < kulaks 36292d32302 < kyle/S 36296c32306,32307 < label/ASDGM --- > label's > label/ASDG 36299d32309 < labellings/A 36315c32325,32326 < lace/UGDSM --- > lace's > lace/UGDS 36360d32370 < lagnappe/MS 36393d32402 < lamented/U 36403c32412 < lamplight/ZMR --- > lamplight/MRZ 36406d32414 < lampoonery 36418,36420c32426,32427 < landforms < landholder/MS < landholding/SM --- > landholder/SM > landholding/MS 36424c32431 < landlines --- > landline/MS 36457a32465,32467 > laparoscopic > laparoscopy > laparotomy 36481d32490 < largesse/M 36509c32518,32519 < latch/UDSGM --- > latch's > latch/UDSG 36513c32523 < latency/SM --- > latency/M 36517d32526 < lateralization 36550c32559 < launderette/MS --- > launderette/SM 36552,36553c32561 < laundrette/SM < laundromat/SM --- > laundromat/MS 36563c32571 < lava/MS --- > lava/M 36565d32572 < lavalier/MS 36614d32620 < lazuli 36631c32637 < leafy/PRT --- > leafy/RT 36648c32654 < learning/M --- > learning's 36654c32660,32661 < leash/UDSGM --- > leash's > leash/UDSG 36656d32662 < leastways 36668d32673 < lebensraum 36676c32681 < lector/MS --- > lector/SM 36679c32684 < lectureship/MS --- > lectureship/SM 36687d32691 < leering/Y 36692d32695 < leftie/M 36702c32705 < legalese/MS --- > legalese/M 36711c32714 < legation/ACM --- > legation's/AC 36732c32735 < legislator/SM --- > legislator/MS 36736,36737c32739,32740 < legitimate/DSYGN < legitimatize/DSG --- > legitimate/DSYG > legitimatize/GDS 36744d32746 < legstraps 36770d32771 < lengthways 36777,36778c32778,32779 < lens/MSG < lent/N --- > lens/MS > lent 36784d32784 < leopardskin 36787c32787 < lepidopterist/SM --- > lepidopterist/MS 36802d32801 < letch/S 36805d32803 < lethality 36825c32823 < level/PSZTGMDRY --- > level/PSZGMDRY 36831c32829,32830 < leverage/DSMG --- > leverage's > leverage/CDSG 36840d32838 < lexeme/S 36842,36843c32840,32841 < lexical/Y < lexicographer/SM --- > lexical > lexicographer/MS 36845c32843 < lexicographical/Y --- > lexicographical 36850c32848,32849 < liability/ASM --- > liabilities > liability/AM 36865c32864 < liberalize/DSG --- > liberalize/GDS 36869d32867 < liberationists 36871,36873c32869 < libero < libertarian/MS < libertarianism --- > libertarian/SM 36888c32884 < licentiate/MS --- > licentiate/SM 36891,36892c32887 < lichee/MS < lichen/MDS --- > lichen/MS 36895d32889 < lickerish 36909c32903 < lieutenant/SM --- > lieutenant/MS 36914d32907 < lifeboatmen 36918c32911 < lifeless/PY --- > lifeless/YP 36928d32920 < lifetaking 36935d32926 < ligand/S 36939c32930,32931 < light/CASTGDM --- > light's/C > light/CASTGD 36946c32938 < lighthearted/PY --- > lighthearted/YP 36949c32941 < lighting/M --- > lighting's 36959a32952 > likable/P 36961,36963c32954,32957 < like/MYTGPDRSBJ < likeability < likeable/U --- > like/EMGDST > likeability/M > likeable/P > likeableness/M 36970a32965 > liker 36979,36980c32974 < limber/UDSTG < limberer --- > limber/UDSG 36986d32979 < limekiln 36992c32985,32986 < limit/CSZGDRM --- > limit's > limit/CSZGDR 36996c32990 < limiter/M --- > limiter's 37015d33008 < linctus 37023,37024c33016 < linearized < linebacker/SM --- > linebacker/MS 37044c33036 < linguini/M --- > linguini/SM 37051c33043 < link/MDRBSZG --- > link/MDRSG 37060c33052,33053 < lint/CDSGM --- > lint's > lint/CDG 37061a33055 > lints 37069d33062 < lipase 37073c33066 < lippy/TR --- > lippy 37089d33081 < liquify/DSG 37091,37092d33082 < liquorice/MS < liquorish 37098,37099c33088 < lissom/P < lissome/P --- > lissome 37115,37116d33103 < literalism < literalistic 37127c33114 < lithograph/ZGMDR --- > lithograph/MDRZG 37133,37134d33119 < lithological < lithology 37150a33136 > littérateur/SM 37157,37158c33143 < liveable < livelihood/MS --- > livelihood/SM 37163c33148,33149 < liver/MS --- > liver's > liver/S 37172c33158 < liveware/S --- > liveware 37180,37181c33166,33168 < lo/H < load/AUGSDM --- > lo > load's > load/AUGSD 37184,37186c33171 < loading/MS < loadstar/MS < loadstone/SM --- > loading's 37189c33174 < loam/MS --- > loam/M 37191c33176 < loan/MDRSBZG --- > loan/MDRSZG 37199c33184 < loathsome/YP --- > loathsome/PY 37210,37211c33195 < lobotomist < lobotomize/GDS --- > lobotomize/DSG 37217c33201 < localization/MS --- > localization/M 37219,37222c33203,33204 < locatable/A < locate/EAGNVDS < location/ESMA < locational --- > locate/AESDNGX > location/EAM 37224,37225c33206 < loch/M < lochs --- > locavore/SM 37228d33208 < locked/A 37248c33228 < lodge/DRSLJMZG --- > lodge/DRSJMZG 37256c33236 < log/KSM --- > log/SM 37260d33239 < logarithmically 37271a33251 > login/S 37276a33257,33258 > logoff/S > logon/S 37277a33260 > logout/S 37285a33269 > lolcat/SM 37300c33284,33285 < long/KDSTGM --- > long's > long/KDSTG 37317d33301 < longsword 37321d33304 < longwise 37328a33312 > lookup 37331c33315 < looney/M --- > loonie/M 37347d33330 < lopper/S 37351c33334 < loquacious/YP --- > loquacious/PY 37363,37364c33346 < lorryload/S < lose/ZGRSBJ --- > lose/ZGRSJ 37367a33350 > lossless 37377d33359 < loudly/TR 37381c33363 < loudspeaker/SM --- > loudspeaker/MS 37387c33369,33370 < louse/CDSGM --- > louse's > louse/CDSG 37397d33379 < loveable 37409d33390 < lovestruck 37453c33434 < lucrative/PY --- > lucrative/YP 37470c33451 < lugubrious/PY --- > lugubrious/YP 37486,37487d33466 < lumen < luminance 37491c33470 < luminosity/SM --- > luminosity/M 37505,37506c33484 < luncheonette/MS < lunchpack --- > luncheonette/SM 37509d33486 < lune 37519d33495 < lurex 37540,37541d33515 < luv/S < luvvie/S 37564c33538 < lymphocyte/MS --- > lymphocyte/SM 37570d33543 < lynchpin/SM 37578c33551,33552 < lysine --- > lysosomal > lysosomes 37604c33578 < mack/S --- > mack/MS 37608a33583 > macramé/M 37616,37617d33590 < macromolecular < macromolecules 37619c33592 < macrophage/S --- > macrophages 37621d33593 < macroscopically 37632c33604 < mademoiselle/SM --- > mademoiselle/MS 37637a33610,33612 > madrasa/S > madrassah > madrassahs 37648c33623 < mage/SM --- > mage/MS 37651c33626 < maggoty/RT --- > maggoty 37661,37662c33636 < magma/SM < magmatic --- > magma/M 37664d33637 < magnanimosity 37678,37680d33650 < magnetodynamics < magnetohydrodynamical < magnetohydrodynamics 37683d33652 < magnetron 37687d33655 < magnified/U 37689c33657 < magnify/NZGDRSX --- > magnify/ZGXDRSN 37695a33664 > magus/M 37711,37712c33680,33681 < maidservant/MS < mail/BJMDRSZG --- > maidservant/SM > mail/JMDRSZG 37724d33692 < mainbrace 37730c33698 < mainspring/SM --- > mainspring/MS 37732,37733c33700,33701 < mainstream/SGMD < maintain/ZGDRBS --- > mainstream/SMDG > maintain/ZGBDRS 37735,37736d33702 < maintainable/U < maintained/U 37739d33704 < maiolica/M 37748a33714,33715 > majoritarian/SM > majoritarianism 37750c33717,33718 < make/UAGSM --- > make's/A > make/UAGS 37759d33726 < maladaptive 37773c33740 < malcontent/SM --- > malcontent/MS 37775,37776c33742,33743 < malediction/MS < malefaction/SM --- > malediction/SM > malefaction/M 37785c33752 < malformation/MS --- > malformation/SM 37787c33754 < malfunction/GSMD --- > malfunction/MDSG 37791c33758 < malign/DSZG --- > malign/DSG 37804d33770 < malnourishment 37815c33781 < malware/MS --- > malware/SM 37820,37821c33786 < mamma/SM < mammae --- > mamma/M 37832c33797,33798 < man/USYMF --- > man's/F > man/UFY 37840,37841c33806 < managerial/Y < managership --- > managerial 37844d33808 < manciple 37855d33818 < mandril/SM 37859c33822 < maneuver/BJMDGS --- > maneuver/MDGSBJ 37862c33825 < manga --- > manga/M 37865d33827 < manged/S 37886c33848 < manifestation/MS --- > manifestation/SM 37891d33852 < manilla/M 37894c33855 < manipulate/GNVXDS --- > manipulate/XGNVDS 37897c33858 < manipulator/SM --- > manipulator/MS 37902c33863 < manly/UTR --- > manly/URT 37908,37910c33869 < mannerist < mannerly/P < mannikin/SM --- > mannerly/U 37914d33872 < manoeuvrings 37919a33878,33879 > manqué > mans 37927c33887 < mantelpiece/MS --- > mantelpiece/SM 37934,37935c33894,33895 < mantle/EGDSM < mantlepiece/S --- > mantle's > mantle/EGDS 37937d33896 < mantrap/S 37939c33898 < manufacture/MZGDRS --- > manufacture/DRSMZG 37947c33906 < manuscript/SM --- > manuscript/MS 37949c33908,33910 < map/ASM --- > manège/M > map's > map/AS 37952,37953c33913 < mappable < mapped/UA --- > mapped/A 37960c33920 < maraschino/SM --- > maraschino/MS 37978d33937 < marginality 37980c33939 < marginalize/DSG --- > marginalize/GDS 37984d33942 < marihuana/M 37994c33952 < marionette/SM --- > marionette/MS 38017c33975 < marl/MS --- > marl/M 38019,38020c33977 < marlinespike/MS < marlinspike/SM --- > marlinespike/SM 38043d33999 < marshaller 38045,38046c34001,34002 < marshmallow/MS < marshy/PRT --- > marshmallow/SM > marshy/RT 38049a34006 > martensite 38069c34026,34028 < mask/UDSGM --- > mashup/MS > mask's > mask/UDSG 38091c34050,34051 < master/ADGSM --- > master's > master/ADGS 38095,38097c34055,34056 < mastermind/MDSG < masterpiece/SM < mastership --- > mastermind/SGMD > masterpiece/MS 38112c34071 < mat/SZGMDRJ --- > mat/SZGMDR 38114,38115c34073 < match/AGMS < matchable/U --- > match/AMS 38119c34077 < matcher --- > matching 38122c34080 < matchmaker/SM --- > matchmaker/MS 38124d34081 < matchplay 38133d34089 < materiality 38135,38137c34091 < materialize/CDS < materialized/A < materializing --- > materialize/DSG 38149a34104 > matinée/SM 38157c34112 < matriculate/GNDS --- > matriculate/DSGN 38159c34114 < matrimonial/Y --- > matrimonial 38166d34120 < mattins/M 38173c34127 < matzo/SM --- > matzo/SMH 38176a34131 > matériel/M 38185d34139 < mavin/SM 38196d34149 < maximality 38198c34151 < maximize/GDRS --- > maximize/GDS 38216d34168 < mazourka/SM 38217a34170 > mañana/M 38219c34172 < me/DS --- > me/DSH 38222d34174 < meadowland 38226d34177 < meagreness 38236c34187 < meanie/MS --- > meanie/M 38238c34189 < meaningful/YP --- > meaningful/PY 38240c34191 < meaningless/PY --- > meaningless/YP 38250c34201 < measurable/U --- > measurable 38252c34203,34204 < measure/ADSGM --- > measure's > measure/ADSG 38255c34207 < measurement/SM --- > measurement/MS 38257d34208 < meataxe 38258a34210 > meathead/MS 38270d34221 < mechanist 38274,38275c34225 < mechanize/DSBG < mechanized/U --- > mechanize/DSG 38300c34250 < medievalist/SM --- > medievalist/MS 38308a34259,34260 > medusa > medusae 38313c34265 < meet/MRJSG --- > meet/MJSG 38321a34274 > megachurch/MS 38323c34276,34277 < megadeath/SM --- > megadeath/M > megadeaths 38325c34279 < megajoule/SM --- > megajoule/M 38332d34285 < megaparsec 38334c34287 < megapixel/MS --- > megapixel/SM 38337a34291 > meh 38343c34297 < melancholy/SM --- > melancholy/M 38347d34300 < melatonin 38352c34305 < mellifluous/YP --- > mellifluous/PY 38366c34319,34320 < melt/ADSGM --- > melt's > melt/ADSG 38368,38369c34322,34323 < melter < member/EASM --- > member's > member/EAS 38386d34339 < memorized/U 38394d34346 < menarche 38431c34383 < mention/BGSMD --- > mention/GSMD 38441c34393 < merchandise/DRSMZG --- > merchandise/MZGDRS 38444,38446c34396 < merchandize/DSG < merchant/MSB < merchantability --- > merchant/MBS 38450c34400 < merciless/YP --- > merciless/PY 38456,38457c34406,34407 < mere/MYTRS < meretricious/PY --- > mere/MYTS > meretricious/YP 38463d34412 < meridional 38471,38472c34420 < meritocrats < meritorious/YP --- > meritorious/PY 38477d34424 < meromorphic 38498c34445 < mesosphere/MS --- > mesosphere/SM 38500,38501d34446 < mesozoic < mesquit/MS 38529,38530d34473 < metalinguistic < metalized 38541c34484 < metamorphose/DSG --- > metamorphose/GDS 38548,38549d34490 < metastability < metastable 38552c34493 < metastasize/GDS --- > metastasize/DSG 38554c34495 < metatarsal/SM --- > metatarsal/MS 38559d34499 < metathesizes 38573,38574d34512 < meth < methadon/M 38580d34517 < methionine 38585a34523 > methotrexate 38590,38591d34527 < methylated < methylene 38595d34530 < metonymy 38603d34537 < metronomic 38622d34555 < micelles 38626d34558 < microanalyses 38630c34562 < microbiologist/SM --- > microbiologist/MS 38636c34568 < microcomputer/SM --- > microcomputer/MS 38639d34570 < microdensitometer 38644d34574 < microfarad 38648,38655c34578,34582 < microfloppies/S < micrograms < micrograph < microgravity < microgroove/MS < microhydrodynamics < microlight/SM < micromanage/GLDS --- > microfloppies > microgroove/SM > microlight/MS > microloan/MS > micromanage/GDSL 38657c34584 < micrometeorite/MS --- > micrometeorite/SM 38662,38663c34589 < microprocessor/SM < microprogram --- > microprocessor/MS 38667d34592 < microscopist 38669c34594 < microsecond/SM --- > microsecond/MS 38682c34607 < middleweight/SM --- > middleweight/MS 38691c34616 < midnight/SM --- > midnight/M 38699c34624 < midsize/D --- > midsize 38707d34631 < midwicket 38710a34635 > midwived 38711a34637 > midwiving 38716c34642 < might/SM --- > might/M 38726c34652 < migrator/SM --- > migrator/MS 38735d34660 < mildewy 38739d34663 < mileometer/S 38742a34667 > milf/MS 38769d34693 < millenarian 38771,38773c34695,34696 < millennial < millennium/SM < millepede/MS --- > millennial/MS > millennium/MS 38785c34708 < millionaire/MS --- > millionaire/SM 38790c34713 < millisecond/MS --- > millisecond/SM 38795c34718 < millwright/MS --- > millwright/SM 38800c34723 < mimeograph/MDG --- > mimeograph/GMD 38815c34738,34739 < mind/ADRSZGM --- > mind's > mind/ADRSZG 38827d34750 < mineralization 38829c34752 < mineralogist/SM --- > mineralogist/MS 38831d34753 < mineshaft 38833,38834c34755 < minesweeper/MS < mineworkers --- > minesweeper/SM 38839c34760 < miniaturist/SM --- > miniaturist/MS 38841c34762 < miniaturize/DSG --- > miniaturize/GDS 38847,38848c34768,34769 < minicomputer/MS < minifloppies/S --- > minicomputer/SM > minifloppies 38853,38854d34773 < minimalistic < minimality 38856c34775 < minimize/DRSG --- > minimize/DSG 38860d34778 < miniscule/MS 38864,38865c34782,34783 < ministerial/Y < ministrant/SM --- > ministerial > ministrant/MS 38870,38871c34788 < minke < minnesinger/SM --- > minnesinger/MS 38875d34791 < minotaur/S 38896c34812 < miraculous/YP --- > miraculous/Y 38906c34822 < misadventure/SM --- > misadventure/MS 38910c34826,34827 < misanalysed --- > misandrist/MS > misandry 38914c34831 < misanthropist/SM --- > misanthropist/MS 38918c34835 < misapprehend/SDG --- > misapprehend/GSD 38920c34837 < misappropriate/DSXGN --- > misappropriate/XDSGN 38926c34843 < miscalculate/GNXDS --- > miscalculate/DSXGN 38929c34846 < miscarriage/SM --- > miscarriage/MS 38933d34849 < miscellanea 38942d34857 < misclassified 38944,38945c34859 < miscomprehended < misconceive/DSG --- > misconceive/GDS 38948,38951c34862,34863 < misconfiguration < misconstruction/SM < misconstrue/DSG < miscopying --- > misconstruction/MS > misconstrue/GDS 38962,38963c34874,34875 < misdirect/GSD < misdirection/SM --- > misdirect/SDG > misdirection/M 38975d34886 < misfield 38983c34894 < misgovern/SDLG --- > misgovern/SDGL 39000,39002c34911,34913 < misjudge/DSG < misjudgement/MS < misjudgment/MS --- > misjudge/LDSG > misjudgement/SM > misjudgment/SM 39014c34925 < misogamist/SM --- > misogamist/MS 39020c34931 < misplace/GDSL --- > misplace/GLDS 39023d34933 < mispositioned 39026c34936 < mispronounce/GDS --- > mispronounce/DSG 39032,39035c34942,34944 < misremember/DG < misreport/MDSG < misrepresent/SDG < misrepresentation/SM --- > misreport/MDGS > misrepresent/GDS > misrepresentation/MS 39037c34946,34947 < miss/EDSGVM --- > miss's > miss/EDSGV 39038a34949 > missed/U 39043d34953 < missilry/M 39050c34960 < misspell/GDSJ --- > misspell/GDJS 39056,39057c34966,34967 < misstate/LGDS < misstatement/MS --- > misstate/GDSL > misstatement/SM 39060c34970,34971 < mist/CDRSZGM --- > mist's > mist/CDRSZG 39064c34975 < mister/M --- > mister's 39072,39074d34982 < mistranslates < mistranslating < mistranslation/S 39082,39083c34990,34991 < mistype/JGDS < misunderstand/GSJ --- > mistype/GS > misunderstand/SGJ 39086c34994 < misuse/DRSMG --- > misuse/DSMG 39089c34997 < mitigate/DSGN --- > mitigate/XDSGN 39091,39092c34999 < mitigation/MS < mitigatory --- > mitigation/M 39094a35002 > mitochondrion 39115c35023,35024 < mob/CSM --- > mob's > mob/CS 39119,39120c35028 < mobility/SM < mobilizable --- > mobility/M 39132,39133c35040 < mockingbird/MS < mockup/MS --- > mockingbird/SM 39150c35057 < modern/MRYPTS --- > modern/MYPS 39155c35062 < modernization/SM --- > modernization/M 39159c35066 < modest/RYT --- > modest/Y 39162c35069 < modifiable/U --- > modifiable 39166c35073 < modify/NDRSZGX --- > modify/DRSXZGN 39170,39172d35076 < modularity < modularization < modularize/DG 39178d35081 < moduli 39181,39182c35084 < moggie < moggy/S --- > moggy 39197d35098 < molarity/S 39212c35113 < molestation/SM --- > molestation/M 39217c35118 < mollify/NDSG --- > mollify/DSNG 39221c35122 < molluskan/SM --- > molluskan/S 39223c35124 < mollycoddle/MGDS --- > mollycoddle/DSMG 39233c35134 < momentous/YP --- > momentous/PY 39236,39237d35136 < momma/SM < mommie/M 39239d35137 < monadic 39244c35142 < monarchist/SM --- > monarchist/MS 39255c35153 < monetarist/SM --- > monetarist/MS 39261d35158 < moneychangers 39264,39265c35161 < moneylender/MS < moneyless --- > moneylender/SM 39274,39275d35169 < monicker/MS < monied 39282d35175 < monitored/U 39286c35179 < monkeyshine/MS --- > monkeyshine/SM 39291c35184 < monochrome/SM --- > monochrome/MS 39294c35187 < monocotyledon/MS --- > monocotyledon/SM 39297d35189 < monoculture 39309d35200 < monolayers 39314d35204 < monolog/SM 39317c35207 < monologuist/MS --- > monologuist/SM 39322,39324d35211 < monomeric < monomial/S < monomolecular 39327d35213 < monophthongs 39329d35214 < monopole/S 39337d35221 < monostable 39346,39347c35230 < monotonicity < monotonous/YP --- > monotonous/PY 39381d35263 < moonrise 39394c35276 < moot/DRSG --- > moot/DSG 39399a35282,35283 > mopier > mopiest 39404d35287 < mopy/RT 39430,39431c35313 < moribund/Y < moribundity --- > moribund 39446,39449c35328,35329 < morphism/S < morphogenesis < morphological/Y < morphology/SM --- > morphological > morphology/M 39456,39458c35336,35338 < mortarboard/MS < mortgage/AGDSM < mortgageable --- > mortarboard/SM > mortgage's > mortgage/AGDS 39460d35339 < mortgager/MS 39462d35340 < mortice/DSMG 39479c35357,35358 < mote/KCXSVNM --- > mote's > mote/KCXSVN 39486c35365 < motherfucker/SM! --- > motherfucker/MS! 39503c35382 < motivation/MS --- > motivation/SM 39526c35405 < motorsport/MS --- > motorsport/SM 39532,39533d35410 < moulder/DGS < moult/SGMD 39535c35412 < mount/AEDMGS --- > mount/EASGMD 39538c35415 < mountaineer/GMDS --- > mountaineer/SMDG 39542c35419 < mountaintop/MS --- > mountaintop/SM 39544c35421 < mounted/UC --- > mounted/U 39546,39547c35423 < mounties < mounting/MS --- > mounting/SM 39548a35425 > mourned/U 39551,39552d35427 < mournfuller < mournfullest 39564d35438 < moustachioed 39569d35442 < mouthorgan 39584,39585c35457 < moving/U < movingly --- > moving/Y 39597c35469 < much/MP --- > much/M 39604d35475 < mucosa 39615d35485 < mudflow/S 39617d35486 < mudlarks 39637a35507 > muggle/MS 39650c35520 < muleskinner/SM --- > muleskinner/MS 39661a35532 > multi 39663,39664c35534 < multichannel < multicolor/D --- > multicolored 39674,39675d35543 < multifunction < multifunctional 39677c35545 < multilayer --- > multilayered 39682,39685c35550,35551 < multimeter < multimillion < multimillionaire/MS < multinational/MS --- > multimillionaire/SM > multinational/SM 39687c35553 < multiphase --- > multiplayer/M 39691,39692c35557 < multiplexor/MS < multiplicand/SM --- > multiplicand/MS 39697c35562 < multiply/NXZGDRS --- > multiply/NZGDRSX 39700d35564 < multiprogramming 39705c35569 < multitask/SG --- > multitask/GS 39709d35572 < multivalued 39711c35574,35576 < multivitamin/SM --- > multiverse/SM > multivitamin/MS > multiyear 39713c35578 < mumble/JMZGDRS --- > mumble/MZGDRS 39719c35584 < mummify/NGDS --- > mummify/GNDS 39723c35588 < munch/ZGDRS --- > munch/GDS 39733d35597 < muons 39780c35644 < muskellunge/SM --- > muskellunge/MS 39815d35678 < mutilated/U 39833d35695 < muzzled/U 39836d35697 < mySimon 39841,39842c35702 < mynah/M < mynahs --- > mynah/MS 39843a35704 > myocardium 39853c35714 < mysterious/YP --- > mysterious/PY 39866,39867c35727,35728 < mythologist/MS < mythologize/GDS --- > mythologist/SM > mythologize/DSG 39870a35732,35733 > métier/MS > mêlée/MS 39888c35751 < nagware/S --- > nagware 39897c35760,35761 < naked/TPRY --- > naiveté/M > naked/PY 39899c35763,35764 < name/AGDSM --- > name's > name/AGDS 39908,39910c35773 < namespace/MS < naming/S < nan/S --- > namespace/SM 39914d35776 < nanometer/S 39916c35778 < nanotechnology/S --- > nanotechnology/SM 39941c35803 < nark/MDSG --- > nark 39946d35807 < narratology 39967c35828 < nationalist/MS --- > nationalist/SM 39971,39973c35832,35833 < nationalization/SM < nationalize/CGDS < nationalized/A --- > nationalization/MS > nationalize/CDSG 39976c35836 < native/MSY --- > native/MYS 39983c35843,35844 < natural/UPYM --- > natural's > natural/UPY 39985c35846 < naturalist/MS --- > naturalist/SM 39988c35849 < naturalize/GDS --- > naturalize/DSG 39991c35852,35853 < nature/CSM --- > nature's > nature/CS 40001c35863 < nauseous/YP --- > nauseous/PY 40009c35871 < navigable/U --- > navigable 40019c35881 < neanderthal/SM --- > neanderthal/MS 40023d35884 < nearly/TR 40024a35886 > nearshore 40026c35888 < nearsighted/PY --- > nearsighted/YP 40035,40036c35897 < nebulosity < nebulous/YP --- > nebulous/PY 40040c35901 < necessitate/GDS --- > necessitate/DSG 40051c35912 < necromancer/MS --- > necromancer/SM 40053d35913 < necromantic 40057d35916 < necropsy 40069d35927 < needlecraft 40071c35929 < needless/PY --- > needless/YP 40078c35936 < nefarious/PY --- > nefarious/YP 40088c35946 < neglectful/PY --- > neglectful/YP 40090d35947 < neglige/SM 40094d35950 < negligibility 40120a35977 > neocon/S 40128c35985 < neophilia/S --- > neophilia 40144,40145c36001,36003 < nerve/UDSGM < nerveless/PY --- > nerve's > nerve/UDSG > nerveless/YP 40151c36009 < nest/BMDSG --- > nest/MDSG 40155a36014 > netbook/MS 40160c36019,36020 < nett/DRZG --- > netted > netter/S 40173d36032 < neurobiology 40175c36034 < neurologist/MS --- > neurologist/SM 40179,40180c36038,36040 < neurophysiology/M < neuroscience/MS --- > neurophysiology's > neuroscience's > neurosciences 40212c36072 < newish --- > newfound 40226c36086 < newsletter/SM --- > newsletter/MS 40233a36094 > newspeak 40244c36105 < newsworthy/PRT --- > newsworthy/P 40260c36121 < nickelodeon/MS --- > nickelodeon/SM 40263d36123 < nicknack/SM 40269d36128 < niftily 40270a36130 > nigga/S 40272a36133 > niggaz 40287,40288c36148,36149 < nightie/SM < nightingale/MS --- > nightie/M > nightingale/SM 40317d36177 < ninepence 40348,40349d36207 < nitric < nitride/S 40358d36215 < nitrous 40391c36248 < noisemaker/SM --- > noisemaker/MS 40400,40401c36257,36258 < nominate/ACGNVDS < nomination/CSMA --- > nominate/CASDXVNG > nomination/ACM 40418c36275 < nonagenarian/SM --- > nonagenarian/MS 40424c36281 < nonappearance/SM --- > nonappearance/MS 40442c36299 < nonclerical/SM --- > nonclerical/MS 40447c36304 < noncombatant/SM --- > noncombatant/MS 40449c36306 < noncommercial/SM --- > noncommercial/MS 40458c36315 < nonconductor/SM --- > nonconductor/MS 40461c36318 < nonconformist/SM --- > nonconformist/MS 40475c36332 < noncriminal/MS --- > noncriminal/SM 40487c36344 < nondescript/Y --- > nondescript 40495c36352 < nondrinker/SM --- > nondrinker/MS 40506c36363 < nonequivalent/SM --- > nonequivalent/MS 40516c36373 < nonexplosive/SM --- > nonexplosive/MS 40545c36402 < nonintellectual/SM --- > nonintellectual/MS 40551a36409 > nonissue 40581,40582c36439 < nonparallel/SM < nonparametric --- > nonparallel/MS 40586c36443 < nonpartisan/MS --- > nonpartisan/SM 40588c36445 < nonpayment/MS --- > nonpayment/SM 40605,40606c36462,36463 < nonprofessional/MS < nonprofit/SBM --- > nonprofessional/SM > nonprofit/SMB 40614c36471 < nonreciprocal/MS --- > nonreciprocal/SM 40625c36482 < nonresident/SM --- > nonresident/MS 40631c36488 < nonreturnable/SM --- > nonreturnable/MS 40642c36499 < nonsense/MS --- > nonsense/M 40653c36510 < nonspecialist/SM --- > nonspecialist/MS 40656c36513 < nonspiritual/MS --- > nonspiritual/SM 40659c36516 < nonstarter/SM --- > nonstarter/MS 40666c36523 < nonsupport/MG --- > nonsupport/GM 40705c36562 < noon/MS --- > noon/M 40713,40716c36570,36571 < noradrenalin < noradrenaline < norm/MDS < normal/MYS --- > norm/MS > normal/MY 40719,40720c36574,36575 < normalization/MS < normalize/DRSBZG --- > normalization/M > normalize/DSG 40733d36587 < northmen 40765d36618 < notational/Y 40767c36620,36621 < note/FCSDGM --- > note's > note/FCSDG 40784c36638 < notify/NXDRSZG --- > notify/NDRSXZG 40791a36646 > nought/MS 40793d36647 < nounal 40802,40803c36656 < novelistic < novelization/SM --- > novelization/MS 40817c36670 < noxious/YP --- > noxious 40826d36678 < nuclease 40828d36679 < nucleated/A 40835c36686,36687 < nucleotide/S --- > nucleoside > nucleotide 40851c36703,36704 < number/ASDGM --- > number's > number/ASDG 40853d36705 < numbering/S 40855,40857d36706 < numberplate < numbers/S < numbing/Y 40868,40869c36717 < numerological < numerologist/SM --- > numerologist/MS 40875c36723 < numismatist/MS --- > numismatist/SM 40882c36730 < nurseling/MS --- > nurselings 40893d36740 < nutation 40906c36753 < nutritionist/MS --- > nutritionist/SM 40918,40919c36765 < nybble/DSG < nyetwork/S --- > nybble/S 40925d36770 < nympholepsy 40927c36772 < nymphomaniac/MS --- > nymphomaniac/SM 40928a36774 > née 40964c36810 < obfuscate/GNDSX --- > obfuscate/GNXDS 40966d36811 < obfuscatory 40972,40974c36817,36819 < objectify/GDSN < objection/BSM < objectionable/P --- > objectify/NGDS > objection/SMB > objectionable/U 40976c36821 < objective/PSMY --- > objective/SMYP 40979d36823 < objectless 40990,40992c36834,36835 < obliging/U < obligingly < oblique/DSMYP --- > obliging/Y > oblique/SMYP 40995c36838 < obliterate/GNDS --- > obliterate/DSGN 40998c36841 < oblivious/PY --- > oblivious/YP 41009,41011c36852,36853 < obscurantist/MS < obscuration < obscure/DRSLPYTG --- > obscurantist/SM > obscure/DRSYTG 41017,41018d36858 < observability < observable/S 41020c36860 < observance/SM --- > observance/MS 41022,41023c36862,36863 < observation/MS < observational/Y --- > observation/SM > observational 41031c36871 < obsessive/SMYP --- > obsessive/PSMY 41041c36881 < obstetrician/MS --- > obstetrician/SM 41045c36885 < obstreperous/PY --- > obstreperous/YP 41049c36889 < obstruction/MS --- > obstruction/SM 41051c36891 < obstructionist/SM --- > obstructionist/MS 41059c36899 < obtrusive/UYP --- > obtrusive/UPY 41072d36911 < occipital 41076c36915 < occult/MS --- > occult/M 41079c36918 < occupancy/SM --- > occupancy/M 41092c36931 < oceanfront/MS --- > oceanfront/SM 41100c36939 < och/ZR --- > och/R 41105,41106d36943 < octahedral < octahedron 41109d36945 < octant 41113,41114c36949 < octette/MS < octogenarian/MS --- > octogenarian/SM 41144d36978 < offcuts 41148c36982,36983 < offensive/IYPM --- > offensive's > offensive/IPY 41155c36990 < offhanded/YP --- > offhanded/PY 41158c36993 < officeholder/MS --- > officeholder/SM 41160,41161c36995 < officership/S < official/MYSP --- > official/MYS 41168c37002 < officious/YP --- > officious/PY 41178c37012 < offshore --- > offshore/G 41184c37018 < oft/TNR --- > oft 41193d37026 < ogrish 41196d37028 < ohmic 41210d37041 < oilseed 41217c37048 < okay/MSG --- > okay/MDSG 41220d37050 < olde 41228d37057 < olefin 41238c37067 < oligonucleotide --- > oligonucleotide/S 41241c37070 < olivine --- > olé/M 41246a37076 > omelette/MS 41256d37085 < omnidirectional 41269c37098 < oncologist/MS --- > oncologist/SM 41284d37112 < only/T 41298c37126 < ontological/Y --- > ontological 41301c37129 < onward/S --- > onward 41306d37133 < oolitic 41317a37145 > opcode/S 41340c37168 < ophthalmic/S --- > ophthalmic 41347d37174 < opioid 41354c37181 < opportunist/MS --- > opportunist/SM 41358c37185 < oppose/DSGRB --- > oppose/DRSBG 41362d37188 < oppositional 41364,41365c37190,37191 < oppression/SM < oppressive/PY --- > oppression/M > oppressive/YP 41377d37202 < optimality 41383,41384c37208 < optimize/DRSZG < optimized/U --- > optimize/DRSG 41388,41389d37211 < optionality < optoelectronic 41403d37224 < orangutang/MS 41414a37236 > orc/S 41418c37240 < orchestrate/XGNDS --- > orchestrate/DSXGN 41420d37241 < orchestrator 41426d37246 < ordered/U 41428d37247 < orderless 41433d37251 < ordinands 41436c37254 < ordinary/RSMPT --- > ordinary/SMP 41445d37262 < organdie/M 41453d37269 < organizable 41465,41466c37281,37282 < orient/AEDGSM < orientable --- > orient's > orient/AEDGS 41470,41471d37285 < orientated/A < orientates/A 41483c37297 < originator/MS --- > originator/SM 41495c37309 < ornithologist/SM --- > ornithologist/MS 41508c37322 < orthogonal/Y --- > orthogonal 41511c37325 < orthographical/Y --- > orthographically 41513d37326 < orthonormal 41517d37329 < orthorhombic 41519c37331 < oscillate/XGNDS --- > oscillate/GNDSX 41521c37333 < oscillator/MS --- > oscillator/SM 41532c37344 < ossify/GNDS --- > ossify/NGDS 41566c37378 < outbalance/GDS --- > outbalance/DSG 41581c37393 < outcropping/MS --- > outcropping/SM 41585c37397 < outdistance/DSG --- > outdistance/GDS 41626c37438 < outlandish/YP --- > outlandish/PY 41630d37441 < outlawry 41633d37443 < outlier/S 41638c37448 < outmaneuver/SGD --- > outmaneuver/GDS 41643,41644c37453,37454 < outpatient/SM < outperform/DSG --- > outpatient/MS > outperform/GSD 41666a37477 > outré 41675c37486 < outsize/MDS --- > outsize/MS 41683c37494 < outspoken/PY --- > outspoken/YP 41689c37500 < outstretch/GDS --- > outstretch/DSG 41727d37537 < overallocation 41736c37546 < overbalance/DSMG --- > overbalance/MGDS 41751c37561 < overburden/SDG --- > overburden/GSD 41755c37565 < overcapitalize/GDS --- > overcapitalize/DSG 41759,41761c37569,37571 < overcharge/MGDS < overclock/SDG < overcloud/SDG --- > overcharge/DSMG > overclock/GD > overcloud/SGD 41764,41765c37574 < overcommitment/S < overcompensate/GNDS --- > overcompensate/DSGN 41767,41768d37575 < overcomplexity < overcomplicated 41774c37581 < overcrowd/GSD --- > overcrowd/SDG 41778,41779c37585 < overdetermined < overdevelop/SGD --- > overdevelop/SDG 41799c37605 < overemphasize/DSG --- > overemphasize/GDS 41801c37607 < overestimate/DSMGN --- > overestimate/MGNDS 41803,41805c37609,37611 < overexcite/GDS < overexercise/DSG < overexert/GSD --- > overexcite/DSG > overexercise/GDS > overexert/SDG 41809c37615 < overextend/GDS --- > overextend/DGS 41813d37618 < overfishing 41838d37642 < overincredulous 41842d37645 < overinflated 41863,41864c37666 < overmaster/SGD < overmatching --- > overmaster/SDG 41874c37676 < overpay/LGS --- > overpay/GS 41878,41879c37680 < overpopulous < overpower/GSD --- > overpower/SDG 41883d37683 < overpressure 41885,41886c37685,37686 < overprint/GSMD < overproduce/DSG --- > overprint/SMDG > overproduce/GDS 41892c37692 < overreach/DSG --- > overreach/GDS 41896d37695 < overrepresented 41904d37702 < oversampled 41915d37712 < oversensitivity 41917c37714,37715 < overshadow/GDS --- > overshadow/DSG > overshare/DSG 41919c37717 < overshoot/SG --- > overshoot/GS 41924,41926c37722,37724 < oversimplify/NXDSG < oversize < oversleep/SG --- > oversimplify/DSNGX > oversize/D > oversleep/GS 41931c37729 < overspend/GS --- > overspend/SG 41933d37730 < overspill/GSM 41936,41937c37733,37734 < overstate/LDSG < overstatement/SM --- > overstate/DSLG > overstatement/MS 41944,41945c37741 < overstress/D < overstretch/DSG --- > overstretch/GDS 41951c37747 < oversupply/DSG --- > oversupply/GDS 41953,41954c37749,37750 < overt/YP < overtake/ZGRS --- > overt/Y > overtake/GS 41956a37753,37754 > overthink/SG > overthought 41958c37756 < overthrow/GSM --- > overthrow/SMG 41960d37757 < overtightened 41973c37770 < overwhelm/GSD --- > overwhelm/SGD 41996d37792 < owned/U 41998,42001c37794,37795 < ownership/SM < ox/MNS < oxalate < oxalic --- > ownership/M > ox/MN 42030d37823 < pacemen 42032c37825 < pacesetter/MS --- > pacesetter/SM 42035c37828 < pachysandra/SM --- > pachysandra/MS 42044,42046c37837,37840 < pack/UADSGM < packable < package/AGDSM --- > pack's > pack/AUGSD > package's > package/AGDS 42051,42053c37845,37846 < packhorse < packing/M < packinghouse/MS --- > packing's > packinghouse/SM 42068d37860 < paeony 42075d37866 < pageful 42089c37880 < painkiller/SM --- > painkiller/MS 42112,42114d37902 < palaeolithic < palaeontologist/S < palaeontology 42124a37913,37914 > palazzi > palazzo 42128,42129c37918 < paleographer/SM < paleographic --- > paleographer/MS 42132,42133c37921 < paleontological < paleontologist/MS --- > paleontologist/SM 42138c37926 < palimpsest/SM --- > palimpsest/MS 42150c37938 < palliative/MS --- > palliative/SM 42166c37954 < palpitate/GNDSX --- > palpitate/XGNDS 42171d37958 < paludal 42175,42176c37962,37963 < pamphleteer/SM < pan/SMD --- > pamphleteer/MS > pan/SM 42184a37972 > pancreatitis 42190c37978 < pane/MS --- > pane/KM 42194a37983 > panes 42196d37984 < pangolin 42202,42204c37990 < panicky/TR < panier/MS < panjandrum --- > panicky 42222,42223d38007 < pantiled < pantiles 42225,42226d38008 < pantograph < pantographs 42229c38011 < pantomimist/MS --- > pantomimist/SM 42236d38017 < panzer 42253c38034 < paperhanger/MS --- > paperhanger/SM 42273d38053 < paraboloid/S 42276c38056 < parachutist/SM --- > parachutist/MS 42292d38071 < paralinguistic 42296,42299c38075,38077 < parallelepiped < parallelism/SM < parallelization/SM < parallelize/SGD --- > parallelism/MS > parallelization/MS > parallelize/GDS 42304d38081 < paralytically 42307,42308d38083 < paramagnetic < paramagnetism 42312c38087 < paramedical/SM --- > paramedical/MS 42315,42317d38089 < parametrically < parametrization < parametrize/DS 42328c38100 < paraphrase/MGDS --- > paraphrase/DSMG 42330c38102 < paraplegic/MS --- > paraplegic/SM 42332c38104 < parapsychologist/SM --- > parapsychologist/MS 42334a38107 > parasailing 42340,42341d38112 < parasitologist < parasitology 42364d38134 < parenteral 42367c38137 < parenthesize/GDS --- > parenthesize/DSG 42379c38149 < parimutuel/SM --- > parimutuel/MS 42382c38152 < parishioner/SM --- > parishioner/MS 42395c38165 < parliamentarian/MS --- > parliamentarian/SM 42398d38167 < parlormaid 42404,42405d38172 < parochiality < parodied/U 42420c38187 < parse/DRSJZG --- > parse/DRSG 42428c38195,38196 < part/CDSGM --- > part's > part/CDSG 42436,42437c38204,38205 < participant/MS < participate/GNVDS --- > participant/SM > participate/DSGN 42439c38207 < participator/SM --- > participator/MS 42442c38210 < participle/SM --- > participle/MS 42446d38213 < particularism 42450c38217 < particulate/MS --- > particulate/SM 42454c38221,38222 < partition/ADGMS --- > partition/GMDS > partitions/A 42455a38224 > partizan/SM 42471c38240 < passageway/SM --- > passageway/MS 42483,42484c38252 < passionateness < passionflower/MS --- > passionflower/SM 42486d38253 < passivated 42489,42490d38255 < passivisation < passivise/DSG 42495,42496c38260 < passmark < passover --- > passphrase/S 42498a38263 > passé 42503d38267 < pasted/U 42507c38271 < pasteurize/DRSZG --- > pasteurize/ZGDRS 42515d38278 < pastis 42518d38280 < pastoralism 42526c38288 < pat/SZMR --- > pat/SM 42528d38289 < patchable 42537c38298 < patent/GMDYBS --- > patent/GMDYS 42544c38305 < paternoster/SM --- > paternoster/MS 42551d38311 < pathogenesis 42554,42555c38314,38315 < pathologist/MS < pathology/SM --- > pathologist/SM > pathology/M 42571c38331 < patriarchate/SM --- > patriarchate/MS 42592d38351 < patronization 42601d38359 < patten/S 42604d38361 < patternless 42623c38380 < pawnbroker/SM --- > pawnbroker/MS 42627c38384,38385 < pay/ASGBLM --- > pay's > pay/ASGBL 42643c38401,38402 < payware/S --- > paywall/SM > payware 42651,42652d38409 < peacefuller < peacefullest 42654c38411 < peacekeeper/MS --- > peacekeeper/SM 42656c38413 < peacemaker/SM --- > peacemaker/MS 42665c38422 < peaky/P --- > peaky 42671d38427 < peartrees 42674c38430 < peashooter/MS --- > peashooter/SM 42678c38434 < pebbly/TR --- > pebbly 42689c38445 < peculate/GNXDS --- > peculate/GNDS 42691c38447 < peculator/M --- > peculator/SM 42695d38450 < pedagog/SM 42713c38468 < pedestrianize/DSG --- > pedestrianize/GDS 42722,42723d38476 < pedlar/MS < pedology 42767d38519 < pellmell 42790c38542 < penetrate/XDSGNV --- > penetrate/DSGNVX 42807d38558 < penlite/MS 42817c38568 < pennyweight/SM --- > pennyweight/MS 42830,42832c38581,38582 < pentameter/MS < pentasyllabic < pentathlete/SM --- > pentameter/SM > pentathlete/MS 42834,42835d38583 < pentatonic < pentecostal 42838c38586 < penultimate/SMY --- > penultimate/SM 42841c38589 < penurious/YP --- > penurious/PY 42849d38596 < peperoni 42853c38600 < peppermint/MS --- > peppermint/SM 42863c38610 < perambulate/DSGNX --- > perambulate/XGNDS 42865c38612 < perambulator/SM --- > perambulator/MS 42872d38618 < perceptibility 42875c38621 < perception/MS --- > perception/SM 42877c38623 < perceptive/YP --- > perceptive/PY 42879d38624 < percepts 42883d38627 < perchlorate 42889d38632 < percuss/GVDS 42891,42892c38634,38635 < percussionist/SM < percussive/Y --- > percussionist/MS > percussive 42895c38638 < peregrinate/GNXDS --- > peregrinate/DSXGN 42899c38642 < peremptory/P --- > peremptory 42908c38651 < perfectionist/MS --- > perfectionist/SM 42912c38655 < perforate/GNDSX --- > perforate/GNXDS 42915c38658 < perform/BSDRZG --- > perform/SDRZG 42916a38660 > performative 42924d38667 < perfused 42928d38670 < periastron 42929a38672,38673 > pericardial > pericarditis 42932d38675 < periglacial 42948,42949c38691,38692 < peripatetic/SM < peripheral/SMY --- > peripatetic/MS > peripheral/MYS 42975c38718 < permalink/MS --- > permalink/SM 42979d38721 < permanganate 42984d38725 < permissibility 42987c38728 < permission/SM --- > permission/MS 42994,42995c38735 < permittivity < permutation/MS --- > permutation/SM 42997c38737 < pernicious/PY --- > pernicious/YP 42999d38738 < pernickety 43001d38739 < peroxidase 43003c38741 < perpendicular/MYS --- > perpendicular/SMY 43005c38743 < perpetrate/GNDS --- > perpetrate/DSGN 43007c38745 < perpetrator/SM --- > perpetrator/MS 43009c38747 < perpetuate/GNDS --- > perpetuate/DSGN 43016,43017c38754 < perry < persecute/GNDSX --- > persecute/GNXDS 43022d38758 < persevering/Y 43030c38766 < persona/M --- > persona/SM 43036,43038c38772 < personalization/C < personalize/CGDS < personalized/U --- > personalize/CDSG 43041c38775 < personify/XDSGN --- > personify/GDSNX 43043c38777 < perspective/SM --- > perspective/MS 43048c38782 < perspicuous/Y --- > perspicuous 43055c38789 < persuasive/YP --- > persuasive/PY 43065c38799 < perturbation/MS --- > perturbation/SM 43086c38820 < pessimal/SDYG --- > pessimal 43106d38839 < pethidine 43110c38843 < petitioner/MS --- > petitioner/M 43113c38846 < petrify/NDSG --- > petrify/DSG 43115,43117c38848 < petrodollar/SM < petrographic < petrographical --- > petrodollar/MS 43121d38851 < petrological 43134c38864 < pettish/YP --- > pettish/Y 43160d38889 < phantasy/GDSM 43167c38896 < pharmaceutical/MS --- > pharmaceutical/SM 43169c38898 < pharmacist/SM --- > pharmacist/MS 43171c38900 < pharmacologist/MS --- > pharmacologist/SM 43174c38903 < pharmacopoeia/SM --- > pharmacopoeia/MS 43186,43188c38915 < phenol/MS < phenolic < phenolphthalein --- > phenol/M 43192c38919 < phenomenological/Y --- > phenomenological 43195,43196c38922 < phenotype/S < phenylalanine --- > phenotype 43201c38927 < philander/DRSZG --- > philander/ZGDRS 43206c38932 < philanthropist/SM --- > philanthropist/MS 43209c38935 < philatelist/SM --- > philatelist/MS 43213c38939 < philistine/SM --- > philistine/MS 43219c38945 < philosopher/SM --- > philosopher/MS 43222c38948 < philosophize/ZGDRS --- > philosophize/DRSZG 43226d38951 < philtre/MS 43230,43232c38955,38956 < phlebotomist/SM < phlebotomize/SGD < phlebotomy --- > phlebotomist/MS > phlebotomize/GDS 43237d38960 < phlogiston 43252d38974 < phoneticist 43254c38976,38977 < phoney/GMDS --- > phoneyed > phoneying 43263c38986 < phonologist/SM --- > phonologist/MS 43265d38987 < phonon 43268d38989 < phosphatase 43269a38991 > phosphodiesterase 43277a39000 > photobomb/DGS 43279,43280d39001 < photochemical/Y < photochemistry 43285c39006 < photoengrave/ZGDRSJ --- > photoengrave/DRSJZG 43298,43300c39019 < photojournalist/MS < photolysis < photolytic --- > photojournalist/SM 43302,43305d39020 < photometric < photometrically < photometry < photomultiplier 43307d39021 < photoreceptor 43309d39022 < photosphere 43317c39030,39031 < photosynthetically --- > phototropic > phototropism 43320d39033 < photovoltaic 43322c39035,39036 < phrase/AGDSM --- > phrase's > phrase/AGDS 43326,43327c39040 < phreaking/S < phrenological/Y --- > phreaking 43332d39044 < phylogenetic 43349c39061 < physiologist/SM --- > physiologist/MS 43351c39063 < physiotherapist/SM --- > physiotherapist/MS 43354d39065 < phytoplankton 43358d39068 < pianistic 43368a39079 > picante 43374d39084 < pickaback 43376d39085 < pickaxe/M 43382c39091 < pickpocket/SMG --- > pickpocket/SM 43384c39093 < picky/TRP --- > picky/PTR 43389d39097 < picoseconds 43391d39098 < pictogram 43393d39099 < pictographic 43397c39103 < picturesque/YP --- > picturesque/PY 43406,43407c39112 < piecewise < piecework/ZMR --- > piecework/MRZ 43408a39114 > piecrust/SM 43411c39117 < pierce/JZGDRS --- > pierce/JGDS 43418c39124 < pigeonhole/MGDS --- > pigeonhole/DSMG 43431d39136 < pigmy/SM 43436c39141 < pigtail/MDS --- > pigtail/MS 43439a39145 > pikestaves 43441d39146 < pilaff/MS 43443d39147 < pilau/SM 43453c39157 < pill/MS --- > pill/MDSG 43476,43477c39180,39181 < pincer/MDS < pinch/GMDRS --- > pincer/MS > pinch/GMDS 43479,43480c39183,39184 < pine/AGDSM < pineal --- > pine's > pine/AGDS 43496c39200 < pinnacle/DSM --- > pinnacle/SM 43502d39205 < pinocle/M 43539a39243 > pirozhki/M 43566d39269 < piths 43571,43572d39273 < pitifuller < pitifullest 43587,43588c39288 < pixie/M < pixy/SM --- > pixie/MS 43594a39295,39296 > piñata/MS > piñon/SM 43605c39307,39308 < place/EAGLDSM --- > place's > place/AESDLG 43608c39311 < placeholder/SM --- > placeholder/MS 43611d39313 < placemen 43620,43622c39322,39324 < plagiarism/MS < plagiarist/MS < plagiarize/ZGDRS --- > plagiarism/SM > plagiarist/SM > plagiarize/DRSZG 43645c39347,39348 < plane/CGDSM --- > plane's > plane/CGDS 43649c39352 < planetarium/MS --- > planetarium/SM 43651,43652d39353 < planetesimals < planetoids 43664c39365 < plantation/SM --- > plantation/MS 43670,43671c39371 < plasma/SM < plasmid/S --- > plasma/M 43675d39374 < plasterwork 43677d39375 < plasticine 43679c39377,39378 < plasticize/DSZG --- > plasticize/DSG > plastique 43697a39397 > platys 43703d39402 < playability/U 43720d39418 < playings 43756c39454 < plenteous/Y --- > plenteous 43764d39461 < pleural 43787c39484 < plotted/A --- > plotted 43791c39488 < plow/ZGMDS --- > plow/GMDS 43795,43796c39492,39494 < ploy/SM < pluck/MDRSG --- > ploy's > ploy/S > pluck/MDSG 43800,43802c39498,39501 < plug/USM < plugged/UA < plugging/UA --- > plug's > plug/US > plugged/U > plugging/U 43804c39503 < plugin/MS --- > plugin/SM 43808d39506 < plumbago 43812a39511,39512 > plummer > plummest 43840c39540 < ply/AZGDSM --- > ply/AGDSM 43843c39543 < pneumatic/S --- > pneumatic 43844a39545,39547 > pneumococcal > pneumococci > pneumococcus 43857c39560 < podcast --- > podcast/SM 43860d39562 < podgy 43872d39573 < pogo 43877d39577 < poikilothermic 43882c39582 < pointed/PY --- > pointed/Y 43886c39586 < pointless/YP --- > pointless/PY 43901c39601 < polarization/CMS --- > polarization/CM 43911d39610 < poleward/S 43918c39617 < policyholder/SM --- > policyholder/MS 43922c39621 < polish/ZGMDRSJ --- > polish/ZGMDRS 43931c39630 < politician/MS --- > politician/SM 43939c39638 < poll/XGMDNS --- > poll/GMDNS 43945c39644 < pollinator/MS --- > pollinator/SM 43948c39647 < pollock/MS --- > pollock/M 43951c39650 < pollute/ZGNDRSX --- > pollute/ZGNDRS 43961a39661,39662 > polyacrylamide > polyamory/S 43964,43967d39664 < polyatomic < polycarbonate < polychromatic < polychrome 43969,43970d39665 < polycrystalline < polycyclic 43986d39680 < polymerase/S 43991d39684 < polymorphism/S 43993,43994c39686,39687 < polynomial/SMY < polynucleotide/MS --- > polynomial/MS > polynucleotide/SM 43996c39689 < polypeptide/MS --- > polypeptide's 44000c39693 < polysaccharides --- > polys 44005c39698 < polytechnic/SM --- > polytechnic/MS 44010d39702 < polytopes 44012c39704 < polyurethane/SM --- > polyurethane/MS 44024d39715 < pompon/SM 44029d39719 < poncey 44035c39725 < ponderous/PY --- > ponderous/YP 44043c39733 < pontificate/MGNDSX --- > pontificate/DSMG 44072d39761 < poppadum/S 44082c39771 < popularization/SM --- > popularization/M 44085d39773 < populated/U 44116c39804,39805 < port/CAEGDSM --- > port's/A > port/CAEGDS 44126,44127c39815 < porterage < porterhouse/MS --- > porterhouse/SM 44133a39822 > portière/MS 44136c39825 < portmanteau/SM --- > portmanteau/MS 44138c39827 < portraitist/MS --- > portraitist/SM 44143c39832,39833 < pose/CAKEGDSM --- > pose's/A > pose/CAKEGDS 44148,44154c39838,39842 < position/ACKESM < positionable < positional/KC < positionally < positioned/KA < positioning/AK < positive/PMYTRS --- > position/CKEMS > positional/K > positioned/K > positioning/K > positive/MYPS 44158d39845 < positivity 44164c39851 < possessive/SPMY --- > possessive/SMYP 44168c39855 < possible/RSMT --- > possible/SM 44177a39865 > postcolonial 44180c39868 < postdoc --- > postdoc/MS 44185,44186c39873 < postfixes < postgraduate/MS --- > postgraduate/SM 44213c39900 < postponement/MS --- > postponement/SM 44240c39927 < potentiometer/S --- > potentiate/GDS 44267c39954,39955 < pound/KDSGM --- > pound's > pound/KDSG 44270c39958 < pour/GDSBJ --- > pour/GDSJ 44280c39968 < powerful/YP --- > powerful/Y 44282c39970 < powerless/YP --- > powerless/PY 44286d39973 < poxy 44291c39978 < practicability/SM --- > practicability/M 44298,44299c39985 < practitioner/MS < praesidium/S --- > practitioner/SM 44305c39991 < pragmatist/SM --- > pragmatist/MS 44328d40013 < prayerbook 44330c40015 < preach/DRSZGJL --- > preach/DRSZGL 44334,44335c40019 < preadolescence/MS < preallocate --- > preadolescence/SM 44337,44338d40020 < preamp < preamplifier 44342,44343d40023 < preauthorize < prebendary 44346c40026 < precarious/YP --- > precarious/PY 44352c40032 < precedence/MS --- > precedence/M 44356,44357d40035 < precess/GD < precession 44360c40038 < precious/PY --- > precious/YP 44363,44364c40041,40042 < precipitant/SM < precipitate/DSXMYGN --- > precipitant/MS > precipitate/XMYGNDS 44368c40046 < precise/XDRSYTGNP --- > precise/DRSYTGNP 44371d40048 < preclinical 44374c40051 < precocious/PY --- > precocious/YP 44377c40054 < precognition/SM --- > precognition/M 44380,44383c40057,40059 < precomputed < preconceive/DSG < preconception/MS < precondition/GSMD --- > preconceive/GDS > preconception/SM > precondition/MDGS 44387c40063 < predate/XDSGN --- > predate/DSG 44392,44394c40068,40069 < predecessor/MS < predeclared < predefine/DG --- > predecessor/SM > predefined 44399c40074 < predetermine/DRSZG --- > predetermine/ZGDRS 44410,44411c40085 < predicted/U < prediction/MS --- > prediction/SM 44413c40087 < predigest/DSG --- > predigest/GDS 44416c40090 < predisposition/SM --- > predisposition/MS 44419c40093 < predominate/DSYG --- > predominate/YGDS 44433c40107 < prefabricate/GNDS --- > prefabricate/DSGN 44453a40128 > prehistorian/S 44457c40132,40133 < prejudge/GDS --- > prehuman > prejudge/LGDS 44459c40135 < prejudgment/MS --- > prejudgment/SM 44470d40145 < preloaded 44473,44474c40148 < premature/YP < prematurity --- > premature/Y 44477c40151 < premeditate/GNDS --- > premeditate/DSGN 44483c40157 < premiership/SM --- > premiership/MS 44485d40158 < premiss/SM 44489c40162 < premonition/SM --- > premonition/MS 44491a40165 > prenup/SM 44493c40167 < preoccupation/MS --- > preoccupation/SM 44496c40170 < preordain/DSG --- > preordain/GDS 44501,44502c40175 < preparation/MS < preparative --- > preparation/SM 44504c40177 < prepare/ZGDRS --- > prepare/GDS 44509d40181 < preplanned 44513c40185 < preposition/MS --- > preposition/SM 44523d40194 < preprocessed 44525c40196 < prepubescent/MS --- > prepubescent/SM 44528,44529c40199,40200 < prerecord/SGD < preregister/DGS --- > prerecord/GSD > preregister/SGD 44531c40202 < prerequisite/SM --- > prerequisite/MS 44538c40209 < preschool/SMRZ --- > preschool/SZMR 44546,44547d40216 < prescriptivism < prescriptivist 44549d40217 < preselect/SD 44554d40221 < presentational/A 44556c40223 < presentiment/MS --- > presentiment/SM 44566c40233 < preshrink/SG --- > preshrink/GS 44575c40242,40243 < press/ACGSDM --- > press's > press/ACGSD 44584,44586c40252,40253 < pressurize/CDSG < pressurized/U < pressurizer/MS --- > pressurize/CGDS > pressurizer/SM 44588,44589d40254 < prestidigitator < prestidigitatorial 44596,44597c40261,40262 < presumptive/Y < presumptuous/PY --- > presumptive > presumptuous/YP 44605d40269 < pretending/U 44616,44617d40279 < pretreated < pretreatment/S 44626,44627c40288,40289 < prevalent/Y < prevaricate/GNXDS --- > prevalent > prevaricate/DSGNX 44632,44634c40294,40295 < preventative/SM < preventible < prevention/SM --- > preventative/MS > prevention/M 44639d40299 < prevue/SM 44644c40304,40305 < price/AGDSM --- > price's > price/AGDS 44646a40308,40309 > pricier > priciest 44652d40314 < pricy/RT 44658c40320 < priesthood/MS --- > priesthood/SM 44660c40322 < priestly/PRT --- > priestly/RTP 44662c40324 < priggish/YP --- > priggish/P 44664c40326 < prim/YP --- > prim/ZGDRYP 44666d40327 < primaeval 44671c40332 < prime/MZGDRSP --- > prime/MS 44675c40336 < primitive/PSMY --- > primitive/SPMY 44680c40341 < primogenitor/MS --- > primogenitor/SM 44697d40357 < printed/U 44722c40382 < privatization/MS --- > privatization/SM 44731c40391 < prizefight/MRSZG --- > prizefight/ZGSMR 44734c40394 < prizewinner/SM --- > prizewinner/MS 44737c40397 < probabilist --- > proactive/Y 44739d40398 < probabilistically 44743c40402 < probate/MNV --- > probate/MN 44751c40410 < problematic/U --- > problematic 44756c40415 < procedural/Y --- > procedural 44761,44762c40420,40421 < process/AGDSM < processable --- > process's > process/AGDS 44764,44765c40423,40424 < procession/DG < processional/SM --- > procession/GD > processional/MS 44767d40425 < proclaim/Z 44770c40428 < procrastinate/GNXDS --- > procrastinate/DSGN 44772c40430 < procrastinator/SM --- > procrastinator/MS 44774,44775d40431 < procreational < procreatory 44777,44778c40433 < proctorial < procurement/SM --- > procurement/M 44784c40439,40440 < produce/AZGDRSM --- > produce's > produce/AZGDRS 44787d40442 < product/M 44789c40444 < productive/UAY --- > productive/UY 44793c40448 < profanation/SM --- > profanation/MS 44798,44799c40453,40454 < profession/MS < professional/SMY --- > profession/SM > professional/MYS 44805c40460 < professorship/MS --- > professorship/SM 44807c40462 < proficiency/SM --- > proficiency/M 44809d40463 < profiler/SM 44814c40468 < profiteer/MDSG --- > profiteer/MDGS 44816c40470 < profiterole/MS --- > profiterole/SM 44820,44821c40474 < proforma/S < profound/PRYT --- > profound/RYTP 44828a40482 > progestin/S 44833c40487 < prognosticate/XDSGN --- > prognosticate/XGNDS 44836,44838c40490,40493 < program/ZGMDRS < programer/M < programmable/SM --- > program/CAS > programed > programing > programmable/MS 44840,44841c40495 < programmatically < programmed/CA --- > programmed/AC 44843c40497 < programming/MS --- > programming/SM 44845,44846c40499,40500 < progression/SM < progressive/SMYP --- > progression/MS > progressive/PMYS 44853,44854c40507 < project/GVMDS < projected/A --- > project/GMDS 44857,44858c40510 < projectionist/MS < projective/Y --- > projectionist/SM 44859a40512 > prokaryotic 44869d40521 < prologize 44871d40522 < prologuize 44874c40525 < promenade/MZGDRS --- > promenade/MGDS 44876c40527 < prominence/MS --- > prominence/M 44885c40536 < promote/BDRZG --- > promote/DRZG 44894c40545 < promulgate/XGNDS --- > promulgate/GNDS 44898c40549 < pronator/MS --- > pronator/SM 44906,44907c40557 < pronounced/Y < pronouncement/MS --- > pronouncement/SM 44911c40561 < proofread/SZGR --- > proofread/SRZG 44915,44916c40565,40566 < propagandist/SM < propagandize/DSG --- > propagandist/MS > propagandize/GDS 44920d40569 < propane/M 44924d40572 < propellent/MS 44947c40595 < proportional/EY --- > proportional/YS 44949d40596 < proportionals 44956c40603 < proprietor/MS --- > proprietor/SM 44958c40605 < proprietorship/MS --- > proprietorship/SM 44961d40607 < proprioceptive 44965d40610 < propylene 44972a40618 > proscribe/DG 44974,44976c40620,40621 < proscriptive < prose/MS < prosecute/DSGNBX --- > prose/M > prosecute/DSXGN 44978c40623 < prosecutor/SM --- > prosecutor/MS 44981c40626 < proselytize/ZGDRS --- > proselytize/DRSZG 44983d40627 < prosodic 44987c40631 < prospector/MS --- > prospector/SM 45002c40646 < protagonist/MS --- > protagonist/SM 45004d40647 < protease 45010c40653 < protective/YP --- > protective/PY 45013c40656 < protectorate/SM --- > protectorate/MS 45018,45019c40661 < protestantism < protestation/SM --- > protestation/MS 45021d40662 < protists 45026c40667 < prototype/MGDS --- > prototype/MGS 45031d40671 < protozoon/M 45036d40675 < protrusive 45038a40678,40679 > protégé/MS > protégée/S 45040c40681 < prov/ZNRB --- > prov/NB 45042d40682 < provable/EU 45051c40691 < provide/BDRSZG --- > provide/DRSZG 45063c40703 < provocative/YP --- > provocative/PY 45076c40716 < proximate/Y --- > proximate 45090d40729 < prussic 45092c40731 < pryer/MS --- > précis/MDG 45095d40733 < psalter 45103,45104d40740 < pseudopod < pseudopodia 45124a40761 > psychoanalyses 45126c40763 < psychoanalyst/MS --- > psychoanalyst/SM 45129c40766 < psychoanalyze/GDS --- > psychoanalyze/DSG 45131c40768 < psychodrama/SM --- > psychodrama/MS 45135,45136d40771 < psycholinguistic/S < psycholinguists 45138c40773 < psychologist/SM --- > psychologist/MS 45147a40783 > psychopharmacology 45150d40785 < psychosocial 45160,45161c40795 < pterodactyl/SM < pterosaurs --- > pterodactyl/MS 45173c40807 < publication/AMS --- > publication/ASM 45177d40810 < publicized/U 45180c40813 < publishable/U --- > publishable 45211c40844 < pugnacious/PY --- > pugnacious/YP 45214d40846 < puissant 45227d40858 < pullup/SM 45248c40879 < punch/MDRSBZG --- > punch/MDRSZG 45250d40880 < punchbowl 45256c40886 < punctilious/YP --- > punctilious/PY 45260c40890 < punctuate/XGNDS --- > punctuate/GNDS 45262d40891 < punctuational 45272c40901 < punishment/SM --- > punishment/MS 45275d40903 < punkin/SM 45289d40916 < pupillage 45312c40939 < purify/DRSZGN --- > purify/NDRSZG 45320c40947 < purity/SM --- > purity/M 45328,45329c40955,40956 < purpose/DSMYGV < purposeful/PY --- > purpose/DSMYG > purposeful/YP 45331c40958 < purposeless/YP --- > purposeless/PY 45347c40974 < push/BZGMDRS --- > push/ZGMDRS 45367c40994 < putative/Y --- > putative 45376d41002 < putridity 45389d41014 < puzzling/Y 45390a41016,41017 > pwn/SGD > pyelonephritis 45400d41026 < pyridine 45404,45405d41029 < pyrolysis < pyrolyze 45407c41031 < pyromaniac/MS --- > pyromaniac/SM 45411d41034 < pyroxene/S 45422d41044 < quackish 45424c41046 < quadrangle/MS --- > quadrangle/SM 45429,45430c41051 < quadratically < quadrature/S --- > quadrature 45432c41053 < quadrennium/SM --- > quadrennium/MS 45434,45435c41055,41056 < quadrilateral/MS < quadrille/MNSX --- > quadrilateral/SM > quadrille/XMNS 45437d41057 < quadripartite 45441d41060 < quadrophonic 45445,45446c41064,41065 < quadruplet/SM < quadruplicate/DSMGN --- > quadruplet/MS > quadruplicate/MGNDS 45448,45449d41066 < quadruply < quadrupole 45452d41068 < quahaug/SM 45458c41074 < quaky/TR --- > quaky 45462c41078 < qualify/EXGNDS --- > qualify/EGXNDS 45470c41086 < quantifiable/U --- > quantifiable 45472d41087 < quantified/U 45477,45478d41091 < quantization < quantize/D 45487d41099 < quarrymen 45490c41102 < quarterback/SGMD --- > quarterback/GMDS 45498,45500d41109 < quartette/MS < quartic/S < quartile/S 45503d41111 < quartzite 45507,45509d41114 < quasilinear < quaternary < quaternion/S 45527d41131 < quern 45531c41135,41136 < ques/S --- > ques > quesadilla/MS 45535c41140 < question/BJSMDRZG --- > question/SMDRZGBJ 45541,45542c41146,41148 < questionnaire/MS < queue/MDSG --- > questionnaire/SM > queue's > queue/CDSG 45556d41161 < quiesce/D 45572d41176 < quincentenary 45576d41179 < quinquennial 45579c41182 < quintessence/MS --- > quintessence/SM 45582,45584d41184 < quintette/MS < quintic < quintillion 45586c41186 < quintuplet/SM --- > quintuplet/MS 45589d41188 < quipper 45592c41191,41192 < quire/IASM --- > quire's > quire/IAS 45605d41204 < quivering/Y 45614a41214 > quo/H 45620c41220 < quot/RB --- > quot/B 45624,45625c41224,41225 < quote/UDSGM < quoth --- > quote's > quote/UDSG 45642c41242 < racecourse/MS --- > racecourse/SM 45659c41259 < racketeer/GSMD --- > racketeer/SMDG 45662c41262 < racoon/MS --- > racoon 45664c41264 < racquetball/MS --- > racquetball/SM 45668,45670c41268 < radarscope/MS < radder < raddest --- > radarscope/SM 45673d41270 < radian/S 45676c41273 < radiate/DSGNVX --- > radiate/DSGNX 45678d41274 < radiative/Y 45689d41284 < radioastronomical 45691d41285 < radiogalaxy/S 45695,45696c41289 < radioisotope/SM < radiological --- > radioisotope/MS 45701c41294 < radiometer/SM --- > radiometer/MS 45704d41296 < radionuclide 45707c41299,41300 < radiosonde/MS --- > radiosonde/SM > radiosurgery 45711,45712c41304,41305 < radiotelephone/SM < radiotherapist/SM --- > radiotelephone/MS > radiotherapist/MS 45717d41309 < radix 45746c41338,41339 < rail/CGDSM --- > rail's > rail/CGDS 45759d41351 < raincloud/S 45763,45764d41354 < rainforest/S < rainless 45769d41358 < rainswept 45775d41363 < raj 45789d41376 < ramequin/SM 45792c41379 < ramify/DSGXN --- > ramify/DSXNG 45796c41383 < ramp/MDS --- > ramp/GMS 45814c41401 < rand/MS --- > rand/M 45823c41410,41411 < range/CGDSM --- > range's > range/CGDS 45860c41448 < rapscallion/SM --- > rapscallion/MS 45868c41456 < rarefaction/SM --- > rarefaction/M 45876c41464 < rasp/GMDRS --- > rasp/GMDS 45881c41469 < rasterize/SGDR --- > rasterize/DRSG 45886,45887c41474 < rate/BJXMZGNDRS < rateable --- > rate/JXMZGNDRS 45892c41479 < rathskeller/MS --- > rathskeller/SM 45895c41482 < ratify/DRSZGNX --- > ratify/NDRSZG 45904c41491 < rationalist/MS --- > rationalist/SM 45906c41493 < rationality/SM --- > rationality/M 45908c41495 < rationalize/GDS --- > rationalize/DSG 45910d41496 < ratlin/SM 45917c41503 < rattlebrain/MDS --- > rattlebrain/SMD 45919c41505 < rattlesnake/MS --- > rattlesnake/SM 45921c41507 < rattly/RT --- > rattly 45933c41519,41520 < ravel/UDSGM --- > ravel's > ravel/UDSG 45938c41525 < raving/MY --- > raving/M 45951c41538 < razor/MSG --- > razor/MS 45953,45954d41539 < razorbills < razorblades 45956d41540 < razzamatazz 45963d41546 < reached/U 45965d41547 < reacquisition 45968a41551 > reactivity/M 45987d41569 < realizable/U 46008d41589 < reasoned/U 46011c41592 < reasonless --- > reassemble/DSG 46022d41602 < rebook 46031d41610 < recalibrate/GN 46041d41619 < received/U 46045,46046c41623 < recension < recent/YTP --- > recent/RYTP 46048c41625 < receptacle/MS --- > receptacle/SM 46050,46051c41627,41628 < receptionist/MS < receptive/YP --- > receptionist/SM > receptive/PY 46056c41633 < recessional/MS --- > recessional/SM 46059d41635 < recharge/R 46060a41637 > recherché 46065,46066c41642,41643 < reciprocal/MYS < reciprocate/DSGN --- > reciprocal/SMY > reciprocate/GNDS 46070,46071c41647,41648 < recitalist/SM < recitative/SM --- > recitalist/MS > recitative/MS 46075c41652 < reckon/SJDRG --- > reckon/SJDG 46077,46078c41654 < reclaim/BR < reclamation/MS --- > reclamation/M 46082d41657 < recognition/S 46084,46086c41659,41660 < recognizably/U < recognizance/S < recognize/BDRSZG --- > recognizably > recognize/DRSGB 46088d41661 < recombinant 46090d41662 < recommended/U 46094,46095c41666 < reconcile/GLDSB < reconciled/U --- > reconcile/GDSB 46098,46099c41669,41671 < reconnaissance/SM < reconnection --- > reconfiguration > reconfigure/D > reconnaissance/MS 46103,46106d41674 < recontribute < reconversion < recopy/DSG < record/RBJZ 46108,46111c41676,41677 < recorder/M < recording/M < recordists < recount/SGMD --- > recorder/MS > recording/MS 46113d41678 < recouple 46119c41684 < recriminate/GNXDS --- > recriminate/DSGNX 46128d41692 < recrystallization 46135c41699 < rectify/NDRSZGX --- > rectify/XNDRSZG 46143c41707 < recuperate/DSGNV --- > recuperate/GNVDS 46147a41712 > recurrent/Y 46149,46153c41714,41716 < recurse/DGSV < recursion/S < recuse/DGS < recyclable/MS < recycle/BZ --- > recurse/XNV > recuse/DSG > recyclable/SM 46169d41731 < redeclaration 46171d41732 < redeemed/U 46173d41733 < redelivery 46176d41735 < redeposition 46180,46182c41739 < redisplay < redistribute/V < redistrict/DG --- > redistrict/GD 46194d41750 < redshift/S 46197d41752 < reduced/U 46199d41753 < reducibility 46203,46204c41757 < reductionism < reductionist/S --- > reductionist 46215c41768,41769 < reel/UGDSM --- > reel's > reel/UGDS 46219d41772 < refactor/SMDG 46225d41777 < refereed/U 46227,46230c41779,41780 < reference/MGDRS < referenced/U < referencing/U < referendum/SM --- > reference/MGDS > referendum/MS 46232c41782 < referential/Y --- > referential 46239c41789,41790 < refill/BJM --- > refile/DSG > refill/BM 46241c41792 < refinement/MS --- > refinement/SM 46248,46253c41799,41800 < reflectance < reflected/U < reflection/SM < reflectional < reflective/PY < reflectivity --- > reflection/MS > reflective/Y 46255,46256c41802 < reflexive/PSMY < reflexivity --- > reflexive/SMY 46258d41803 < reflooring 46260c41805 < reform/MB --- > reform/MZ 46266c41811 < refortify/DSG --- > refortify/GDS 46268c41813 < refractors --- > refraction/M 46271,46272c41816 < refresh/ZGBLDRS < refreshed/U --- > refresh/ZGLDRS 46279d41822 < refrigerated/U 46289d41831 < refuseniks 46298d41839 < regarded/U 46305c41846,41847 < regenerate/VX --- > regenerate/V > regex/M 46319d41860 < registrable 46346c41887 < regurgitate/GNDS --- > regurgitate/DSGN 46351c41892 < rehabilitate/DSGNV --- > rehabilitate/GNVDS 46359d41899 < rehydrate 46361c41901 < reimburse/BLDSG --- > reimburse/BDSGL 46363d41902 < reimplementation 46366,46368c41905,41907 < reinforce/GDSL < reinforcement/MS < reinitialization --- > reinforce/LGDS > reinforcement/SM > reinitialize 46372d41910 < reinvestigation 46379c41917 < rejuvenate/DSXGN --- > rejuvenate/DSGN 46381d41918 < rejuvenatory 46387,46388c41924,41925 < relational/Y < relationship/SM --- > relational > relationship/MS 46393d41929 < relativistically 46395d41930 < relator 46400d41934 < relaxing/Y 46402c41936 < releasable/U --- > release/B 46417d41950 < relict 46426,46427c41959 < relink/GD < relinquish/GLDS --- > relinquish/LDSG 46430a41963,41964 > relist/SGD > relocate/B 46436c41970 < remainder/MDSG --- > remainder/GMDS 46447c41981 < remembrance/SM --- > remembrance/MS 46450c41984 < reminiscence/SM --- > reminiscence/MS 46462,46463c41996,41997 < remonstrant/MS < remonstrate/XGNDS --- > remonstrant/SM > remonstrate/DSG 46470d42003 < remould/SDG 46472c42005 < remunerate/DSGNVX --- > remunerate/GNVXDS 46477d42009 < renationalisation 46490,46491c42022 < renormalization < renounce/DSLG --- > renounce/LDSG 46501a42033 > reorg/DSG 46504,46505c42036,42037 < repairable/U < repairer/MS --- > repair/BZR > repairer/M 46508d42039 < repaper 46510c42041 < reparation/SM --- > reparation/MS 46513c42044 < repatriate/DSXMGN --- > repatriate/XDSMGN 46516d42046 < repeatability/U 46523d42052 < repellant/SM 46526c42055 < repelling/Y --- > repelling 46529c42058 < repentant/UY --- > repentant/Y 46534c42063 < repetitious/PY --- > repetitious/YP 46538c42067 < rephotograph/GD --- > rephotograph/DG 46541c42070 < replenish/DSGL --- > replenish/LGDS 46547,46548c42076 < replicable < replicate/DSG --- > replicate/DSGNX 46551,46553d42078 < replug < reply/XRN < report/MRBZ 46559c42084 < reprehend/DSG --- > reprehend/DGS 46564,46566c42089,42091 < represent/DGSB < representable/U < representative/PSM --- > represent/GDS > representational > representative/MS 46568,46569c42093,42094 < repression/SM < repressive/YP --- > repression/MS > repressive/PY 46574,46575c42099,42100 < reproach/BGMDS < reproachful/PY --- > reproach/GMDSB > reproachful/Y 46577,46581c42102 < reproducibility < reproducible/U < reproducibly < reprogram/S < reprogrammable --- > reproductive 46593,46594c42114,42115 < repulsion/SM < repulsive/PY --- > repulsion/M > repulsive/YP 46603d42123 < requested/U 46606,46607c42126,42127 < requirement/SM < requisite/MNXS --- > requirement/MS > requisite/XMNS 46615,46617d42134 < reredos < reregistration < rerouteing 46619d42135 < res/C 46626,46627c42142 < reselect < reselection --- > resell/SG 46629c42144 < resend/G --- > resend 46633c42148 < resentment/SM --- > resentment/MS 46635c42150 < reservation/SM --- > reservation/MS 46642d42156 < reshow/G 46649d42162 < residuary 46652,46653c42165 < resignal < resignation/MS --- > resignation/SM 46659,46661c42171,42172 < resiny < resist/SMDRZGV < resistance/MS --- > resist/SMDRZG > resistance/SM 46664,46665d42174 < resistive/Y < resistivity 46667a42177 > resit/S 46671c42181 < resolute/XPYTNR --- > resolute/PY 46673,46675c42183 < resolvability < resolvable/U < resolve/M --- > resolve/RBM 46677d42184 < resolvent 46688d42194 < respecify 46703,46704c42209,42210 < respond/SZGDR < respondent/MS --- > respond/SGD > respondent/SM 46709c42215 < responsive/UPY --- > responsive/UYP 46712d42217 < restart/B 46715d42219 < restauranteur/SM 46724c42228 < restless/YP --- > restless/PY 46726,46727c42230,42231 < restoration/MS < restorative/MS --- > restoration/SM > restorative/SM 46734c42238 < restrictive/PY --- > restrictive/YP 46738,46739c42242 < restructuring/MS < resubstitute --- > restructuring/SM 46743c42246 < resumption/SM --- > resumption/MS 46747,46748c42250,42251 < resurrect/SGD < resurrection/SM --- > resurrect/GSD > resurrection/MS 46752d42254 < resynchronization 46766,46767c42268,42269 < retention/MS < retentive/PY --- > retention/M > retentive/YP 46769d42270 < retentivity 46774d42274 < reticular 46776,46778c42276 < reticulation/SM < reticule/S < reticulum --- > reticulation/MS 46781d42278 < retinitis 46792c42289 < retrenchment/SM --- > retrenchment/MS 46805c42302 < retrogress/DSGV --- > retrogress/GVDS 46807,46808c42304,42305 < retrorocket/SM < retrospect/GVSMD --- > retrorocket/MS > retrospect/MDSGV 46813,46814c42310 < retuning < returnable/MS --- > returnable/SM 46816c42312 < rev/VM --- > rev/ZVM 46818,46819c42314 < revanchist < reveal/BGJSD --- > reveal/GJSD 46824,46825c42319 < revelation/MS < revelatory --- > revelation/SM 46830,46831c42324,42325 < reverberant < reverberate/DSXGN --- > reverb > reverberate/DSGNX 46841c42335 < reverse/YR --- > reverse/Y 46847d42340 < revery/SM 46852,46856c42345,42346 < revise/BXRZN < revised/U < reviser/M < revision/M < revisionary --- > reviser/MS > revision/SM 46858c42348 < revisionist/MS --- > revisionist/SM 46862c42352 < revive/DRSG --- > revive/DSG 46865c42355 < revoke/DRSBZG --- > revoke/DSG 46886c42376 < rewrite/M --- > rewrite/MGS 46889c42379 < rhapsodize/DSG --- > rhapsodize/GDS 46893,46894d42382 < rheological < rheology 46899c42387 < rhetorician/MS --- > rhetorician/SM 46906c42394 < rheumatologist/SM --- > rheumatologist/MS 46908c42396 < rheumy/TR --- > rheumy 46912a42401,42402 > rhinoplasty > rhinovirus/MS 46935d42424 < ribcage 46937,46938d42425 < ribonucleic < ribosomes 46947d42433 < ricksha/MS 46951c42437 < rid/SR --- > rid/S 46956c42442 < ride/CZGSM --- > ride/MZGRS 46962c42448 < ridgy/RT --- > ridgy 46964c42450 < ridiculous/PY --- > ridiculous/YP 46978c42464 < rigamarole/MS --- > rigamarole/SM 46997,46998c42483 < rigidify/S < rigidity/SM --- > rigidity/M 47015d42499 < ringing/Y 47019c42503 < ringmaster/SM --- > ringmaster/MS 47021c42505 < ringtone/MS --- > ringtone/SM 47037,47038c42521 < ripost/SGMD < riposte/MS --- > riposte/MGDS 47043c42526 < ripply/TR --- > ripply 47045d42527 < ripstop 47058a42541 > risqué 47080d42562 < riveting/Y 47092c42574 < roadrunner/MS --- > roadrunner/SM 47095d42576 < roadsigns 47097d42577 < roadsweepers 47116c42596,42597 < robe/EGDSM --- > robe's > robe/EGDS 47117a42599 > robocall/SGD 47143c42625,42626 < rogue/KSM --- > rogue's > rogue/KS 47153d42635 < rolled/A 47168,47169c42650,42651 < romanticist/MS < romanticize/GDS --- > romanticist/SM > romanticize/DSG 47174d42655 < rontgen/S 47178d42658 < roofgarden 47196c42676 < rootkit/MS --- > rootkit/SM 47199d42678 < rootstock 47202d42680 < ropey 47216c42694 < roster/SMG --- > roster/SM 47222d42699 < rotatable 47224c42701 < rotate/DSGNBX --- > rotate/DSGNX 47226,47227c42703 < rotational/Y < rotators --- > rotational 47232c42708 < rotogravure/SM --- > rotogravure/MS 47251,47252c42727,42728 < roughhouse/DSMG < roughneck/MDSG --- > roughhouse/MGDS > roughneck/GMDS 47261c42737 < roundhouse/MS --- > roundhouse/SM 47264d42739 < roundtable/SM 47271c42746,42748 < route/ADSGM --- > route's > route/ADSG > routeing 47275a42753 > roué/MS 47302c42780 < rubberneck/SZGMDR --- > rubberneck/MDRSZG 47304c42782 < rubbery/TR --- > rubbery 47321c42799 < ruction/S --- > ructions 47337d42814 < ruffly/TR 47342a42820 > rugrat/SM 47344c42822 < ruination/SM --- > ruination/M 47347d42824 < rulebook/S 47364c42841 < rumormonger/MS --- > rumormonger/SM 47367d42843 < rumply/RT 47378d42853 < runnable 47391c42866 < rural/Y --- > rural 47395c42870 < rushy/RT --- > rushy 47413c42888 < ruthless/PY --- > ruthless/YP 47420,47421c42895 < sabbath < sabbatical/MS --- > sabbatical/SM 47430d42903 < saccharides 47441d42913 < sacral 47452c42924 < sacroiliac/SM --- > sacroiliac/MS 47460c42932,42933 < saddle/UDSGM --- > saddle's > saddle/UDSG 47472c42945 < sadomasochist/SM --- > sadomasochist/MS 47475,47477c42948,42950 < safe/UYTPRM < safeguard/GSMD < safekeeping/SM --- > safe/MYTPRS > safeguard/SMDG > safekeeping/M 47479d42951 < safes 47512c42984 < sake/MS --- > sake/M 47516c42988 < salacious/YP --- > salacious/PY 47524c42996 < saleability --- > saleable/U 47526c42998 < salesclerk/MS --- > salesclerk/SM 47533c43005 < salesperson/SM --- > salesperson/MS 47537d43008 < salicylic 47544c43015 < salivate/XGNDS --- > salivate/GNDS 47555c43026,43027 < salt/CTGDSM --- > salt's > salt/CTGDS 47563c43035 < saltshaker/MS --- > saltshaker/SM 47567d43038 < salubrity 47570c43041 < salutatorian/SM --- > salutatorian/MS 47593c43064 < sanctify/NGDS --- > sanctify/GDSN 47606a43078 > sandbagger/SM 47610c43082 < sandblast/MDRSZG --- > sandblast/ZGMDRS 47613c43085 < sandcastle/SM --- > sandcastle/MS 47621c43093 < sandpaper/MDGS --- > sandpaper/GMDS 47624c43096 < sandstone/SM --- > sandstone/M 47639c43111 < sanitize/ZGDRS --- > sanitize/GDS 47656c43128 < saprophyte/MS --- > saprophyte/SM 47661d43132 < sarape/SM 47671d43141 < saree/MS 47677c43147 < sarsaparilla/SM --- > sarsaparilla/MS 47698c43168 < satin/MS --- > satin/M 47710d43179 < satisfiable/U 47720c43189 < saturated/UC --- > saturated/U 47722d43190 < saturnalia 47742d43209 < sauterne/SM 47743a43211 > sauté/MDSG 47748,47749d43215 < savannah/M < savannahs 47754d43219 < saveloy 47772d43236 < sawtooth 47777,47778c43241,43243 < saxophonist/MS < say/USGM --- > saxophonist/SM > say's > say/USG 47793,47795d43257 < scagging < scalability < scalable 47799,47800c43261,43262 < scale/ACSDGM < scaled/U --- > scale's > scale/CGDS 47806c43268 < scallywag/S --- > scallywag/MS 47812a43275 > scammer/S 47817c43280 < scan/ASM --- > scan/MS 47819c43282 < scandalize/GDS --- > scandalize/DSG 47823c43286 < scanned/A --- > scanned 47825c43288 < scanning/A --- > scanning 47834,47836c43297,43298 < scape < scapegoat/SMDG < scapegrace/SM --- > scapegoat/SGMD > scapegrace/MS 47847,47848c43309 < scaremonger/MSG < scarey --- > scaremonger/SMG 47851c43312 < scarify/DSGN --- > scarify/NDSG 47863,47864d43323 < scathe/DG < scathed/U 47869,47870c43328,43329 < scatter/ZGJSMDR < scatterbrain/MDS --- > scatter/GJSMD > scatterbrain/SMD 47871a43331 > scattershot 47886,47887c43346 < scepter/MDS < sceptically --- > scepter/MS 47890c43349,43350 < schedule/ADSGM --- > schedule's > schedule/ADSG 47908,47909c43368 < schizophrenic/MS < schizophrenically --- > schizophrenic/SM 47914c43373 < schlocky/RT --- > schlocky 47916,47917c43375 < schmaltzy/RT < schmalz/M --- > schmaltzy/TR 47923c43381 < schnaps/M --- > schnaps 47939c43397 < schoolchildren --- > schoolchildren/M 47942,47943c43400 < schoolfellow/MS < schoolfriend --- > schoolfellow/SM 47945c43402 < schoolhouse/MS --- > schoolhouse/SM 47950c43407 < schoolmaster/SM --- > schoolmaster/MS 47954c43411 < schoolteacher/SM --- > schoolteacher/MS 47958,47959c43415 < schrod/SM < schtick --- > schrod/S 47961c43417 < schussboomer/SM --- > schussboomer/MS 47972c43428 < scintillate/XDSGN --- > scintillate/DSGN 47974d43429 < scintillator/S 47983c43438 < scold/MDRSGJ --- > scold/MDSGJ 47986d43440 < scollop/SMDG 47989c43443 < scoop/MDRSG --- > scoop/MDSG 48017c43471 < scoutmaster/SM --- > scoutmaster/MS 48026c43480,43481 < scramble/UGDSM --- > scramble's > scramble/UGDS 48041c43496 < scratch/GJMDS --- > scratch/GMDS 48047c43502 < scratchy/RPT --- > scratchy/PRT 48049c43504 < scrawly/TR --- > scrawly 48062,48064c43517,43519 < screensaver/MS < screenshot/MS < screenwriter/MS --- > screensaver/SM > screenshot/SM > screenwriter/SM 48066c43521,43522 < screw/UDSGM --- > screw's > screw/UDSG 48068c43524 < screwdriver/SM --- > screwdriver/MS 48073c43529 < scribble/JMZGDRS --- > scribble/MZGDRS 48075c43531,43532 < scribe/IKCGSDM --- > scribe's > scribe/CKIS 48083d43539 < scriptorium 48086,48087c43542 < scriptwriter/MS < scriptwriting --- > scriptwriter/SM 48093,48095c43548 < scrogged < scrogging < scroll/GSBMD --- > scroll/GSMD 48115c43568 < scrummage/GS --- > scrummage/S 48126c43579 < scrupulous/UYP --- > scrupulous/UPY 48129,48130c43582,43583 < scrutinize/DSG < scrutiny/SM --- > scrutinize/GDS > scrutiny/M 48153c43606 < scurfy/TR --- > scurfy 48155c43608 < scurrilous/YP --- > scurrilous/PY 48157c43610 < scurry/GDSMJ --- > scurry/GDSM 48179c43632,43633 < seal/AUSDGM --- > seal's > seal/AUSDG 48184d43637 < seamail 48187a43641 > seamount/MS 48195c43649 < searchable --- > searchable/U 48198c43652 < searchlight/SM --- > searchlight/MS 48213,48214c43667,43668 < seat/UGDSM < seated/A --- > seat's > seat/UGDS 48223c43677 < seaworthy/TRP --- > seaworthy/P 48232c43686 < secession/MS --- > secession/M 48244c43698 < secret/STGVMDRY --- > secret/SGVMDY 48251c43705 < secretive/YP --- > secretive/PY 48264,48265d43717 < sectoral < sectored 48281,48282c43733,43734 < sedge/MS < sedgy/RT --- > sedge/M > sedgy 48291c43743 < seductive/PY --- > seductive/YP 48296c43748,43749 < seed/AGDSM --- > seed's > seed/AGDS 48313c43766 < seen --- > seen/U 48322d43774 < segmental 48328,48329c43780,43781 < segregationist/SM < segue/MDS --- > segregationist/MS > segue/MGDS 48338d43789 < seismogram 48346c43797 < seismologist/SM --- > seismologist/MS 48348d43798 < seismometer/S 48352,48354c43802 < select/CSGDV < selectable < selected/UA --- > select/CSGVD 48365,48367c43813,43814 < selenology < self/MG < selfie/S --- > self/GM > selfie/SM 48372c43819 < selfless/YP --- > selfless/PY 48375c43822 < sell/AZGRSM --- > sell/ZGMRS 48376a43824 > selloff/MS 48385c43833 < semanticist/SM --- > semanticist/MS 48400c43848 < semiconductor/SM --- > semiconductor/MS 48405c43853 < semifinalist/SM --- > semifinalist/MS 48414d43861 < semioticians 48420c43867 < semiprofessional/MS --- > semiprofessional/SM 48427c43874 < semitrailer/SM --- > semitrailer/MS 48434d43880 < sempiternal 48456d43901 < sensationalistic 48463c43908 < sensible/PRT --- > sensible/P 48466c43911 < sensitive/SPMY --- > sensitive/SMYP 48472d43916 < sensitizers 48475,48476c43919,43920 < sensual/FY < sensualist/MS --- > sensual/Y > sensualist/SM 48482d43925 < sentential 48499c43942 < separate/PXMYGNVDS --- > separate/XMYGNVDSP 48507a43951 > septal 48509d43952 < septette/SM 48521d43963 < sequent/F 48523,48524c43965,43966 < sequester/GSD < sequestrate/XDSGN --- > sequester/SDG > sequestrate/XGNDS 48526a43969 > sequinned 48533,48534c43976 < seraphically < seraphim/M --- > seraphim 48537,48538c43979,43980 < serenade/MGDRS < serendipitous/Y --- > serenade/MGDS > serendipitous 48548c43990 < serialization/MS --- > serialization/SM 48551c43993 < serif/MDS --- > serif/MS 48569c44011,44012 < serve/FACGDSM --- > serve's/AF > serve/FACGDS 48574,48575c44017,44018 < serviceable/U < serviced/U --- > serviceable > serviced 48582c44025 < servile/Y --- > servile 48584c44027,44028 < serving/MS --- > serving's > servings 48592d44035 < sessile 48599d44041 < settable/A 48603c44045,44046 < settle/AUGDSM --- > settle's > settle/AUGDS 48609,48610d44051 < sevenfold < sevenpence 48630c44071 < sewn --- > sewn/A 48638c44079 < sexologist/MS --- > sexologist/SM 48643c44084 < sextette/MS --- > sexting 48647c44088 < sexuality/SM --- > sexuality/M 48655c44096,44097 < shackle/UGDSM --- > shackle's > shackle/UGDS 48658,48659d44099 < shaded/U < shadeless 48665d44104 < shadowless 48676,48680c44115 < shaikh < shaikhs < shakable/U < shake/MZGRSB < shakeable/U --- > shake/MZGRS 48706c44141 < shameful/YP --- > shameful/PY 48710a44146 > shammies 48712d44147 < shammy/SM 48723c44158,44159 < shape/AGDSM --- > shape's > shape/AGDS 48725c44161 < shapeless/PY --- > shapeless/YP 48729d44164 < sharable/U 48737,48738c44172 < shared/U < shareholder/MS --- > shareholder/SM 48741c44175 < shareware/MS --- > shareware/M 48758d44191 < shattering/Y 48776c44209 < sheave/SM --- > sheave/DSMG 48786c44219 < sheepherder/SM --- > sheepherder/MS 48792c44225 < sheet/MDSG --- > sheet/MSG 48796a44230 > sheikh/M 48797a44232 > sheikhs 48803,48804c44238,44239 < shellack/JGMDS < shellacking/M --- > shellacked > shellacking/MS 48810c44245 < shemale/MS! --- > shemale/MS 48814d44248 < sherbert/SM 48826,48827c44260 < shielded/U < shift/ZGMDRS --- > shift/GMDS 48832a44266 > shiitake/S 48834,48835d44267 < shillalah/M < shillalahs 48858c44290,44291 < ship/ALSM --- > ship's > ship/ALS 48860,48861c44293 < shipborne < shipbuilder/MS --- > shipbuilder/SM 48868d44299 < shippable 48885c44316 < shirtsleeve/MS --- > shirtsleeve/SM 48887c44318 < shirtwaist/SM --- > shirtwaist/MS 48889c44320 < shit/MS! --- > shit/SM! 48892c44323,44325 < shitload/MS! --- > shitload's > shitload/! > shitloads 48895c44328 < shitty/TR! --- > shitty/RT! 48898d44330 < shivering/Y 48900,48904d44331 < shlemiel/MS < shlep/MS < shlepp/MDSG < shlock/M < shmaltz/M 48916d44342 < shoebox 48920d44345 < shoeless 48923c44348 < shoestring/MS --- > shoestring/SM 48940d44364 < shopkeeping 48952d44375 < shoreward 48958c44381 < shortchange/GDS --- > shortchange/DSG 48965c44388 < shorthand/MDS --- > shorthand/MD 48969c44392 < shortlist/DSG --- > shortlist/DGS 48987c44410 < shovel/MDRSG --- > shovel/MDSG 48996c44419 < showery/TR --- > showery 49011c44434 < showstopper/SM --- > showstopper/MS 49026c44449 < shriek/MDRSZG --- > shriek/MDSG 49036d44458 < shrinking/Y 49069c44491 < shuttlecock/MDGS --- > shuttlecock/GMDS 49075,49076d44496 < sibilance < sibilancy 49081a44502,44503 > sicced > siccing 49095c44517,44518 < side/AGDSM --- > side's > side/AGDS 49097d44519 < sideband/S 49121d44542 < sidewards 49123,49124c44544 < sidewinder/MS < sidewise --- > sidewinder/SM 49138d44557 < sighted/P 49140c44559 < sightless/Y --- > sightless 49146,49147c44565,44566 < sigmoid < sign/AFCGDSM --- > sign's/C > sign/AFCGDS 49163d44581 < significances 49166,49167c44584,44585 < signify/XNDRSG < signing/MCS --- > signify/XDSNG > signing/CSM 49184d44601 < silicious 49199d44615 < siltstone 49207c44623,44624 < silvery/RT --- > silvery > sim/S 49223,49224c44640,44641 < simplex/S < simplicity/SM --- > simplex > simplicity/M 49226,49227c44643 < simplified/U < simplify/XDRSNG --- > simplify/DSXNG 49247d44662 < sinecurist 49267,49269c44682 < singularization < sinister/Y < sinistral --- > sinister 49283,49284c44696 < sinusoid < sinusoidal/Y --- > sinusoidal 49298d44709 < sirup/SM 49307c44718 < sit/ASG --- > sit/S 49311,49312c44722,44723 < site/MJDS < sitemap/MS --- > site/MGDS > sitemap/SM 49318,49319d44728 < situationist < situp/SM 49323d44731 < sixpenny 49328c44736 < sixth/MY --- > sixth/M 49333c44741,44743 < size/AMGBDRS --- > size's > size/AGBDRS > sizeable 49338c44748 < skateboard/ZGSMDR --- > skateboard/MDRSZG 49351d44760 < skerries 49359c44768 < skew/MDRZGPS --- > skew/MDRZGS 49372,49373c44781,44783 < skilful/Y < skill/CSDM --- > skilfully > skill's > skill/CSD 49394d44803 < skinner/S 49460c44869 < slang/MG --- > slang/M 49467c44876 < slaphappy/RT --- > slaphappy 49479c44888 < slaughter/MDRJZGS --- > slaughter/MDRZGS 49481c44890 < slaughterhouse/SM --- > slaughterhouse/MS 49503c44912 < sledgehammer/SMDG --- > sledgehammer/GSMD 49520c44929 < sleety/RT --- > sleety 49526c44935 < slender/PRYT --- > slender/PRT 49534d44942 < sliced/U 49544d44951 < slighting/Y 49546d44952 < slily 49548c44954 < slime/SM --- > slime/M 49574c44980 < slipstream/MS --- > slipstream/SM 49579d44984 < slitted 49606c45011 < slothful/PY --- > slothful/YP 49618c45023 < slovenly/TPR --- > slovenly/PTR 49622d45026 < slowish 49633c45037 < sluggish/YP --- > sluggish/PY 49639a45044 > slumdog/SM 49659a45065,45066 > slyer > slyest 49669d45075 < smalltalk 49674c45080 < smartphone/MS --- > smartphone/SM 49675a45082 > smartwatch/MS 49684,49685c45091 < smegma < smell/SMDGB --- > smell/SMDG 49691,49692d45096 < smidgeon/SM < smidgin/MS 49694c45098 < smile/DRSMG --- > smile/DSMG 49696c45100 < smiling/UY --- > smiling/Y 49713c45117 < smokescreen/MS --- > smokescreen/SM 49723c45127 < smoothie/MS --- > smoothie/M 49726c45130 < smoothy --- > smoothy/SM 49730c45134 < smoulder/GSMD --- > smoulder/GMDS 49743a45148 > smörgåsbord/MS 49756c45161,45162 < snap/USM --- > snap's > snap/US 49772c45178,45179 < snarl/USDGM --- > snarl's > snarl/USDG 49843c45250,45251 < snowboard/MDRSZG --- > snowblower/MS > snowboard/ZGMDRS 49857,49858d45264 < snowplough < snowploughs 49873d45278 < snuffly/RT 49881c45286 < so/M --- > so 49891d45295 < soaring/Y 49913,49914d45316 < sociobiology < sociocultural 49917,49918d45318 < sociolinguistic/S < sociolinguists 49920c45320 < sociologist/MS --- > sociologist/SM 49939d45338 < sofabed/SM 49956d45354 < soh 49958a45357,45358 > soigné > soignée 49961a45362 > soirée/SM 49969c45370 < sold/UR --- > sold 49979c45380 < solemnify/GDS --- > solemnify/DSG 49985d45385 < solenoidal 49990c45390 < solicitous/YP --- > solicitous/PY 50002c45402 < soliloquize/GDS --- > soliloquize/DSG 50004,50005c45404 < solipsism/MS < solipsist/S --- > solipsism/M 50010c45409 < solitude/SM --- > solitude/M 50016c45415,45416 < solute/XNM --- > solute's > solute/AXN 50018c45418 < solution/EAM --- > solution's/AE 50020c45420 < solve/ARZBGSD --- > solve/EADSG 50024c45424 < solver/M --- > solver/SM 50028c45428,45429 < sombre --- > sombre/PY > sombreness/M 50036c45437 < somersault/MDSG --- > somersault/MDGS 50045c45446 < sommelier/SM --- > sommelier/MS 50060c45461 < songwriter/MS --- > songwriter/SM 50063d45463 < sonically 50066d45465 < sonofabitch/! 50068,50069c45467,45468 < sonority/SM < sonorous/PY --- > sonority/M > sonorous/YP 50073d45471 < soonish 50079c45477 < soothsayer/SM --- > soothsayer/MS 50114c45512 < sorrowful/PY --- > sorrowful/YP 50119d45516 < sortable 50128d45524 < soubriquet/SM 50129a45526 > soufflé/SM 50134c45531 < soul/MDS --- > soul/MS 50137a45535 > soulmate/S 50138a45537,45538 > soundalike/S > soundbar/S 50140c45540,45541 < soundboard/SM --- > soundboard/MS > soundcheck/S 50145c45546 < soundproof/DGS --- > soundproof/GDS 50146a45548 > soundscape/S 50150a45553 > soupçon/MS 50153d45555 < sourceless 50173c45575 < southwest/MRZ --- > southwest/ZMR 50181c45583,45584 < sow/ASGDM --- > sow's > sow/ASGD 50185d45587 < soya/M 50189c45591 < space/DRSMZGJ --- > space/DRSMZG 50191c45593 < spaceflight/SM --- > spaceflight/MS 50202a45605,45606 > spacier > spaciest 50205c45609 < spacious/PY --- > spacious/YP 50207d45610 < spacy/RTP 50215,50216c45618 < spam/S < spamblock/S --- > spam/MS 50222d45623 < spandrels 50226c45627 < spank/SMDRGJ --- > spank/SMDGJ 50228c45629 < spanned/U --- > spanned 50239d45639 < sparkling/Y 50264,50265c45664 < speak/SRZGBJ < speakable/U --- > speak/SRZGJ 50270a45670 > speargun 50274c45674 < special/SPMRY --- > special/SMY 50284,50285c45684 < specifiably < specific/PMS --- > specific/MS 50289c45688 < specified/UA --- > specified/U 50299c45698 < spectacular/SMY --- > spectacular/MYS 50305,50312c45704,45705 < spectrogram < spectrograph < spectrometer/SM < spectrometric < spectrometry < spectrophotometer < spectrophotometry < spectroscope/SM --- > spectrometer/MS > spectroscope/MS 50314d45706 < spectroscopically 50317,50318c45709 < specular < speculate/XDSGNV --- > speculate/DSXGNV 50322d45712 < speculum 50326c45716 < speechless/PY --- > speechless/YP 50344,50345c45734,45735 < spell/BJSMDRZG < spellbind/RZGS --- > spell/JSMDRZG > spellbind/ZGRS 50348c45738,45739 < spellchecker/S --- > spellcheck/DRZGS > spellchecker/M 50350d45740 < spelled 50365c45755 < spermicide/SM --- > spermicide/MS 50379c45769 < spick/S! --- > spick/S 50384c45774 < spidery/RT --- > spidery 50389d45778 < spik/S! 50393c45782 < spill/SMDRG --- > spill/SMDG 50402d45790 < spindrift 50419c45807,45808 < spire/IFASM --- > spire's > spire/IFAS 50421c45810,45811 < spirit/ISGDM --- > spirit's > spirit/ISGD 50431c45821 < spiry/RT --- > spiry 50460a45851 > splenectomy 50470,50471d45860 < splittable < splitter/S 50479c45868,45869 < spoil/CSDRZGM --- > spoil's > spoil/CSDRZG 50486d45875 < spokeshave/S 50490c45879 < spokesperson/SM --- > spokesperson/MS 50500c45889 < sponsorship/MS --- > sponsorship/M 50537c45926 < spotlight/SGMD --- > spotlight/GSMD 50552c45941,45942 < spray/ASDGM --- > spray's > spray/ASDG 50557c45947 < spreadsheet/SM --- > spreadsheet/MS 50563,50564c45953,45954 < sprightly/RPT < spring/GSMR --- > sprightly/RTP > spring/GSM 50590d45979 < spumone/M 50592c45981 < spumy/RT --- > spumy 50598c45987 < spurious/YP --- > spurious/PY 50610d45998 < spyhole 50619d46006 < squaddie/S 50624c46011 < squally/TR --- > squally 50657c46044 < squelchy/RT --- > squelchy 50663c46050 < squiggly/RT --- > squiggly 50671a46059 > sriracha 50679d46066 < stabilizability 50689c46076 < stack/SMDRG --- > stack/SMDG 50691c46078,46079 < staff/ASDGM --- > staff's > staff/ASDG 50694d46081 < staffroom 50713c46100 < stain/SMDRG --- > stain/SMDG 50721c46108 < stakeholder/SM --- > stakeholder/MS 50724c46111 < stalagmite/SM --- > stalagmite/MS 50731c46118,46119 < stall/SDGM --- > stall's > stall/ISDG 50740c46128 < stamp/SMDRJZG --- > stamp/SMDRZG 50749,50750c46137,46138 < standardization/SM < standardize/GDS --- > standardization/M > standardize/DSG 50761c46149 < standstill/SM --- > standstill/MS 50765d46152 < stapes 50773a46161 > starburst/S 50800a46189 > startup/MS 50803c46192 < starveling/SM --- > starveling/MS 50811c46200 < statehouse/SM --- > statehouse/MS 50829c46218 < statical/Y --- > statically 50837,50838c46226 < statistician/MS < stator/S --- > statistician/SM 50850c46238 < stave/DMG --- > stave/DSMG 50862c46250 < steal/SMRHG --- > steal/SMHG 50866c46254 < stealthy/TRP --- > stealthy/TPR 50870c46258 < steamfitter/MS --- > steamfitter/SM 50882,50883c46270 < steelwork/RSZ < steelworker/M --- > steelworker/SM 50890,50891c46277,46278 < steeplechase/MRS < steeplejack/MS --- > steeplechase/MS > steeplejack/SM 50902d46288 < stellated 50911c46297 < stenographer/MS --- > stenographer/SM 50914c46300,46301 < stent/MS --- > stenosis > stent/SM 50917c46304 < stepbrother/MS --- > stepbrother/SM 50919,50921c46306,46309 < stepchildren < stepdaughter/MS < stepfather/MS --- > stepchildren/M > stepdad/MS > stepdaughter/SM > stepfather/SM 50922a46311 > stepmom/MS 50927,50928c46316,46317 < steppingstone/MS < stepsister/SM --- > steppingstone/SM > stepsister/MS 50930,50931d46318 < stepwise < steradians 50933d46319 < stereographic 50937,50938d46322 < stereoscopically < stereoscopy 50940c46324 < stereotypical/Y --- > stereotypical 50943c46327 < sterilization/MS --- > sterilization/SM 50945d46328 < sterilized/U 50955c46338 < stethoscope/SM --- > stethoscope/MS 50968,50969c46351 < sticking/U < stickleback/MS --- > stickleback/SM 50985c46367 < stigmatize/DSG --- > stigmatize/GDS 50988c46370,46371 < still/ITGSDM --- > still's > still/ITGSD 50998d46380 < stimulated/U 51000,51001d46381 < stimulator < stimulatory 51022c46402 < stirred/U --- > stirred 51026c46406,46407 < stitch/ADSGM --- > stitch's > stitch/ADSG 51031c46412,46413 < stock/AGSDM --- > stock's > stock/AGSD 51041c46423 < stocking/SMD --- > stocking/SM 51066d46447 < stoma 51071d46451 < stomata 51073,51074c46453 < stone/DSMG < stoneless --- > stone/DRSMZG 51075a46455 > stoner/M 51080d46459 < stoney 51090c46469,46470 < stop/USM --- > stop's > stop/US 51094d46473 < stopoff 51104,51107c46483,46487 < store/ADSGM < storefront/SM < storehouse/SM < storekeeper/MS --- > store's > store/ADSG > storefront/MS > storehouse/MS > storekeeper/SM 51110c46490 < storm/ZGSMDR --- > storm/GSMD 51113d46492 < stormtroopers 51116c46495 < storyboard/SM --- > storyboard/MS 51118,51119c46497 < storyline < storyteller/SM --- > storyteller/MS 51136c46514 < straight/SXTPMNRY --- > straight/SPXTMNRY 51141c46519 < straightforward/SYP --- > straightforward/YPS 51143d46520 < straightjacket/SM 51146c46523,46524 < strain/FADSGM --- > strain's > strain/FADSG 51150c46528 < straitjacket/SMDG --- > straitjacket/SGMD 51159c46537 < strangulate/DSGN --- > strangulate/GNDS 51161c46539,46540 < strap/USM --- > strap's > strap/US 51170c46549 < strategist/MS --- > strategist/SM 51175,51177c46554 < stratigraphic < stratigraphical < stratosphere/MS --- > stratosphere/SM 51179d46555 < stratospherically 51190c46566 < streamline/GDS --- > streamline/DSG 51194,51195c46570,46571 < streetlight/MS < streetwalker/MS --- > streetlight/SM > streetwalker/SM 51198c46574 < strengthen/AGSD --- > strengthen/AGDS 51210c46586 < stressful/P --- > stressful 51212,51213d46587 < stretchability < stretchable/U 51216c46590 < stretchy/TRP --- > stretchy/TR 51228c46602 < stride/MGRS --- > stride/MGS 51234c46608 < strikebreaker/MS --- > strikebreaker/SM 51254c46628 < stripy/RT --- > stripy 51264d46637 < stromatolites 51266d46638 < strongbow 51269d46640 < strongish 51286c46657,46658 < structure/AGDSM --- > structure's > structure/AGDS 51288d46659 < structureless 51298d46668 < strutter 51305c46675 < stubbly/TR --- > stubbly 51320d46689 < studier/S 51322c46691 < studious/YP --- > studious/PY 51325,51326c46694,46696 < study/AGDSM < stuff/GSMDR --- > study's > study/AGDS > stuff/GSMD 51335d46704 < stumbling/Y 51349d46717 < stupefying/Y 51362c46730,46731 < style/ADSGM --- > style's > style/ADSG 51369d46737 < stylization 51372c46740 < stymie/M --- > stymie/MDS 51374d46741 < stymy/DSM 51376d46742 < styrene 51387c46753 < subbasement/MS --- > subbasement/SM 51392,51393c46758 < subclass/S < subclauses --- > subclass 51401,51403c46766,46767 < subcontractor/SM < subcultural < subculture/SM --- > subcontractor/MS > subculture/MS 51406,51408c46770,46771 < subdivision/MS < subducted < subduction --- > subdivision/SM > subdominant 51410d46772 < subdued/U 51415d46776 < subharmonic/S 51427,51428c46788 < subjunctive/MS < sublayer --- > subjunctive/SM 51438c46798 < sublunary --- > sublingual 51448c46808,46809 < submission/ASM --- > submission's/A > submission/MS 51452d46812 < submittable 51454c46814 < submitter/S --- > submitter 51457d46816 < suboptimal 51460c46819 < subordinate/MGNDS --- > subordinate/DSMGN 51464c46823 < subpena/GMDS --- > subparagraph 51466a46826 > subprime 51469c46829 < subroutine/MS --- > subroutine/SM 51471c46831 < subscriber/SM --- > subscriber/MS 51473c46833 < subscription/SM --- > subscription/MS 51485d46844 < subsidized/U 51492c46851 < subspace/S --- > subspace 51497c46856 < substantiate/XGNDS --- > substantiate/GNDSX 51503,51504c46862 < substitute/MGNBXDS < substituted/U --- > substitute/XMGNDS 51510a46869 > subsumption/S 51523c46882 < subtly/U --- > subtly 51526c46885 < subtract/GVSD --- > subtract/GSD 51528d46886 < subtractive/Y 51533,51534d46890 < subtype/S < subunit/S 51538d46893 < suburbanization 51550c46905 < succession/MS --- > succession/SM 51565c46920 < suck/MDRZGSB --- > suck/MDRZGS 51571d46925 < sud/S 51590d46943 < suffocating/Y 51594c46947 < suffragette/MS --- > suffragette/SM 51600c46953 < sugarcoat/DGS --- > sugarcoat/GDS 51604c46957 < suggest/ZGVSDR --- > suggest/GVSDR 51608c46961 < suggestive/PY --- > suggestive/YP 51610,51611c46963 < sugillate < suicidal/Y --- > suicidal 51614d46965 < suitabilities 51616d46966 < suitable/UP 51627a46978 > sulfonamides 51639,51640d46989 < sulphate/S < sulphide/S 51649,51651d46997 < sumach/M < summability < summable 51653c46999 < summarize/ZGDRS --- > summarize/GDS 51659c47005 < summerhouse/MS --- > summerhouse/SM 51661c47007 < summery/RT --- > summery 51665c47011 < summon/JDRSZG --- > summon/DRSZG 51685d47030 < suncream 51716d47060 < sunspots/S 51725c47069 < superabundance/SM --- > superabundance/MS 51738d47081 < supercomputing 51743,51745d47085 < supercooled < supercooling < superdense 51752,51754c47092,47093 < superfix < superfluity/SM < superfluous/PY --- > superfluity/M > superfluous/YP 51758d47096 < superheat/D 51761c47099 < superhighway/MS --- > superhighway/SM 51763c47101 < superimpose/DSG --- > superimpose/GDS 51765c47103 < superintend/SGD --- > superintend/DSG 51771c47109 < superlative/MYS --- > superlative/SMY 51773c47111 < supermarket/MS --- > supermarket/SM 51775c47113 < supermodel/S --- > supermodel/SM 51778,51779c47116 < supernatant < supernatural/YS --- > supernatural/SY 51783d47119 < superordinate 51785,51786c47121,47122 < superposition/SM < superpower/MS --- > superposition/M > superpower/SM 51792a47129 > supersize/GDS 51794d47130 < supersonically 51797c47133 < superstition/SM --- > superstition/MS 51799,51801c47135,47137 < superstore/SM < superstructure/SM < supertanker/SM --- > superstore/MS > superstructure/MS > supertanker/MS 51805c47141 < supervise/GNXDS --- > supervise/XGNDS 51808c47144 < supervisor/SM --- > supervisor/MS 51819c47155 < supplement/GMDS --- > supplement/MDGS 51829c47165 < supply/ZGXDRSMN --- > supply/ZGDRSMXN 51831,51832c47167 < supportability < supportable/IU --- > supportable/UI 51837c47172 < supposition/SM --- > supposition/MS 51839c47174 < suppress/GVDS --- > suppress/GDS 51841d47175 < suppressed/U 51844c47178 < suppressor/MS --- > suppressor/SM 51849c47183 < supremacist/SM --- > supremacist/MS 51851,51852c47185 < supremal < supreme/YTR --- > supreme/Y 51858d47190 < surd 51865,51868c47197,47199 < surface/AGDSM < surfaced/U < surfactant/S < surfboard/MDGS --- > surface's > surface/AGDS > surfboard/MDSG 51876d47206 < surlily 51890d47219 < surprised/U 51897,51899c47226,47227 < surreality < surrender/GMDS < surreptitious/YP --- > surrender/MDSG > surreptitious/PY 51910c47238,47239 < survey/ADGSM --- > survey's > survey/ADGS 51913,51914d47241 < survivability < survivable/U 51916c47243 < survivalist/MS --- > survivalist/SM 51935d47261 < sustainably 51952c47278 < swallow/GSMDR --- > swallow/GSMD 51957c47283 < swampland/MS --- > swampland/M 51969d47294 < swappable/U 51971d47295 < swapper/S 51997d47320 < sweatily 52000c47323 < sweatshirt/MS --- > sweatshirt/SM 52005c47328 < sweep/ZGSMRBJ --- > sweep/ZGSMRJ 52009d47331 < sweepstake/SM 52019c47341 < sweetheart/MS --- > sweetheart/SM 52024d47345 < sweetshop 52031a47353 > swerving/U 52053c47375 < swirly/RT --- > swirly 52055d47376 < swishy 52057,52059c47378,47380 < switchback/SM < switchblade/MS < switchboard/MS --- > switchback/MS > switchblade/SM > switchboard/SM 52061,52062d47381 < switchgear < switchover 52067,52069d47385 < swob/MS < swobbed < swobbing 52074,52076d47389 < swop/MS < swopped < swopping 52096,52097d47408 < sycophantically < syllabary 52100c47411 < syllabicate/DSGN --- > syllabicate/GNDS 52114d47424 < symbiont 52123d47432 < symbolist 52126c47435 < symmetric --- > symmetric/Y 52128,52129d47436 < symmetrization < symmetrizing 52138d47444 < symphonists 52144,52146c47450 < symptomless < syn < synagog/MS --- > syn/H 52152c47456 < synch/GMDS --- > synches 52154,52155c47458,47459 < synchronization/MS < synchronize/ADSG --- > synchronization/SM > synchronize/GDS 52157,52158d47460 < synchrony < synchrotron 52176,52177c47478 < synonymic < synonymous/Y --- > synonymous 52181d47481 < synopsizes 52182a47483 > synovial 52186c47487 < synthase/MS --- > synthase/SM 52192a47494 > synths 52199c47501 < sysop/MS --- > sysop/SM 52208a47511 > séance/SM 52226c47529 < tablespoonful/MS --- > tablespoonful/SM 52233d47535 < tabu/GMDS 52242c47544 < tachyon/S --- > tachyon 52264d47565 < tactual 52271c47572 < tagged/U --- > tagged 52284c47585 < tailless/P --- > tailless 52286c47587 < tailor/SGBMD --- > tailor/SGMD 52290d47590 < tailplane 52296d47595 < takeable 52308c47607 < talebearer/SM --- > talebearer/MS 52311d47609 < talentless 52315c47613 < talkative/YP --- > talkative/PY 52360c47658,47659 < tangle/UDSGM --- > tangle's > tangle/UDSG 52371c47670 < tannin/SM --- > tannin/M 52399c47698 < tarantella/SM --- > tarantella/MS 52432a47732 > taser/GMDS 52453c47753 < tatterdemalion/SM --- > tatterdemalion/MS 52476d47775 < taverna/S 52484d47782 < taxed/U 52488c47786 < taxidermist/MS --- > taxidermist/SM 52491d47788 < taxing/U 52511d47807 < teacloth 52517c47813 < tealeaves --- > tealight/MS 52526c47822 < tearful/PY --- > tearful/Y 52530,52531c47826 < tearjerker/SM < tearless --- > tearjerker/MS 52537d47831 < teashop/S 52540c47834 < teaspoonful/MS --- > teaspoonful/SM 52543,52544d47836 < teazel/S < teazle/S 52550c47842 < technician/MS --- > technician/SM 52553a47846 > technobabble 52560d47852 < technophiles 52562,52563d47853 < technophobia < technophobic 52566d47855 < tectonically 52577c47866 < teenage/DRZ --- > teenage/RZ 52579d47867 < teensy/RT 52586d47873 < teethmarks 52594,52595c47881,47882 < telecom/MS < telecommunication/SM --- > telecom/M > telecommunication/MS 52597c47884 < telecommute/DRSZG --- > telecommute/ZGDRS 52600d47886 < telecoms 52632c47918 < teleport/SGD --- > teleport/DSG 52634c47920 < teleprinter/SM --- > teleprinter/MS 52646c47932 < televangelist/SM --- > televangelist/MS 52649d47934 < televisual 52663c47948 < temper/ESMD --- > temper/MDG 52670,52672c47955 < temperature/MS < tempered/U < tempering --- > temperature/SM 52676c47959,47961 < template/SM --- > tempi > template's > template/S 52686c47971 < temptation/SM --- > temptation/MS 52703c47988 < tend/IEFDGS --- > tend/IFEDGS 52709,52710c47994,47995 < tenderfoot/SM < tenderhearted/YP --- > tenderfoot/MS > tenderhearted/PY 52725c48010 < tenon/SM --- > tenon/SMDG 52733,52734d48017 < tensional < tensioned 52753c48036 < terabit/MS --- > terabit/SM 52759c48042 < tercentennial/MS --- > tercentennial/SM 52766,52767c48049 < terminated/U < termination/CMS --- > termination/CSM 52776d48057 < terpsichorean 52780d48060 < terraform/D 52785c48065 < terrestrial/MYS --- > terrestrial/SMY 52795c48075 < territorial/SMY --- > territorial/MS 52806,52807c48086,48087 < tertiary/S < tessellate/XDSGN --- > tertiary > tessellate/DSXGN 52809,52812c48089,48091 < tesseral < test/AKFCDGSM < testability < testable/UF --- > test's/AFK > test/AKFCDGS > testable/CF 52819,52820d48097 < testbed/S < testcard 52823c48100 < tester/KMS --- > tester/KSM 52830c48107 < testimonial/SM --- > testimonial/MS 52836c48113 < testsuite/MS --- > testsuite/SM 52842d48118 < tethered/U 52844d48119 < tetrachloride 52847,52848c48122,48123 < tetrahedron/SM < tetrameter/MS --- > tetrahedron/MS > tetrameter/SM 52851c48126,48127 < textbox/SM --- > textbox/MS > texted 52852a48129 > texting 52854,52856c48131,48132 < textural/Y < texture/MDS < textured/U --- > textural > texture/MGDS 52865,52867c48141 < thankful/PY < thankfuller < thankfullest --- > thankful/YP 52871c48145 < thanksgiving/MS --- > thanksgiving/SM 52876d48149 < thaumaturge 52892d48164 < themas 52906d48177 < theologists 52911c48182 < theoretician/MS --- > theoretician/SM 52917c48188 < theosophist/MS --- > theosophist/SM 52934c48205 < theremin/MS --- > theremin/SM 52939d48209 < thereunder 52946,52948d48215 < thermistor/S < thermochemical < thermocouple/S 52950d48216 < thermodynamical/Y 52952,52954c48218 < thermoelectric < thermoluminescence < thermometer/SM --- > thermometer/MS 52957,52959c48221 < thermophile/S < thermophilic < thermoplastic/MS --- > thermoplastic/SM 52976d48237 < thiamin/M 52991c48252 < thievish/P --- > thievish 52996c48257 < thimbleful/MS --- > thimbleful/SM 53008c48269 < thinking/M --- > thinking's 53014d48274 < thinnish 53048c48308 < thoughtful/PY --- > thoughtful/YP 53073d48332 < threepenny 53099a48359 > thrombolytic 53104c48364,48365 < throne/CDSM --- > throne's > throne/S 53111c48372 < throughway/SM --- > throughway/MS 53117d48377 < throwout 53123c48383 < thrust/ZGSMR --- > thrust/GSM 53140,53142c48400,48402 < thunderbolt/MS < thunderclap/MS < thundercloud/SM --- > thunderbolt/SM > thunderclap/SM > thundercloud/MS 53144,53145c48404 < thunderflashes < thunderhead/MS --- > thunderhead/SM 53148c48407 < thunderstorm/MS --- > thunderstorm/SM 53160d48418 < thyristor/S 53176c48434 < ticklish/PY --- > ticklish/YP 53188d48445 < tideless 53196c48453,48454 < tie/AUSDM --- > tie's > tie/AUSD 53214d48471 < tike/MS 53217c48474 < tile/MZGJDRS --- > tile/MZGDRS 53220c48477,48478 < till/EDRZGSM --- > till's > till/EDRZGS 53225c48483 < timber/SMD --- > timber/SMDG 53227c48485 < timberline/SM --- > timberline/MS 53231d48488 < timebase 53243c48500 < timeserver/MS --- > timeserver/SM 53246,53247d48502 < timestamped < timestamps 53250c48505 < timezone/S --- > timezone 53255c48510 < timorous/YP --- > timorous/PY 53271d48525 < tingly/RT 53276d48529 < tinkly 53278d48530 < tinnily 53289c48541 < tintinnabulation/SM --- > tintinnabulation/MS 53294d48545 < tipi/MS 53310c48561,48563 < tire/AGDSM --- > tiramisu/MS > tire's > tire/AGDS 53313c48566 < tireless/PY --- > tireless/YP 53317d48569 < tiro/M 53319c48571 < tit/SZMR --- > tit/SM 53322d48573 < titanically 53324d48574 < titbit/SM 53336,53338c48586,48587 < titled/UA < titleholder/SM < titling/A --- > titled/U > titleholder/MS 53342,53343d48590 < titrated < titration 53345c48592,48593 < tittivate/DSG --- > tittivate/DSGN > tittivation/M 53355,53356d48602 < toadded < toadding 53362c48608 < toastmaster/MS --- > toastmaster/SM 53366c48612 < tobacconist/MS --- > tobacconist/SM 53378d48623 < toeclip/S 53385d48629 < toffy/SM 53389d48632 < toge 53439c48682,48683 < tone/IZGDRSM --- > tone's > tone/IZGDRS 53458,53459c48702,48704 < tool/ADGSM < toolbar/MS --- > tool's > tool/ADGS > toolbar/SM 53463d48707 < toolmaking 53471,53472c48715 < toothmarks < toothpaste/MS --- > toothpaste/SM 53481c48724 < topdressing/MS --- > topdressing/SM 53494c48737 < topographer/MS --- > topographer/SM 53499,53500c48742 < topologist/S < topology/S --- > topology 53516d48757 < torchlit 53519,53521c48760 < tori < torment/SMDRZG < tormenter/M --- > torment/SMDG 53527,53528d48765 < toroid < toroidal 53537c48774 < torrid/RYPT --- > torrid/YP 53540,53541c48777 < tors/S < torsion/SM --- > torsion/M 53544c48780,48781 < tort/FEASM --- > tort's > tort/EFAS 53546c48783 < tortellini/SM --- > tortellini/M 53549c48786 < tortoiseshell/MS --- > tortoiseshell/SM 53560c48797 < tot/SGMDR --- > tot/SGMD 53562c48799 < totalitarian/MS --- > totalitarian/SM 53565,53566c48802 < totalizator/MS < totalizing --- > totalizator/SM 53584c48820 < touchscreen/SM --- > touchscreen/MS 53586a48823 > touché 53595d48831 < tourer/S 53601c48837 < tournament/MS --- > tournament/SM 53639,53640d48874 < toymaker < toyshop 53641a48876,48878 > trabecula > trabecular > trabecule 53643d48879 < traceability 53645d48880 < traceless 53655c48890 < trackback/MS --- > trackback/SM 53657d48891 < trackbed 53661,53662c48895,48896 < trackway/S < tract/CEKFASM --- > tract's > tract/CEKFAS 53666c48900 < traction/EFACKM --- > traction/FEACKM 53670,53671c48904 < trademark/SMDG < tradeoff/MS --- > trademark/SGMD 53693c48926 < tragical/Y --- > tragically 53700c48933 < train/ZGSMDRBJ --- > train/ZGSMDRB 53726,53727c48959 < trampoline/DSMG < trampolinist --- > trampoline/MGDS 53733c48965 < tranquilize/DRSZG --- > tranquilize/ZGDRS 53735,53736c48967 < tranquillize/DRSZG < tranquillizer/M --- > tranquillity/M 53740d48970 < transactional 53744c48974 < transcend/SGD --- > transcend/GSD 53747c48977 < transcendental/SY --- > transcendental/Y 53749c48979 < transcendentalist/MS --- > transcendentalist/SM 53754,53757c48984,48985 < transcription/MS < transcriptional < transducer/SM < transduction --- > transcription/SM > transducer/MS 53760,53762c48988,48989 < transfect/DSMG < transfer/MSB < transferability --- > transfect/SGD > transfer/MBS 53764d48990 < transferee/S 53770c48996 < transfinite/Y --- > transfinite 53772,53775c48998,48999 < transform/SMDRZGB < transformation/MS < transformational < transformed/U --- > transform/BSZGMDR > transformation/SM 53777c49001 < transfuse/DSGNX --- > transfuse/DSXGN 53779c49003 < transgender/MDS --- > transgender/SD 53781c49005 < transgene/MS --- > transgene/S 53783,53784c49007,49008 < transgress/GVDS < transgression/MS --- > transgress/GDS > transgression/SM 53786d49009 < transhipment 53790c49013 < transistor/MS --- > transistor/SM 53793c49016 < transition/MDGS --- > transition/GSMD 53795c49018 < transitive/IMYS --- > transitive/ISMY 53801c49024 < translate/BXDSGN --- > translate/DSGNBX 53804,53806c49027,49028 < translational < translator/MS < transliterate/GNXDS --- > translator/SM > transliterate/DSGNX 53807a49030 > translocation 53811c49034 < transmigrate/DSGN --- > transmigrate/GNDS 53814,53816c49037,49039 < transmission/ASM < transmissive < transmit/AS --- > transmission's/A > transmission/MS > transmit/S 53820,53822c49043,49045 < transmitted/A < transmitter/MS < transmitting/A --- > transmitted > transmitter/SM > transmitting 53824,53827c49047,49050 < transmogrify/NGDS < transmutation/MS < transmute/DSBG < transnational/SM --- > transmogrify/DSNG > transmutation/SM > transmute/BDSG > transnational/MS 53830d49052 < transonic 53836c49058 < transplant/GMDS --- > transplant/MDGS 53840,53842c49062 < transport/SZGBMDR < transportability < transportable/U --- > transport/BSZGMDR 53846,53848c49066,49067 < transposition/SM < transputer/S < transsexual/MS --- > transposition/MS > transsexual/SM 53850c49069 < transship/LS --- > transship/SL 53855c49074 < transverse/SMY --- > transverse/MYS 53864c49083 < trappable/U --- > trappable 53891c49110 < treacherous/YP --- > treacherous/PY 53897d49115 < treader 53905d49122 < treasurership 53908c49125 < treatable/U --- > treatable 53927,53928c49144 < tremble/DSJMG < trembling/Y --- > tremble/DSMG 53934c49150,49151 < trench/AIGSDM --- > trench's > trench/ADSG 53946,53947c49163 < trepanned < trepidation/SM --- > trepidation/M 53955d49170 < triadic 53960,53961d49174 < trialled < trialling 53963d49175 < triangulable 53965c49177 < triangulate/XDSGN --- > triangulate/GNDS 53969,53970c49181 < triatomic < tribal/Y --- > tribal 53977c49188 < tribulation/MS --- > tribulation/SM 53981c49192,49193 < tribute/FSM --- > tribute's > tribute/FS 53983c49195 < tricentennial/SM --- > tricentennial/MS 54002,54003c49214 < trifecta/S < triffid/S --- > trifecta/SM 54009,54010c49220 < triggest < triglyceride/SM --- > triglyceride/MS 54014d49223 < trigram/S 54018d49226 < trilingual 54035d49242 < trimodal 54044d49250 < triplane 54048c49254 < triplicate/MGNDS --- > triplicate/MGDS 54051c49257 < tripos/S --- > tripos 54061d49266 < trisector 54079c49284 < trivialization/SM --- > trivialization/M 54085c49290 < trodden/AU --- > trodden/A 54091d49295 < trollish 54093d49296 < trolly/SM 54098,54099d49300 < tronned < tronning 54109,54111c49310 < tropopause < troposphere/MS < tropospheric --- > troposphere/SM 54120,54121c49319,49320 < troublemaker/SM < troubleshoot/ZGDRS --- > troublemaker/MS > troubleshoot/DRZGS 54162c49361 < truncate/GNXDS --- > truncate/GNDS 54168d49366 < trunnion/S 54170,54171c49368 < trust/IESGDM < trusted/U --- > trust/ESGMD 54176c49373 < trustingly --- > trusting/Y 54178c49375 < trustworthy/PTR --- > trustworthy/TPR 54181c49378 < truthful/UPY --- > truthful/UYP 54182a49380 > truthiness 54184c49382,49383 < try/AGDSM --- > try's > try/AGDS 54188,54190c49387 < tsarina/MS < tsarism < tsarist/S --- > tsarists 54197d49393 < tubae 54243,54244c49439 < tumulus < tun/SZGMDRBJ --- > tun/SZGMDR 54258c49453,49454 < tuppence/S --- > tuple/S > tuppence 54275c49471 < turducken --- > turducken/SM 54278c49474 < turfy/RT --- > turfy 54289d49484 < turned/U 54334c49529 < twee/DP --- > twee 54350a49546 > twerk/SDG 54353,54354c49549,49550 < twiddle/MGDRS < twiddly/RT --- > twiddle/MGDS > twiddly 54375,54376c49571,49573 < twirly/TR < twist/USDGM --- > twirly > twist's > twist/USDG 54397a49595 > tympanic 54400c49598,49599 < type/AGDSM --- > type's > type/AGDS 54402d49600 < typed/U 54404d49601 < typeless 54407c49604 < typesetter/SM --- > typesetter/MS 54424c49621 < typographer/MS --- > typographer/SM 54428d49624 < typological/Y 54432d49627 < tyrannicide 54434c49629 < tyrannosaur/SM --- > tyrannosaur/MS 54440,54444d49634 < tyrosine < tzar/MS < tzarina/SM < tzarism < tzarist/S 54452d49641 < uglification 54457d49645 < ukelele/SM 54460c49648 < ulcerate/XDSGN --- > ulcerate/DSGN 54475c49663 < ultralight/MS --- > ultralight/SM 54478,54479c49666 < ultramontane < ultrasonic/S --- > ultrasonic 54493d49679 < umbrageous 54504d49689 < unaccountability 54506d49690 < unadaptive 54510d49693 < unambiguity 54519d49701 < unattainably 54526,54527d49707 < unbiased/Y < unbiassedly 54529a49710 > unblushing/Y 54532d49712 < unbreakability 54538d49717 < uncatalogued 54540d49718 < unchallengeable 54543d49720 < uncharismatic 54546d49722 < uncheckable 54552,54553c49728 < unclench/D < uncollimated --- > uncomfortable 54555c49730 < uncommunicative --- > uncomplaining/Y 54558d49732 < uncompromisable 54561d49734 < unconfused 54562a49736 > unconscionable 54566d49739 < uncontentious 54567a49741 > uncontroversial 54570,54572c49744 < uncouth/YP < uncreative < uncross/B --- > uncouth/Y 54579d49750 < undead 54584c49755 < underachieve/ZGLDRS --- > underachieve/LZGDRS 54587a49759 > underappreciated 54594c49766 < undercharge/DSMG --- > undercharge/MGDS 54600c49772 < undercoat/JGSMD --- > undercoat/GJSMD 54602d49773 < undercooked 54611,54612d49781 < undereducated < underemphasis 54615c49784 < underestimate/MGNXDS --- > underestimate/DSMGNX 54617,54618c49786 < underexploited < underexpose/DSG --- > underexpose/GDS 54621c49789 < underfeed/SG --- > underfeed/GS 54625,54626c49793 < underframe < underfund/GD --- > underfunded 54633,54634c49800,49801 < undergraduate/MS < underground/SM --- > undergraduate/SM > underground/MS 54637c49804 < underhanded/YP --- > underhanded/PY 54639d49805 < underinvestment 54643c49809 < underline/MGJDS --- > underline/MGDS 54646d49811 < underloaded 54661,54662c49826 < underpayment/MS < underperformed --- > underpayment/SM 54665c49829 < underpinning/SM --- > underpinning/MS 54668,54670d49831 < underpopulation < underpowered < underpricing 54677d49837 < undersealed 54679c49839 < undersell/SG --- > undersell/GS 54686c49846 < undersign/DSG --- > undersign/DGS 54688c49848 < undersize/D --- > undersized 54691,54694d49850 < underspecification < underspecified < underspend/G < underspent 54696,54697c49852 < understand/RGSBJ < understandability --- > understand/SGBJ 54700c49855 < understate/GDSL --- > understate/DSLG 54702d49856 < understocked 54704,54708c49858,49859 < understorey < understory < understrength < understudy/DSMG < undertake/ZGRSJ --- > understudy/GDSM > undertake/ZGJRS 54717d49867 < underusing 54720c49870 < undervalue/GDS --- > undervalue/DSG 54726,54728c49876,49879 < underwhelm/SDG < underworld/SM < underwrite/RSZG --- > underwhelm/DGS > underwire/DS > underworld/MS > underwrite/ZGRS 54732c49883 < undesirable/SM --- > undesirable/MS 54734,54735d49884 < undiscerning < undisguised/Y 54740,54741d49888 < undrinkability < undroppable 54756d49902 < unergonomic 54759,54760c49905 < uneven/RYPT < unexacting --- > uneven/Y 54764c49909 < unexpected/PY --- > unexpected/YP 54774d49918 < unfetchable 54784d49927 < unfocussed 54787a49931 > unfriend/GD 54791d49934 < unfulfillable 54793d49935 < unfussy 54795c49937,49938 < ungainly/RTP --- > ungainly/RPT > ungenerous 54797d49939 < unglamorous 54808d49949 < unheroic 54816,54817d49956 < unicyclist/S < unideal 54819d49957 < unifiable 54821,54822c49959 < unifier < uniform/SMDRYTG --- > uniform/SMDYG 54827,54828d49963 < unilateralist < unimportance 54830a49966 > uninformative 54831a49968 > uninstall/BSZGDR 54833d49969 < unintellectual 54838d49973 < unintuitive 54843d49977 < unipolar 54857d49990 < universalism 54862,54863c49995 < unixism/S < unjam --- > unjust/Y 54867d49998 < unknightly 54873d50003 < unlikeable 54875d50004 < unlink/D 54882c50011 < unmanageably --- > unman/S 54884d50012 < unmannerly 54887,54888d50014 < unmeetable < unmelodious 54895,54897d50020 < unmistakeable < unmistakeably < unmnemonic 54900c50023 < unmusical/Y --- > unmusical 54903,54904d50025 < unobjectionable < unobservable 54909,54912d50029 < unoriginality < unorthodoxy < unpack/Z < unparallelled 54916d50032 < unphysical 54920,54921d50035 < unploughed < unpoetical 54924d50037 < unportable 54929d50041 < unpronounced 54931,54932d50042 < unpunctual < unpunctuality 54935d50044 < unraisable 54937,54938c50046 < unreadability < unready/TR --- > unready 54941d50048 < unreceptive 54948c50055 < unrepeated --- > unrepentant 54951d50057 < unresisting/Y 54953d50058 < unriddle 54959,54961c50064 < unsafe/T < unsaleable < unsatisfactory/P --- > unsafe/YTR 54963,54966c50066 < unseal/B < unsearchable < unseasonal < unseaworthiness --- > unscathed 54969,54971c50069 < unseen/MS < unselfconscious/Y < unsellable --- > unseen/M 54973a50072 > unshakable 54974a50074 > unshakeable 54975a50076 > unshockable 54977,54978d50077 < unshrinking < unsighted 54980,54981c50079,50080 < unsightly/TP < unskilful --- > unsightly/PT > unsmiling 54984c50083 < unsophistication --- > unsold 54985a50085 > unspeakable 54989d50088 < unspoilt 54991,54994c50090,50091 < unstable/RT < unstack/DG < unstamped < unsteady/PTR --- > unstable > unsteady/TRP 54996d50092 < unstoppably 55000c50096,50097 < unsure/P --- > unsuitable > unsure 55002d50098 < unswerving/Y 55005d50100 < untenability 55008d50102 < unthoughtful 55013c50107 < untouchable/SM --- > untouchable/MS 55017d50110 < unusably 55020d50112 < unvarying/Y 55022d50113 < unwarrantably 55023a50115 > unwavering 55025d50116 < unwedge 55030,55031d50120 < unwind/B < unwisdom 55035c50124 < unwound/D --- > unwound 55045d50133 < updatability 55050,55051c50138 < upgrade/MGDSBJ < upgradeable --- > upgrade/MGDS 55057,55058c50144,50145 < upholster/ASDG < upholsterer/SM --- > upholster/ASGD > upholsterer/MS 55080d50166 < uprate/DG 55113d50198 < upwelling 55122c50207 < urbanologist/SM --- > urbanologist/MS 55133,55134c50218 < urethritis < urge/MGDSJ --- > urge/MGDS 55156,55157d50239 < useability/M < useable 55168c50250,50251 < usual/UYM --- > usual's > usual/UY 55187c50270 < utter/SDRYTG --- > utter/SDYG 55189a50273 > uveitis 55200c50284 < vacationist/MS --- > vacationist/SM 55215c50299 < vagina/MS --- > vagina/SM 55221a50306 > vagus 55228c50313 < valediction/SM --- > valediction/MS 55241d50325 < validated/U 55243a50328 > validator/S 55253c50338,50339 < value/CAGSDM --- > value's > value/CAGSD 55271d50356 < vanishing/Y 55276d50360 < vanquished/U 55278a50363 > vape/GDS 55287c50372 < vaporware/S --- > vaporware 55295,55296c50380,50381 < variant/ISM < variate/NXS --- > variant/MS > variate/NX 55298d50382 < variational 55312a50397 > varying/U 55315a50401 > vasoconstriction 55333,55334d50418 < vectorization < vectorized 55338c50422 < veg/M --- > veg/SM 55339a50424 > veganism 55347d50431 < vegetational 55358c50442,50443 < veil/UDGSM --- > veil's > veil/UDGS 55363d50447 < veldt/SM 55368d50451 < velor 55371,55373c50454,50456 < velvet/MS < velveteen/MS < velvety/TR --- > velvet/M > velveteen/M > velvety 55377,55378c50460 < vend/DRZGS < vender/KM --- > vend/DGS 55388d50469 < venetian 55398c50479,50480 < vent/DGSM --- > vent's > vent/DGS 55400d50481 < ventilated/U 55402,55403c50483,50484 < ventilator/MS < ventral/Y --- > ventilator/SM > ventral 55410c50491 < venturesome/YP --- > venturesome/PY 55412c50493 < venturous/YP --- > venturous/PY 55427c50508 < verbose/YP --- > verbose/Y 55432c50513 < verdigris/MDSG --- > verdigris/GMDS 55434c50515,50516 < verge/FDSGM --- > verge's > verge/FDSG 55436d50517 < verifiability 55440c50521 < verify/DRSNXZG --- > verify/DSNG 55450d50530 < vermillion/M 55454c50534 < vernacular/SM --- > vernacular/MS 55459a50540 > versa 55464d50544 < versicle 55467c50547 < versify/NZGDRS --- > versify/ZGNDRS 55468a50549,50550 > versioned > versioning 55470a50553 > vert/A 55488c50571,50572 < vest/ILDGSM --- > vest's > vest/ILDGS 55490d50573 < vestibular 55502c50585 < veterinarian/SM --- > veterinarian/MS 55529d50611 < vibrational/Y 55546c50628 < vicinity/SM --- > vicinity/M 55553d50634 < victimless 55558a50640 > vicuña/MS 55564d50645 < videodisk/MS 55567c50648 < videotex/S --- > videotex 55569c50650 < view/AMDRBSZG --- > view/AMDRSZG 55572c50653 < viewfinder/MS --- > viewfinder/SM 55583c50664 < vignettist/SM --- > vignettist/MS 55599d50679 < ville 55607d50686 < vindaloos 55614c50693 < vinegar/SM --- > vinegar/M 55636c50715 < violoncello/SM --- > violoncello/MS 55649c50728 < virologist/MS --- > virologist/SM 55651a50731 > virtualization 55653d50732 < virtuosic 55665,55666c50744 < viscid/I < viscometer --- > viscid 55675c50753 < visibility/ISM --- > visibility/IM 55680,55681c50758,50759 < visit/ASGDM < visitable/U --- > visit's > visit/ASGD 55684d50761 < visited/U 55689c50766 < visualization/MS --- > visualization/SM 55703c50780 < viticulturist/SM --- > viticulturist/MS 55734,55735d50810 < vizir/SM < vizor/SM 55749c50824 < vociferous/PY --- > vociferous/YP 55752d50826 < voe/S 55758a50833 > voicemail/M 55762,55763c50837,50839 < vol < volatile/S --- > voilà > vol/S > volatile 55767,55768d50842 < volcanically < volcanism 55778c50852 < volleyball/SM --- > volleyball/MS 55787,55788c50861 < volumetric < voluminous/PY --- > voluminous/YP 55806d50878 < vorticity 55808c50880,50881 < vote/CGVDSM --- > vote's > vote/CGVDS 55821d50893 < vulcanism 55824d50895 < vulcanologist 55840a50912 > vuvuzela/MS 55844c50916 < wackes --- > wack/RTS 55872d50943 < waggly 55881c50952 < wainscot/SMDGJ --- > wainscot/SJMDG 55883c50954,50956 < wainwright/SM --- > wainscotted > wainscotting/MS > wainwright/MS 55891d50963 < waitpeople 55904c50976 < walk/BMDRZGS --- > walk/MDRZGS 55914d50985 < walla/S 55919d50989 < wallchart 55926c50996 < wallpaper/GSMD --- > wallpaper/SMDG 55938c51008 < wanderlust/MS --- > wanderlust/SM 55951c51021 < wanton/MDRYSPG --- > wanton/MDYSPG 55954c51024 < war/SGM --- > war/SM 55964d51033 < wardship 55967,55968c51036 < warehouseman < warez/S --- > warez 55989,55990c51057 < warned/U < warning/MY --- > warning/M 56010c51077,51078 < wash/BJMDRSZG --- > wasabi > wash/BMDRSZG 56017d51084 < washday 56037c51104 < wastebasket/SM --- > wastebasket/MS 56042a51110 > wastewater 56048d51115 < watched/U 56050c51117 < watchful/PY --- > watchful/YP 56057c51124 < watchtower/MS --- > watchtower/SM 56061a51129 > waterboard/DJSG 56064,56065c51132 < watercolorists < watercourse/MS --- > watercourse/SM 56073d51139 < waterless 56077,56078c51143 < waterman < watermark/MDSG --- > watermark/MDGS 56082c51147 < waterproof/SGMD --- > waterproof/SMDG 56087c51152 < waterspout/MS --- > waterspout/SM 56090c51155 < waterwheel/MS --- > waterwheel/SM 56098,56100c51163 < waveform/S < wavefront < waveguide/S --- > waveform 56107,56108c51170 < wavering/UY < wavily --- > wavering/Y 56123,56124d51184 < wayleave/S < waymarked 56140d51199 < weakly/RT 56147d51205 < weanling 56149c51207 < weaponize/DSG --- > weaponize/GDS 56160d51217 < wearying/Y 56163,56164c51220,51221 < weatherboard/GS < weathercock/SM --- > weatherboard/SG > weathercock/MS 56170,56171c51227,51228 < weatherperson/SM < weatherproof/SGD --- > weatherperson/MS > weatherproof/GSD 56182c51239 < webcast/MS --- > webcast/SMG 56185a51243,51244 > webinar/SM > webisode/MS 56189c51248 < webpage/MS --- > webpage/SM 56203d51261 < weeds/S 56221c51279,51280 < weigh/AGDM --- > weigh's > weigh/AGD 56230c51289 < weightlifter/SM --- > weightlifter/MS 56238d51296 < welch/GDS 56255c51313 < welterweight/MS --- > welterweight/SM 56278,56279d51335 < wetsuit/S < wettable 56286d51341 < whacky/TR 56291d51345 < whales/S 56297c51351 < wharf/SM --- > wharf/M 56314,56315c51368,51369 < wheel/SMDRZG < wheelbarrow/MS --- > wheel/SMDRG > wheelbarrow/SM 56318c51372 < wheelhouse/SM --- > wheelhouse/MS 56320c51374 < wheelwright/SM --- > wheelwright/MS 56364d51417 < whimsey/MS 56382,56383c51435,51436 < whippletree/MS < whippoorwill/SM --- > whippletree/SM > whippoorwill/MS 56390,56391c51443,51445 < whirlybird/MS < whirr/SMDG --- > whirlybird/SM > whirred > whirring 56396c51450,51452 < whisper/JMDRSZG --- > whisky/SM > whiskys > whisper/MDRSZG 56402c51458 < white/SPMY --- > white/SPM 56416c51472 < whitewash/GMDS --- > whitewash/MDSG 56425a51482 > whizz/MDSG 56427,56429d51483 < whizzed < whizzes < whizzing 56437d51490 < whodunnit/SM 56465c51518 < whorehouse/SM --- > whorehouse/MS 56484,56486c51537 < wicketkeeper/S < wicketkeeping < wide/YTRSP --- > wide/YTRP 56506d51556 < wifely/TR 56513d51562 < wiggles/S 56536a51586 > wilful/P 56542d51591 < willie 56544,56545c51593 < willing/UTPY < willinger --- > willing/UPY 56549c51597 < willowy/TR --- > willowy 56561c51609,51610 < wind/UASGM --- > wind's > wind/UASG 56564c51613 < windbreak/ZSMR --- > windbreak/SZMR 56572c51621 < windflower/SM --- > windflower/MS 56575,56576c51624,51625 < winding/SM < windjammer/MS --- > winding's > windjammer/SM 56588c51637 < windshield/MS --- > windshield/SM 56603d51651 < wineskin 56607a51656 > wingnut/SM 56614c51663 < winnable --- > winnable/U 56626d51674 < wintery/RT 56631c51679,51680 < wire/AGDSM --- > wire's > wire/AGDS 56635d51683 < wirer 56646c51694 < wisecrack/GMDS --- > wisecrack/MDSG 56648d51695 < wisely/TR 56653c51700 < wishlist/MS --- > wishlist/SM 56657d51703 < wistaria/SM 56664d51709 < witchdoctor/S 56681c51726 < withstand/SG --- > withstand/GS 56695c51740 < wiz/M --- > wiz/S 56701c51746 < wobble/MGDRS --- > wobble/MGDS 56717c51762 < wolfish/Y --- > wolfish 56739c51784 < wonderful/PY --- > wonderful/YP 56749,56750c51794 < wonton/MS < woo/SZGDRY --- > woo/SZGDR 56771c51815 < woodpecker/SM --- > woodpecker/MS 56778d51821 < woodsmoke 56789c51832 < wool/MNYSX --- > wool/MNX 56792c51835 < woolie/M --- > wooliness 56795d51837 < wooly/TPRSM 56800c51842,51843 < word/AJDSGM --- > word's > word/ADSG 56805c51848 < wording/M --- > wording/SM 56812,56813c51855,51856 < work/ADJSGM < workability/U --- > work's > work/ADJSG 56825c51868 < workforce/SM --- > workforce/M 56828c51871 < working/M --- > working's 56841,56842d51883 < workpeople < workpiece/S 56849d51889 < workspace 56885c51925 < worthless/YP --- > worthless/PY 56888,56889c51928,51929 < worthy/UPRTM < wost --- > worthy's > worthy/UPRT 56906c51946,51947 < wrap/USM --- > wrap's > wrap/US 56928c51969 < wretched/PTRY --- > wretched/TPRY 56932c51973 < wriggly/RT --- > wriggly 56942,56943c51983,51984 < writ/MRSZ < write/ASBJG --- > writ/MRBJSZG > write/S 56945d51985 < writeup 56991,56992d52030 < xreffed < xreffing 57021c52059 < xylophonist/SM --- > xylophonist/MS 57031d52068 < yack/MDSG 57048c52085 < yardmaster/SM --- > yardmaster/MS 57051d52087 < yarmelke/SM 57060d52095 < yawning/Y 57073c52108 < yearning/MY --- > yearning/M 57091c52126 < yeshivah/M --- > yeshivot 57114,57115d52148 < yoghourt/SM < yoghurt/MS 57118d52150 < yogin/SM 57120c52152,52153 < yoke/UGDSM --- > yoke's > yoke/UGDS 57127d52159 < york/RZ 57161c52193 < yuppie/M --- > yuppie/MS 57163d52194 < yuppy/SM 57185,57186c52216 < zenning < zeolites --- > zeolite/S 57196,57198d52225 < zeugma < zigamorph < zigamorphs 57213c52240,52241 < zip/USM --- > zip's > zip/US 57222a52251 > zlotys 57225d52253 < zombi/SM 57228c52256,52257 < zone/AGDSM --- > zone's > zone/AGDS 57239c52268,52270 < zorch/GDS --- > zooplankton > zorch > zoster 57242d52272 < zugzwang 57247a52278,52284 > Ångström/M > éclair/SM > éclat/M > élan/M > émigré/SM > épée/MS > étude/SM diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 9,10d8 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d61 < rmdir "searchplugins/" 73d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 5550827 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:48 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5419754 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:48 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5485289 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:48 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 6140615 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:48 source/bin/searchplugins/amazondotcom.xml 6271686 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:48 source/bin/searchplugins/aol-web-search.xml 6271685 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:48 source/bin/searchplugins/bing.xml 6206148 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:48 source/bin/searchplugins/eBay.xml 6271683 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:48 source/bin/searchplugins/twitter.xml 5354178 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:48 source/bin/searchplugins/wikipedia.xml 6206145 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:48 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.1.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:48:20-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.1/20151228123010/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:48:22 GMT Keep-Alive: timeout=5, max=908 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:48:20 (2.10 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ru/thunderbird-38.8.0.complete.mar' from cache... Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/ru/Thunderbird Setup 38.5.1.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.5.1.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/ru/Thunderbird Setup 38.5.1.exe'] --2016-05-09 17:48:21-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.1/win32/ru/Thunderbird%20Setup%2038.5.1.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34386448 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:48:24 GMT ETag: "37c202400f4e55aa5218a93b45266fc4" Last-Modified: Thu, 07 Jan 2016 15:00:35 GMT x-amz-replication-status: COMPLETED x-amz-version-id: pa5_z1cwT08fNhoOM5aya8Gga_kxAWXV X-Cache: Miss from cloudfront Via: 1.1 aa89533ad2ec5e0edba466c9920bd000.cloudfront.net (CloudFront) X-Amz-Cf-Id: MxzupPi8y26ynG8mKA0-9pbVEdqueMl9RDMv08BCYllBODKiG0N0hg== Length: 34386448 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.5.1.exe' 0K ........ ........ ........ ........ ........ ........ 9% 990K 31s 3072K ........ ........ ........ ........ ........ ........ 18% 4.20M 17s 6144K ........ ........ ........ ........ ........ ........ 27% 6.06M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 7.58M 8s 12288K ........ ........ ........ ........ ........ ........ 45% 8.73M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 11.1M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 11.7M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 12.2M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 14.5M 1s 27648K ........ ........ ........ ........ ........ ........ 91% 15.5M 1s 30720K ........ ........ ........ ........ ........ .... 100% 17.3M=6.4s 2016-05-09 17:48:29 (5.14 MB/s) - 'Thunderbird Setup 38.5.1.exe' saved [34386448/34386448] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ru/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yandex.xml PREPARE REMOVEFILE searchplugins/yandex-slovari.xml PREPARE REMOVEFILE searchplugins/wikipedia-ru.xml PREPARE REMOVEFILE searchplugins/priceru.xml PREPARE REMOVEFILE searchplugins/ozonru.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/duckduckgo-ru.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/ru.dic PREPARE REMOVEFILE dictionaries/ru.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yandex.xml PREPARE ADD searchplugins/yandex-slovari.xml PREPARE ADD searchplugins/wikipedia-ru.xml PREPARE ADD searchplugins/priceru.xml PREPARE ADD searchplugins/ozonru.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/duckduckgo-ru.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/ru.dic PREPARE ADD dictionaries/ru.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yandex.xml EXECUTE REMOVEFILE searchplugins/yandex-slovari.xml EXECUTE REMOVEFILE searchplugins/wikipedia-ru.xml EXECUTE REMOVEFILE searchplugins/priceru.xml EXECUTE REMOVEFILE searchplugins/ozonru.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/duckduckgo-ru.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/ru.dic EXECUTE REMOVEFILE dictionaries/ru.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yandex.xml EXECUTE ADD searchplugins/yandex-slovari.xml EXECUTE ADD searchplugins/wikipedia-ru.xml EXECUTE ADD searchplugins/priceru.xml EXECUTE ADD searchplugins/ozonru.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/duckduckgo-ru.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/ru.dic EXECUTE ADD dictionaries/ru.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yandex.xml FINISH REMOVEFILE searchplugins/yandex-slovari.xml FINISH REMOVEFILE searchplugins/wikipedia-ru.xml FINISH REMOVEFILE searchplugins/priceru.xml FINISH REMOVEFILE searchplugins/ozonru.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/duckduckgo-ru.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/ru.dic FINISH REMOVEFILE dictionaries/ru.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yandex.xml FINISH ADD searchplugins/yandex-slovari.xml FINISH ADD searchplugins/wikipedia-ru.xml FINISH ADD searchplugins/priceru.xml FINISH ADD searchplugins/ozonru.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/duckduckgo-ru.xml FINISH ADD searchplugins/bing.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/ru.dic FINISH ADD dictionaries/ru.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ru"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Годовщины,Дни рождениÑ,БизнеÑ,Звонки,Клиенты,КонкурÑÑ‹,Заказчики,Избранное,Ответы,Подарки,ОтпуÑк,Идеи,Доходы,Разное,Личное,Проекты,Праздники,Ð’Ñтречи,ПоÑтавщики,ПутешеÑтвиÑ,Каникулы"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ru"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Годовщины,Дни рождениÑ,БизнеÑ,Звонки,Клиенты,КонкурÑÑ‹,Заказчики,Избранное,Ответы,Подарки,ОтпуÑк,Идеи,Доходы,Разное,Личное,Проекты,Праздники,Ð’Ñтречи,ПоÑтавщики,ПутешеÑтвиÑ,Каникулы"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/yandex.xml" < remove "searchplugins/yandex-slovari.xml" < remove "searchplugins/wikipedia-ru.xml" < remove "searchplugins/priceru.xml" < remove "searchplugins/ozonru.xml" < remove "searchplugins/google.xml" < remove "searchplugins/duckduckgo-ru.xml" < remove "searchplugins/bing.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 72d61 < rmdir "searchplugins/" 74d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 5812982 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5616373 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5812980 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5288650 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:49 source/bin/searchplugins/bing.xml 6206153 1 -rw-r--r-- 1 cltbld Administrators 1664 May 17:49 source/bin/searchplugins/duckduckgo-ru.xml 5288648 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:49 source/bin/searchplugins/google.xml 5288647 3 -rw-r--r-- 1 cltbld Administrators 5804 May 17:49 source/bin/searchplugins/ozonru.xml 5419718 1 -rw-r--r-- 1 cltbld Administrators 1370 May 17:49 source/bin/searchplugins/priceru.xml 5419717 5 -rw-r--r-- 1 cltbld Administrators 9413 May 17:49 source/bin/searchplugins/wikipedia-ru.xml 5354180 1 -rw-r--r-- 1 cltbld Administrators 1794 May 17:49 source/bin/searchplugins/yandex-slovari.xml 5419715 4 -rw-r--r-- 1 cltbld Administrators 7674 May 17:49 source/bin/searchplugins/yandex.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.1.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:49:04-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/de/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:49:06 GMT Keep-Alive: timeout=5, max=986 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.06M=0s 2016-05-09 17:49:04 (2.06 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/de/thunderbird-38.8.0.complete.mar' from cache... Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/de/Thunderbird Setup 38.5.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.5.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/de/Thunderbird Setup 38.5.0.exe'] --2016-05-09 17:49:06-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/de/Thunderbird%20Setup%2038.5.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33939624 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:49:08 GMT ETag: "ac42283ca59ce12261f8ea0378db72dc" Last-Modified: Wed, 23 Dec 2015 00:22:37 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Y2tPuUcGZH3R7jglqcydtqhexime94Wj X-Cache: Miss from cloudfront Via: 1.1 515297ac55a7ae01bf8c7d03df4fecb1.cloudfront.net (CloudFront) X-Amz-Cf-Id: Fks_fNG8BTFzANM7aHnJwxZrnTOq8MdTSItV9DvxifZhdmvCSuvfOg== Length: 33939624 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.5.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.43M 20s 3072K ........ ........ ........ ........ ........ ........ 18% 4.42M 12s 6144K ........ ........ ........ ........ ........ ........ 27% 5.73M 9s 9216K ........ ........ ........ ........ ........ ........ 37% 8.55M 6s 12288K ........ ........ ........ ........ ........ ........ 46% 9.49M 5s 15360K ........ ........ ........ ........ ........ ........ 55% 11.5M 3s 18432K ........ ........ ........ ........ ........ ........ 64% 13.7M 2s 21504K ........ ........ ........ ........ ........ ........ 74% 13.4M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 17.6M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 18.7M 0s 30720K ........ ........ ........ ........ ..... 100% 20.4M=5.1s 2016-05-09 17:49:12 (6.33 MB/s) - 'Thunderbird Setup 38.5.0.exe' saved [33939624/33939624] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/de/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo-de.xml PREPARE REMOVEFILE searchplugins/wikipedia-de.xml PREPARE REMOVEFILE searchplugins/twitter-de.xml PREPARE REMOVEFILE searchplugins/eBay-de.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/amazondotcom-de.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo-de.xml PREPARE ADD searchplugins/wikipedia-de.xml PREPARE ADD searchplugins/twitter-de.xml PREPARE ADD searchplugins/eBay-de.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/amazondotcom-de.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo-de.xml EXECUTE REMOVEFILE searchplugins/wikipedia-de.xml EXECUTE REMOVEFILE searchplugins/twitter-de.xml EXECUTE REMOVEFILE searchplugins/eBay-de.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/amazondotcom-de.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo-de.xml EXECUTE ADD searchplugins/wikipedia-de.xml EXECUTE ADD searchplugins/twitter-de.xml EXECUTE ADD searchplugins/eBay-de.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/amazondotcom-de.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo-de.xml FINISH REMOVEFILE searchplugins/wikipedia-de.xml FINISH REMOVEFILE searchplugins/twitter-de.xml FINISH REMOVEFILE searchplugins/eBay-de.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/amazondotcom-de.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo-de.xml FINISH ADD searchplugins/wikipedia-de.xml FINISH ADD searchplugins/twitter-de.xml FINISH ADD searchplugins/eBay-de.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/amazondotcom-de.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "de"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Jubiläum,Geburtstag,Geschäft,Anrufe,Klienten,Konkurrenz,Kunde,Favoriten,Nachgehen,Geschenke,Ferien,Ideen,Fragen,Verschiedenes,Persönlich,Projekte,Feiertag,Status,Lieferanten,Reise,Urlaub"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "de"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_2-00000\l10n\de\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Jubiläum,Geburtstag,Geschäft,Anrufe,Klienten,Konkurrenz,Kunde,Favoriten,Nachgehen,Geschenke,Ferien,Ideen,Fragen,Verschiedenes,Persönlich,Projekte,Feiertag,Status,Lieferanten,Reise,Urlaub"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yahoo-de.xml" < remove "searchplugins/wikipedia-de.xml" < remove "searchplugins/twitter-de.xml" < remove "searchplugins/eBay-de.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/amazondotcom-de.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 6009594 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 5878521 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 5812984 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5485258 1 -rw-r--r-- 1 cltbld Administrators 1298 May 17:49 source/bin/searchplugins/amazondotcom-de.xml 5354185 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:49 source/bin/searchplugins/bing.xml 5485256 1 -rw-r--r-- 1 cltbld Administrators 1153 May 17:49 source/bin/searchplugins/eBay-de.xml 5485255 1 -rw-r--r-- 1 cltbld Administrators 890 May 17:49 source/bin/searchplugins/twitter-de.xml 5616326 1 -rw-r--r-- 1 cltbld Administrators 1128 May 17:49 source/bin/searchplugins/wikipedia-de.xml 5616325 1 -rw-r--r-- 1 cltbld Administrators 1046 May 17:49 source/bin/searchplugins/yahoo-de.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:49:46-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/en-US/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:49:49 GMT Keep-Alive: timeout=5, max=971 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.15M=0s 2016-05-09 17:49:47 (2.15 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/en-US/thunderbird-38.8.0.complete.mar' from cache... Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/en-US/Thunderbird Setup 38.5.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.5.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/en-US/Thunderbird Setup 38.5.0.exe'] --2016-05-09 17:49:48-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/en-US/Thunderbird%20Setup%2038.5.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34098512 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:49:51 GMT ETag: "3078c43eec55c187298f5284e7b7bad9" Last-Modified: Wed, 23 Dec 2015 00:22:47 GMT x-amz-replication-status: COMPLETED x-amz-version-id: fyb.S6ij0zHUfU.jsxi7s8578wV0H60h X-Cache: Miss from cloudfront Via: 1.1 f4879b16ae11c9a08a3038de5ea0df75.cloudfront.net (CloudFront) X-Amz-Cf-Id: RAwzcDCHzRVjVUd1RmK7KwkYWyd1EG6eJzOFF8uLM9TnmAnh1EvodQ== Length: 34098512 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.5.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.28M 23s 3072K ........ ........ ........ ........ ........ ........ 18% 3.33M 14s 6144K ........ ........ ........ ........ ........ ........ 27% 5.15M 10s 9216K ........ ........ ........ ........ ........ ........ 36% 7.10M 7s 12288K ........ ........ ........ ........ ........ ........ 46% 8.91M 5s 15360K ........ ........ ........ ........ ........ ........ 55% 9.73M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 12.7M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 14.8M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 15.5M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 8.80M 0s 30720K ........ ........ ........ ........ ........ 100% 4.67M=6.4s 2016-05-09 17:49:55 (5.08 MB/s) - 'Thunderbird Setup 38.5.0.exe' saved [34098512/34098512] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/en-US/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/en-US.dic PREPARE REMOVEFILE dictionaries/en-US.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/en-US.dic PREPARE ADD dictionaries/en-US.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/en-US.dic EXECUTE REMOVEFILE dictionaries/en-US.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/en-US.dic EXECUTE ADD dictionaries/en-US.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/en-US.dic FINISH REMOVEFILE dictionaries/en-US.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/en-US.dic FINISH ADD dictionaries/en-US.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/dictionaries/en-US.aff target/bin/dictionaries/en-US.aff 1,4d0 < # This Source Code Form is subject to the terms of the Mozilla Public < # License, v. 2.0. If a copy of the MPL was not distributed with this < # file, You can obtain one at http://mozilla.org/MPL/2.0/. < diff -r source/bin/dictionaries/en-US.dic target/bin/dictionaries/en-US.dic 1c1 < 57246 --- > 52283 34c34 < ACLU --- > ACLU/M 42c42 < AFAIK/S --- > AFAIK 44c44 < AFC --- > AFC/M 50d49 < AIDSes 54a54 > AMD/M 56c56 < ANZUS --- > ANZUS/M 58c58 < AP --- > AP/M 60c60,61 < API/MS --- > APC > API/SM 74c75,76 < AWACS --- > AVI > AWACS/M 78c80 < Aachen --- > Aachen/M 80,85c82,83 < Aaren/M < Aarika/M < Aaron < Ab/M < Abagael/M < Abagail/M --- > Aaron/M > Ab's 88,91c86 < Abbasid < Abbe/M < Abbey/M < Abbi/M --- > Abbasid/M 93d87 < Abbot/M 96d89 < Abbye/M 102c95 < Abelard --- > Abelard/M 106,107d98 < Abeu/M < Abey/M 110,113c101,102 < Abigael/M < Abigail < Abigale/M < Abilene --- > Abigail/M > Abilene/M 118d106 < Abrahan/M 121,123c109,111 < Abran/M < Absalom < Abuja --- > Abrams/M > Absalom/M > Abuja/M 134c122 < Achernar --- > Achernar/M 141c129 < Actaeon --- > Actaeon/M 143,144c131,132 < Acton < Acts --- > Acton/M > Acts/M 146,147c134 < Acura/MS < Ad/MN --- > Acura/M 153a141 > Adams/M 155c143 < Adana --- > Adana/M 157d144 < Adara/M 160c147 < Addams --- > Addams/M 163d149 < Addia/M 165c151 < Addison --- > Addison/M 175d160 < Adelice/M 177d161 < Adelind/M 179d162 < Adella/M 183c166 < Adenauer --- > Adenauer/M 188d170 < Adiana/M 191c173 < Adirondack/MS --- > Adirondack/SM 195c177 < Adler --- > Adler/M 198d179 < Ado/M 203d183 < Adolpho/M 206,210c186 < Adora/M < Adore/M < Adoree/M < Adorne/M < Adrea/M --- > Adore's 212,213c188,189 < Adria/MX < Adrian --- > Adria/M > Adrian/M 221d196 < Adriena/M 231,233d205 < Aeriel/M < Aeriela/M < Aeriell/M 238a211 > Afghani/M 247c220 < Afrocentrism --- > Afrocentrism/M 250d222 < Agace/M 258,260c230 < Aggi/M < Aggie < Aggy/M --- > Aggie/M 262,265c232,233 < Aglaia < Agna/M < Agnella/M < Agnes --- > Aglaia/M > Agnes/M 267,268d234 < Agnesse/M < Agneta/M 271d236 < Agnola/M 273,275c238,239 < Agra < Agretha/M < Agricola --- > Agra/M > Agricola/M 279d242 < Aguie/M 283,284d245 < Aguistin/M < Aguste/M 289c250 < Ahmadabad --- > Ahmadabad/M 295,296c256 < Aigneis/M < Aiken --- > Aiken/M 298,300d257 < Ailbert/M < Aile/M < Ailee/M 302d258 < Ailene/M 304,307d259 < Aili/SM < Ailina/M < Ailsun/M < Ailyn/M 310,312d261 < Aimil/M < Aindrea/M < Ainslee/M 315c264 < Ainu --- > Ainu/M 317c266,267 < Aisha --- > Aires/M > Aisha/M 320c270 < Akbar --- > Akbar/M 322c272 < Akihito --- > Akihito/M 324c274 < Akita --- > Akita/M 326c276 < Akkad --- > Akkad/M 328d277 < Aksel/M 336,337d284 < Alaine/M < Alair/M 343d289 < Alanah/M 345d290 < Alane/M 347d291 < Alano/M 350,351c294 < Alard/M < Alaric --- > Alaric/M 356,359c299 < Alasteir/M < Alaster/M < Alayne/M < Alba --- > Alba/M 363,364c303 < Albee < Alberik/M --- > Albee/M 366c305 < Albert --- > Albert/M 373c312 < Albigensian --- > Albigensian/M 375c314 < Albion --- > Albion/M 379,381c318,320 < Alcatraz < Alcestis < Alcibiades --- > Alcatraz/M > Alcestis/M > Alcibiades/M 385,388c324,327 < Alcott < Alcuin < Alcyone < Aldan --- > Alcott/M > Alcuin/M > Alcyone/M > Aldan/M 390c329 < Alden --- > Alden/M 397d335 < Aldric/M 402d339 < Aldwin/M 404,407d340 < Alecia/M < Aleda/M < Aleece/M < Aleen/M 410d342 < Alejandrina/M 412d343 < Alejoa/M 420d350 < Aleta/M 428c358 < Alexandra --- > Alexandra/M 433c363 < Alexandro/MS --- > Alexandros 438,439c368 < Alexine/M < Alexio/M --- > Alexis/M 441d369 < Alfi/M 448c376 < Alfred --- > Alfred/M 450,451c378 < Alfredo < Alfy/M --- > Alfredo/M 453c380 < Alger --- > Alger/M 462c389 < Alhambra --- > Alhambra/M 464c391 < Ali/S --- > Ali/SM 466,468d392 < Alibaba < Alic/M < Alica/M 470d393 < Alicea/M 474,475d396 < Alidia/M < Alie/M 477,478d397 < Alika/M < Alikee/M 483d401 < Alisander/M 489d406 < Alisun/M 491d407 < Aliza/M 495c411 < Allahabad --- > Allahabad/M 498,499d413 < Allayne/M < Alleen/M 501c415 < Allegheny/S --- > Allegheny/SM 503c417 < Allen --- > Allen/M 506,507c420 < Allentown < Alley/M --- > Allentown/M 512d424 < Allissa/M 514,515d425 < Allistir/M < Allix/M 517,520d426 < Allsun/M < Allx/M < Ally/SM < Allyce/M 526d431 < Almeda/M 528d432 < Almeta/M 531d434 < Almire/M 536,538d438 < Aloin/M < Aloise/M < Aloisia/M 542d441 < Aloysia/M 550c449 < Alpine --- > Alpine/M 558c457 < Alta --- > Alta/M 561,562c460,461 < Altair < Altamira --- > Altair/M > Altamira/M 569,571c468 < Aluin/M < Aluino/M < Alva --- > Alva/M 576,578d472 < Alvera/M < Alverta/M < Alvie/M 581,582d474 < Alvinia/M < Alvira/M 588d479 < Alyda/M 591,593d481 < Alysa/M < Alyse/M < Alysia/M 600d487 < Amabelle/M 603,605d489 < Amalea/M < Amalee/M < Amaleta/M 608,609d491 < Amalita/M < Amalle/M 611,613d492 < Amandi/M < Amandie/M < Amandy/M 615,616c494 < Amargo/M < Amarillo --- > Amarillo/M 620c498 < Amati --- > Amati/M 623,625c501 < Amber/MY < Amberly/M < Amble/M --- > Amber/M 628d503 < Ambrosi/M 631,632d505 < Ambur/M < Amby/M 636,638d508 < Amelina/M < Ameline/M < Amelita/M 641c511 < Amerasian --- > Amerasian/M 645,647c515,517 < Americanism/SM < Americanization/SM < Americanize/DSG --- > Americanism/MS > Americanization/MS > Americanize/GDS 650c520 < Amerindian/SM --- > Amerindian/MS 654c524 < Amherst --- > Amherst/M 658d527 < Amii/M 661,663d529 < Amitie/M < Amity/M < Ammamaria/M 667c533 < Amos --- > Amos/M 670c536 < Amritsar --- > Amritsar/M 672,673c538,539 < Amtrak < Amundsen --- > Amtrak/M > Amundsen/M 677d542 < Amye/M 679d543 < Anabal/M 682,683d545 < Anabella/M < Anabelle/M 685,686c547,548 < Anacreon < Anaheim --- > Anacreon/M > Anaheim/M 688d549 < Analiese/M 690,691d550 < Anallese/M < Anallise/M 693,696c552,553 < Anasazi < Anastasia < Anastasie/M < Anastassia/M --- > Anasazi/M > Anastasia/M 698d554 < Anatola/M 702,704c558 < Anatollo/M < Anaxagoras < Ancell/M --- > Anaxagoras/M 707,712c561,563 < Andalusian < Andaman < Andean < Andee/M < Andeee/M < Anderea/M --- > Andalusian/M > Andaman/M > Andean/M 715c566 < Anderson --- > Anderson/M 719d569 < Andonis/M 725d574 < Andreana/M 728a578 > Andres/M 730a581 > Andrews/M 733d583 < Andriana/M 735,737c585,586 < Andriette/M < Andris < Andromache --- > Android/M > Andromache/M 739c588 < Andropov --- > Andropov/M 743d591 < Anestassia/M 745,748c593 < Anett/M < Anetta/M < Anette/M < Angara --- > Angara/M 752c597,598 < Angele/M --- > Angele/SM > Angeles/M 755,756c601,602 < Angelica < Angelico --- > Angelica/M > Angelico/M 762d607 < Angelle/M 764c609 < Angelou --- > Angelou/M 767,768c612 < Angil/M < Angkor --- > Angkor/M 770c614 < Anglia --- > Anglia/M 775,778c619,621 < Anglicize/DSG < Anglo < Anglophil < Anglophile --- > Anglicize > Anglo/M > Anglophile/M 783c626 < Angstrom --- > Angstrom/M 786d628 < Angy/M 790,791d631 < Anica/M < Anissa/M 793,795d632 < Anitra/M < Anjanette/M < Anjela/M 798,799c635 < Anna < Annabal/M --- > Anna/M 801,802d636 < Annabela/M < Annabell/M 805,808d638 < Annadiana/M < Annadiane/M < Annalee/M < Annaliese/M 811,812d640 < Annamaria/M < Annamarie/M 815,816c643 < Anne < Annecorinne/M --- > Anne/M 820d646 < Annetta/M 823d648 < Annice/M 825,826d649 < Annissa/M < Annmaria/M 828,830c651 < Annnora/M < Annora/M < Annunciation/MS --- > Annunciation/SM 832c653 < Anouilh --- > Anouilh/M 835,836c656 < Anselm < Anselma/M --- > Anselm/M 842c662 < Antaeus --- > Antaeus/M 847d666 < Anthe/M 849,853c668,671 < Anthia/M < Anthiathia/M < Anthony < Antichrist/MS < Antietam --- > Anthony/M > Anthropocene > Antichrist/SM > Antietam/M 859c677 < Antioch --- > Antioch/M 864,865c682,683 < Antoinette < Anton/MS --- > Antoinette/M > Anton/M 868d685 < Antonetta/M 876c693 < Antoninus --- > Antoninus/M 878c695 < Antonius --- > Antonius/M 883c700 < Any/M --- > Any's 885c702 < Anzac --- > Anzac/M 888c705,706 < Apennines --- > Apatosaurus > Apennines/M 890c708 < Apia --- > Apia/M 893c711 < Apollinaire --- > Apollinaire/M 895c713 < Apollonian --- > Apollonian/M 897c715,716 < Appalachian/S --- > Appalachian/SM > Appalachians/M 900,903c719,721 < Appleseed < Appleton < Appolonia/M < Appomattox --- > Appleseed/M > Appleton/M > Appomattox/M 906,907c724 < Aprilette/M < Apuleius --- > Apuleius/M 908a726 > Aquarian 910c728 < Aquila --- > Aquila/M 917,919d734 < Arabel/M < Arabela/M < Arabele/M 921d735 < Arabelle/M 927c741 < Araby --- > Araby/M 929a744 > Aragon 932d746 < Araldo/M 936c750 < Arapahoe/SM --- > Arapahoes 938c752 < Araucanian --- > Araucanian/M 944,945d757 < Arch/R < Archaimbaud/M 947c759 < Archean --- > Archean/M 949,950d760 < Archibaldo/M < Archibold/M 952c762 < Archimedes --- > Archimedes/M 956c766 < Arda/MH --- > Arda/M 958,968c768 < Ardath/M < Ardebil < Ardeen/M < Ardelia/M < Ardelis/M < Ardella/M < Ardelle/M < Arden < Ardene/M < Ardenia/M < Ardine/M --- > Arden/M 970,978c770,771 < Ardisj/M < Ardith/M < Ardra/M < Ardyce/M < Ardys < Ardyth/M < Arel/M < Arequipa < Ares --- > Arequipa/M > Ares/M 981c774 < Argentine --- > Argentine/M 984c777 < Argo/S --- > Argo/SM 986a780 > Argos/M 993d786 < Aridatha/M 995,997c788 < Ariel < Ariela/M < Ariella/M --- > Ariel/M 1001,1002c792 < Ario/M < Ariosto --- > Ariosto/M 1004c794 < Aristides --- > Aristides/M 1013,1014c803,804 < Arjuna < Ark --- > Arjuna/M > Ark/M 1017,1022c807,808 < Arkhangelsk < Arkwright < Arlan/M < Arlana/M < Arlee/M < Arleen/M --- > Arkhangelsk/M > Arkwright/M 1024d809 < Arlena/M 1026d810 < Arleta/M 1029d812 < Arleyne/M 1031d813 < Arliene/M 1033,1034d814 < Arlina/M < Arlinda/M 1036,1037c816 < Arlington < Arluene/M --- > Arlington/M 1039,1040d817 < Arlyn/M < Arlyne/M 1057,1058c834 < Arney/M < Arnhem --- > Arnhem/M 1062c838 < Arnold --- > Arnold/M 1064d839 < Arnuad/M 1066d840 < Arny/M 1068,1069c842 < Arrhenius < Arri/M --- > Arrhenius/M 1072d844 < Artair/M 1078d849 < Arther/M 1080c851 < Arthurian --- > Arthurian/M 1085c856 < Arty/M --- > Arty's 1088d858 < Arvie/M 1090d859 < Arvy/M 1092c861 < Aryn/M --- > As/M 1098,1101c867,868 < Asgard < Ash/MRY < Ashanti < Ashbey/M --- > Asgard/M > Ashanti/M 1103,1105c870,871 < Ashcroft < Ashe/Y < Ashely/M --- > Ashcroft/M > Ashe/RM 1107,1108d872 < Ashia/M < Ashien/M 1110,1111c874 < Ashil/M < Ashkenazim --- > Ashkenazim/M 1113,1114d875 < Ashla/M < Ashlan/M 1117d877 < Ashlen/M 1119,1122d878 < Ashli/M < Ashlie/M < Ashlin/M < Ashly/M 1125c881 < Ashurbanipal --- > Ashurbanipal/M 1126a883 > Asiago 1129,1131c886,888 < Asimov < Asmara < Asoka --- > Asimov/M > Asmara/M > Asoka/M 1133a891 > Asperger/M 1135c893 < Asquith --- > Asquith/M 1140c898 < Assisi --- > Assisi/M 1143c901 < Astaire --- > Astaire/M 1146,1148c904,906 < Aston < Astor < Astoria --- > Aston/M > Astor/M > Astoria/M 1150c908 < Astrakhan --- > Astrakhan/M 1152,1154c910,911 < Astrix/M < AstroTurf < Asturias --- > AstroTurf/M > Asturias/M 1155a913 > Asunción/M 1159,1160c917,918 < Atahualpa < Atalanta --- > Atahualpa/M > Atalanta/M 1162a921 > Atatürk/M 1164d922 < Athabascan/MS 1166c924,925 < Athabaskan/MS --- > Athabaskan/SM > Athanasius 1171c930 < Athlon/MS --- > Athlon/M 1173c932 < Atkinson --- > Atkinson/M 1175c934 < Atlante/SM --- > Atlantes 1179,1180c938,939 < Atman < Atreus --- > Atman/M > Atreus/M 1186c945 < Attlee --- > Attlee/M 1188c947 < Attucks --- > Attucks/M 1192d950 < Auberon/M 1194,1199c952 < Auberta/M < Aubine/M < Aubree/M < Aubrette/M < Aubrey < Aubrie/M --- > Aubrey/M 1201c954 < Auckland --- > Auckland/M 1209,1213c962 < Audrie/M < Audry/M < Audrye/M < Audubon < Audy/M --- > Audubon/M 1215c964 < Augean --- > Augean/M 1217c966 < Augsburg --- > Augsburg/M 1220c969 < Augustan --- > Augustan/M 1223d971 < Augustina/M 1228,1231c976 < Augy/M < Aundrea/M < Aura/M < Aurangzeb --- > Aurangzeb/M 1234d978 < Aurelea/M 1238c982 < Aurelius --- > Aurelius/M 1240,1241d983 < Auria/M < Aurie/M 1243,1245d984 < Aurilia/M < Aurlie/M < Auroora/M 1248,1249c987 < Aurthur/M < Auschwitz --- > Auschwitz/M 1251c989 < Austen --- > Austen/M 1254,1255d991 < Austina/M < Austine/M 1259,1260c995,996 < Australian/MS < Australoid --- > Australian/SM > Australoid/M 1268,1269c1004,1005 < Avalon < Ave --- > Avalon/M > Ave/M 1271c1007 < Aventine --- > Aventine/M 1275,1276c1011,1012 < Avernus < Averroes --- > Avernus/M > Averroes/M 1278d1013 < Averyl/M 1280,1282c1015 < Avicenna < Avictor/M < Avie/M --- > Avicenna/M 1284c1017 < Avignon --- > Avignon/M 1287c1020 < Avis --- > Avis/M 1289,1291c1022,1023 < Avivah/M < Avogadro < Avon --- > Avogadro/M > Avon/M 1294,1296d1025 < Avrit/M < Avrom/M < Ax/M 1300c1029 < Axum --- > Axum/M 1302,1303c1031 < Ayers < Aylmar/M --- > Ayers/M 1305c1033 < Aymara --- > Aymara/M 1309c1037 < Ayurveda --- > Ayurveda/M 1313c1041 < Azazel --- > Azazel/M 1317c1045 < Azov --- > Azov/M 1321c1049 < B/MNT --- > B/MNRT 1325,1326c1053,1054 < BBB < BBC --- > BBB/M > BBC/M 1330a1059 > BFF 1333c1062 < BITNET/S --- > BITNET 1338c1067 < BP --- > BP/M 1343c1072 < BSD/S --- > BSD/SM 1350c1079 < Baathist --- > Baathist/M 1352,1353d1080 < Babar/M < Babara/M 1355,1356c1082 < Babbage < Babbette/M --- > Babbage/M 1358c1084 < Babbitt --- > Babbitt/M 1361,1362d1086 < Babita/M < Babur 1367c1091 < Bacardi --- > Bacardi/M 1374,1375c1098,1099 < Bactria < Baden --- > Bactria/M > Baden/M 1378c1102 < Baez --- > Baez/M 1380c1104 < Baggies --- > Baggies/M 1382,1384c1106,1108 < Baguio < Baha'i < Baha'ullah --- > Baguio/M > Baha'i/M > Baha'ullah/M 1389c1113 < Bahia --- > Bahia/M 1391,1392c1115 < Baikal < Bail/M --- > Baikal/M 1397c1120 < Baird --- > Baird/M 1399,1400c1122,1123 < Baker < Bakersfield --- > Baker/M > Bakersfield/M 1402,1406c1125,1129 < Bakunin < Balanchine < Balaton < Balboa < Bald/MR --- > Bakunin/M > Balanchine/M > Balaton/M > Balboa/M > Bald's 1408d1130 < Balduin/M 1410d1131 < Bale/M 1412c1133 < Balfour --- > Balfour/M 1415,1417c1136,1139 < Balkan/S < Balkhash < Ball --- > Balkan/MS > Balkans/M > Balkhash/M > Ball/M 1419c1141 < Balthazar --- > Balthazar/M 1422c1144 < Baluchistan --- > Baluchistan/M 1426,1428d1147 < Bambie/M < Bamby/M < Ban/M 1433c1152 < Bangalore --- > Bangalore/M 1436,1437c1155,1156 < Bangladeshi/MS < Bangor --- > Bangladeshi/SM > Bangor/M 1440,1442c1159,1160 < Banjul < Bank/SM < Banky/M --- > Banjul/M > Banks/M 1444,1445c1162,1163 < Bannister < Banting --- > Bannister/M > Banting/M 1450,1451c1168 < Bar/H < Barabbas --- > Barabbas/M 1453,1455d1169 < Barb/MR < Barbabas/M < Barbabra/M 1459d1172 < Barbaraanne/M 1463c1176 < Barbe/M --- > Barbe/MR 1465c1178 < Barber --- > Barber/M 1468,1469c1181 < Barbi/M < Barbie --- > Barbie/M 1473d1184 < Barby/M 1475,1476c1186,1187 < Barclay/M < Bard/M --- > Barclay/SM > Barclays/M 1484,1486c1195 < Barn/M < Barnabas < Barnabe/M --- > Barnabas/M 1488,1491c1197,1199 < Barnard < Barnaul < Barnebas/M < Barnes --- > Barnard/M > Barnaul/M > Barnes/M 1494,1500c1202,1204 < Barnie/M < Barnum < Barny/M < Baroda < Baron/M < Baroque < Barquisimeto --- > Barnum/M > Baroda/M > Barquisimeto/M 1502c1206 < Barranquilla --- > Barranquilla/M 1509,1511c1213,1215 < Barry < Barrymore < Bart --- > Barry/M > Barrymore/M > Bart/M 1513c1217 < Barth/S --- > Barth/MS 1516,1520c1220 < Bartholemy/M < Bartholomeo/M < Bartholomeus/M < Bartholomew < Bartie/M --- > Bartholomew/M 1522,1524c1222,1223 < Bartlett < Bartok < Bartolemo/M --- > Bartlett/M > Bartok/M 1526c1225 < Barton --- > Barton/M 1529c1228,1229 < Baruch --- > Bartók/M > Baruch/M 1531,1533c1231 < Baryram/M < Baryshnikov < Base/M --- > Baryshnikov/M 1538,1539c1236,1237 < Basie < Basil --- > Basie/M > Basil/M 1544c1242 < Basra --- > Basra/M 1551d1248 < Bat/M 1553,1556c1250,1252 < Bates < Batholomew/M < Bathsheba < Batista --- > Bates/M > Bathsheba/M > Batista/M 1558d1253 < Batsheva/M 1564c1259,1260 < Bauer --- > Baudrillard/M > Bauer/M 1566c1262 < Baum --- > Baum/M 1568c1264 < Bavarian --- > Bavarian/M 1570d1265 < Baxie/M 1572,1573d1266 < Baxy/M < Bay/MR 1577,1578c1270,1271 < Bayes < Bayesian --- > Bayes/M > Bayesian/M 1582c1275 < Bayreuth --- > Bayreuth/M 1587c1280 < Beadle --- > Beadle/M 1589d1281 < Bealle/M 1591d1282 < Bear/M 1594c1285 < Beardsley --- > Beardsley/M 1596d1286 < Bearnard/M 1601d1290 < Beatrisa/M 1603a1293 > Beatty/M 1605c1295 < Beaufort --- > Beaufort/M 1607,1608c1297,1298 < Beaumarchais < Beaumont --- > Beaumarchais/M > Beaumont/M 1610c1300 < Beauvoir --- > Beauvoir/M 1620d1309 < Becki/M 1623,1624c1312,1313 < Becquerel < Bede --- > Becquerel/M > Bede/M 1626d1314 < Bee/M 1628c1316 < Beecher --- > Beecher/M 1631c1319 < Beerbohm --- > Beerbohm/M 1634,1637c1322,1325 < Begin < Behan < Behring < Beiderbecke --- > Begin/M > Behan/M > Behring/M > Beiderbecke/M 1639d1326 < Beilul/M 1641d1327 < Beitris/M 1643d1328 < Bekki/M 1654,1655d1338 < Belia/M < Belicia/M 1657d1339 < Belita/M 1663d1344 < Bellanca/M 1665,1666c1346 < Belle/M < Belleek --- > Belleek/M 1668,1670c1348,1349 < Bellina/M < Bellini < Bellow --- > Bellini/M > Bellow/M 1672,1673c1351 < Belmopan < Belorussia/M --- > Belmopan/M 1676c1354 < Beltane --- > Beltane/M 1680d1357 < Belvia/M 1683c1360 < Benares --- > Benares/M 1686,1688d1362 < Bendick/M < Bendicty/M < Bendite/M 1695c1369 < Benedictine/SM --- > Benedictine/MS 1698d1371 < Benedikta/M 1700,1701c1373 < Benet < Benetta/M --- > Benet/M 1707d1378 < Beniamino/M 1712,1713c1383 < Benjamen/M < Benjamin --- > Benjamin/M 1718,1719c1388 < Bennett < Benni/M --- > Bennett/M 1723d1391 < Benoite/M 1725,1731c1393,1396 < Bent/M < Bentham < Bentlee/M < Bentley < Benton < Benyamin/M < Benz --- > Bentham/M > Bentley/M > Benton/M > Benz/M 1733c1398 < Beowulf --- > Beowulf/M 1737d1401 < Beret 1739c1403 < Berg/NR --- > Berg/MNR 1742,1748c1406,1411 < Bergerac < Berget/M < Bergman < Bergson < Beria < Bering < Berk/MY --- > Bergerac/M > Bergman/M > Bergson/M > Beria/M > Bering/M > Berk/M 1751d1413 < Berkie/M 1753d1414 < Berkly/M 1755c1416 < Berky/M --- > Berkshires/M 1759c1420 < Berlioz --- > Berlioz/M 1765,1768c1426 < Berna/M < Bernadene/M < Bernadette < Bernadina/M --- > Bernadette/M 1771,1772c1429 < Bernard < Bernardina/M --- > Bernard/M 1775d1431 < Bernarr/M 1778d1433 < Bernelle/M 1780,1782d1434 < Bernete/M < Bernetta/M < Bernette/M 1784c1436 < Bernhardt --- > Bernhardt/M 1788,1792c1440,1442 < Bernini < Bernita/M < Bernoulli < Bernstein < Berny/M --- > Bernini/M > Bernoulli/M > Bernstein/M 1795,1796c1445 < Berrie/M < Berry --- > Berry/M 1799d1447 < Berte/M 1806,1807d1453 < Bertina/M < Bertine/M 1811,1812d1456 < Bertrando/M < Berty/M 1814,1815c1458 < Beryle/M < Berzelius --- > Berzelius/M 1817,1818c1460,1461 < Bess < Bessel --- > Bess/M > Bessel/M 1820c1463 < Bessie --- > Bessie/M 1825,1832c1468,1472 < Bethanne/M < Bethany < Bethe < Bethena/M < Bethesda < Bethina/M < Bethlehem < Bethune --- > Bethany/M > Bethe/M > Bethesda/M > Bethlehem/M > Bethune/M 1837,1838d1476 < Betteann/M < Betteanne/M 1842d1479 < Bettine/M 1845c1482 < Beulah --- > Beulah/M 1847,1848c1484 < Beverie/M < Beverlee/M --- > Beveridge 1850d1485 < Beverlie/M 1853,1856c1488,1491 < Bevon/M < Bevvy/M < Beyer < Bhopal --- > Bevvy's > Beyer/M > Bharat/M > Bhopal/M 1861c1496 < Bialystok --- > Bialystok/M 1863d1497 < Bianka/M 1867d1500 < Bibbie/M 1869d1501 < Bibbye/M 1872c1504 < Biblical --- > Biblical/M 1874,1876c1506 < Biddie/M < Biddle < Biddy/M --- > Biddle/M 1878,1879c1508 < Bidget/M < Bierce --- > Bierce/M 1884c1513 < Bilbao --- > Bilbao/M 1888d1516 < Billi/M 1892d1519 < Billye/M 1896d1522 < Binni/M 1898d1523 < Binny/M 1900,1902c1525 < Birch/M < Bird < Birdie/M --- > Bird/M 1907c1530 < Birkenstock --- > Birkenstock/M 1911c1534 < Biscay --- > Biscay/M 1913c1536 < Bishkek --- > Bishkek/M 1918a1542 > BitTorrent/M 1920c1544 < Bizet --- > Bizet/M 1929c1553 < Blackfeet --- > Blackfeet/M 1933,1934c1557,1558 < Blackstone < Blackwell --- > Blackstone/M > Blackwell/M 1937,1939c1561 < Blaire/M < Blake < Blakelee/M --- > Blake/M 1942,1943c1564 < Blanch/M < Blancha/M --- > Blanch's 1950,1951c1571 < Blavatsky < Blayne/M --- > Blavatsky/M 1956,1962c1576,1577 < Blinni/M < Blinnie/M < Blinny/M < Bliss < Blisse/M < Blithe/M < Bloch --- > Blithe's > Bloch/M 1965d1579 < Bloglines/M 1967,1968d1580 < Blondell/M < Blondelle/M 1970d1581 < Blondy/M 1973c1584,1585 < Bloomfield --- > Bloomer/M > Bloomfield/M 1975c1587,1588 < Bloomsbury --- > Bloomsbury/M > Blu 1985,1987d1597 < Bobbe/M < Bobbee/M < Bobbette/M 1992,1997c1602 < Bobbye/M < Bobette/M < Bobina/M < Bobine/M < Bobinette/M < Boccaccio --- > Boccaccio/M 1999a1605 > Bodleian 2002,2004c1608,1610 < Boeotian < Boer/SM < Boethius --- > Boeotian/M > Boer/M > Boethius/M 2006d1611 < Bogey/M 2008c1613,1614 < Bohemia --- > Bogotá/M > Bohemia/M 2010,2011c1616 < Bohr < Boigie/M --- > Bohr/M 2021,2022c1626,1627 < Bolshevism < Bolshevist --- > Bolshevism/M > Bolshevist/M 2024,2025c1629,1630 < Bolton < Boltzmann --- > Bolton/M > Boltzmann/M 2027,2028c1632,1633 < Bonaparte < Bonaventure --- > Bonaparte/M > Bonaventure/M 2030,2031d1634 < Bondie/M < Bondon/M 2033d1635 < Bone/M 2035c1637 < Boniface --- > Boniface/M 2038d1639 < Bonnee/M 2041,2042d1641 < Bonni/M < Bonnibelle/M 2044d1642 < Bonny 2049c1647 < Boolean --- > Boolean/M 2051,2054d1648 < Boonie/M < Boony/M < Boot/M < Boote/MS 2056c1650 < Booth --- > Booth/M 2061d1654 < Bordie/M 2063d1655 < Bordy/M 2066,2069c1658,1661 < Borges < Borgia < Borglum < Boris --- > Borges/M > Borgia/M > Borglum/M > Boris/M 2072c1664 < Born --- > Born/M 2075c1667 < Borodin --- > Borodin/M 2077,2078c1669,1670 < Bosch < Bose --- > Bosch/M > Bose/M 2083,2084c1675,1677 < Bostonian < Boswell --- > Bostonian/M > Boswell/M > Botox 2086,2088c1679,1680 < Botticelli < Boudicca < Boulder --- > Botticelli/M > Boulder/M 2093c1685 < Bournemouth --- > Bournemouth/M 2098c1690 < Bowers --- > Bowers/M 2100c1692 < Bowie --- > Bowie/M 2102d1693 < Boy/MR 2104,2106c1695 < Boycey/M < Boycie/M < Boyd --- > Boyd/M 2108c1697,1698 < Boyle --- > Boyle/M > Boötes/M 2110,2112c1700,1701 < Brad/MY < Bradan/M < Bradbury --- > Brad/MNY > Bradbury/M 2114d1702 < Brade/M 2116,2117c1704,1705 < Bradford < Bradley --- > Bradford/M > Bradley/M 2119d1706 < Bradney/M 2122c1709 < Brady --- > Brady/M 2124c1711 < Brahe --- > Brahe/M 2128d1714 < Brahmanee 2132d1717 < Brahmin/MS 2139d1723 < Brana/M 2141,2145c1725,1726 < Brand/MNR < Brandais/M < Brande/M < Brandea/M < Brandeis --- > Brande/MR > Brandeis/M 2147c1728 < Brandenburg --- > Brandenburg/M 2150d1730 < Brandice/M 2152,2153c1732 < Brandise/M < Brando --- > Brando/M 2155,2156c1734 < Brandt < Brandtr/M --- > Brandt/M 2158d1735 < Brandyn/M 2162c1739 < Braque --- > Braque/M 2164c1741 < Bratislava --- > Bratislava/M 2172,2173d1748 < Breanne/M < Brear/M 2175c1750 < Brecht --- > Brecht/M 2178,2179c1753 < Breena/M < Bremen --- > Bremen/M 2181d1754 < Brena/M 2185,2186d1757 < Brendin/M < Brendis/M 2188d1758 < Brenn/MNR 2191d1760 < Brennen/M 2194a1764 > Brest/M 2198,2199d1767 < Breughel < Brew/MR 2201,2203c1769,1770 < Brewster < Brezhnev < Bria/M --- > Brewster/M > Brezhnev/M 2208d1774 < Briano/M 2212d1777 < Bride/M 2215c1780 < Bridges --- > Bridges/M 2217c1782 < Bridgetown --- > Bridgetown/M 2220c1785 < Bridgman --- > Bridgman/M 2222c1787 < Brie/RSM --- > Brie/SM 2224,2227c1789 < Brier/M < Brietta/M < Brig < Brigadoon --- > Brigadoon/M 2228a1791 > Briggs/M 2230c1793 < Bright --- > Bright/M 2237,2239c1800 < Brillo < Brina/M < Briney/M --- > Brillo/M 2241,2243c1802 < Brinn/M < Brinna/M < Briny/M --- > Briny's 2250,2251c1809,1810 < Britannia < Britannic --- > Britannia/M > Britannic/M 2257d1815 < Britni/M 2262,2263d1819 < Brittaney/M < Brittani/M 2265,2267c1821 < Britte/M < Britteny/M < Brittne/M --- > Britten/M 2269,2272c1823 < Brittni/M < Brnaba/M < Brnaby/M < Brno --- > Brno/M 2275c1826 < Brobdingnagian --- > Brobdingnagian/M 2277,2278d1827 < Brockie/M < Brocky/M 2280,2282d1828 < Broddie/M < Broddy/M < Broderic/M 2286d1831 < Brok/M 2289,2290d1833 < Bronnie/M < Bronny/M 2292c1835,1836 < Bronte --- > Bronte/M > Brontosaurus 2294,2295c1838 < Brook/MS < Brooke --- > Brooke/MS 2296a1840 > Brooks/M 2299,2300c1843,1844 < Brown/G < Browne --- > Brown/MG > Browne/M 2303,2305c1847,1850 < Brownshirt < Brownsville < Brubeck --- > Browning/M > Brownshirt/M > Brownsville/M > Brubeck/M 2307,2308c1852 < Brucie/M < Bruckner --- > Bruckner/M 2310,2311d1853 < Brueghel < Bruis/M 2315,2316c1857 < Brunelleschi < Brunhilda/M --- > Brunelleschi/M 2318c1859 < Bruno --- > Bruno/M 2323,2326c1864,1865 < Bryan < Bryana/M < Bryant < Bryanty/M --- > Bryan/M > Bryant/M 2329d1867 < Bryna/M 2331,2332d1868 < Brynna/M < Brynne/M 2337c1873 < Buber --- > Buber/M 2340c1876 < Buchenwald --- > Buchenwald/M 2342,2344c1878,1879 < Buck < Buckie/M < Buckingham --- > Buck/M > Buckingham/M 2354d1888 < Buddie/M 2363d1896 < Buiron/M 2365,2370c1898,1903 < Bukhara < Bukharin < Bulawayo < Bulfinch < Bulganin < Bulgar --- > Bukhara/M > Bukharin/M > Bulawayo/M > Bulfinch/M > Bulganin/M > Bulgar/M 2378c1911 < Bunche --- > Bunche/M 2380,2381c1913,1914 < Bundestag < Bunin --- > Bundestag/M > Bunin/M 2383,2386c1916 < Bunni/M < Bunnie/M < Bunny/M < Bunsen --- > Bunsen/M 2389c1919 < Burbank --- > Burbank/M 2392d1921 < Burg/MR 2394c1923 < Burgess --- > Burgess/M 2396c1925 < Burgundian --- > Burgundian/M 2399c1928 < Burke --- > Burke/M 2400a1930 > Burks/M 2402d1931 < Burlie/M 2408,2411c1937,1940 < Burnett < Burns < Burnside < Burr --- > Burnett/M > Burns/M > Burnside/M > Burr/M 2413,2414c1942,1943 < Burroughs < Bursa --- > Burroughs/M > Bursa/M 2416d1944 < Burtie/M 2418d1945 < Burty/M 2423c1950 < Bushido --- > Bushido/M 2425,2426c1952 < Butch/M < Butler --- > Butler/M 2428c1954,1955 < Buxtehude --- > Buxtehude/M > Buñuel/M 2430d1956 < Byelorussia/M 2433,2436c1959 < Byran/M < Byrann/M < Byrd < Byrle/M --- > Byrd/M 2438,2439c1961,1962 < Byron < Byronic --- > Byron/M > Byronic/M 2442c1965 < C/SMDY --- > C/SMD 2452c1975 < CBS --- > CBS/M 2458c1981 < CEO/MS --- > CEO/SM 2460c1983 < CFC/MS --- > CFC/SM 2461a1985 > CGI 2464c1988 < CNN --- > CNN/M 2479a2004 > CVS/M 2483,2485c2008,2009 < Cabinet < Cabot < Cabral --- > Cabot/M > Cabral/M 2487,2489c2011 < Cabrini < Cacilia/M < Cacilie/M --- > Cabrini/M 2491d2012 < Caddric/M 2493c2014 < Cadillac --- > Cadillac/M 2496c2017 < Caerphilly --- > Caerphilly/M 2498,2499c2019 < Caesarean < Cage --- > Cage/M 2502,2503c2022 < Cahra/M < Caiaphas --- > Caiaphas/M 2506d2024 < Cairistiona/M 2509,2510d2026 < Caitrin/M < Cajan 2512,2513c2028,2029 < Cal/Y < Calais --- > Cal/MY > Calais/M 2515c2031 < Calder --- > Calder/M 2517c2033 < Caldwell --- > Caldwell/M 2520c2036 < Caledonia --- > Caledonia/M 2522,2525c2038,2040 < Calhoun < Cali < Caliban < Calida/M --- > Calhoun/M > Cali/M > Caliban/M 2528,2531c2043,2045 < Californian/MS < Caligula < Calla/MS < Callaghan --- > Californian/SM > Caligula/M > Callaghan/M 2533,2534c2047,2048 < Callao < Callean/M --- > Callao/M > Callas/M 2537d2050 < Callida/M 2543d2055 < Calv/M 2545c2057 < Calvert --- > Calvert/M 2550,2551d2061 < Calypso < Cam 2553d2062 < Camala/M 2561,2563c2070 < Camella/M < Camellia/M < Camelopardalis --- > Camelopardalis/M 2568,2569c2075 < Cameroonian/SM < Camey/M --- > Cameroonian/MS 2572d2077 < Camile/M 2576d2080 < Cammi/M 2581,2583c2085,2087 < Campbell < Campinas < Campos --- > Campbell/M > Campinas/M > Campos/M 2585,2586c2089,2090 < Camus < Can --- > Camus/M > Can/M 2593c2097 < Canaletto --- > Canaletto/M 2595c2099 < Canaveral --- > Canaveral/M 2600c2104 < Candi/MS --- > Candi/M 2604d2107 < Candie/M 2610c2113 < Canopus --- > Canopus/M 2612c2115 < Canterbury --- > Canterbury/M 2618,2619c2121,2122 < Canute < Capablanca --- > Canute/M > Capablanca/M 2622,2623c2125,2126 < Capet < Capetian --- > Capet/M > Capetian/M 2628,2630c2131,2133 < Capitoline < Capone < Capote --- > Capitoline/M > Capone/M > Capote/M 2633d2135 < Caprice/M 2636c2138 < Capuchin --- > Capuchin/M 2638d2139 < Car/MNY 2640c2141 < Caracalla --- > Caracalla/M 2642,2643c2143 < Caralie/M < Caravaggio --- > Caravaggio/M 2646,2647c2146 < Carborundum < Carce/M --- > Carborundum/M 2652d2150 < Care/M 2655,2659c2153 < Carena/M < Caresa/M < Caressa/M < Caresse/M < Carey --- > Carey/M 2664,2666d2157 < Carie/M < Caril/M < Carilyn/M 2668c2159 < Carina --- > Carina/M 2670d2160 < Cariotta/M 2673d2162 < Caritta/M 2676,2677d2164 < Carlee/M < Carleen/M 2684,2685d2170 < Carlina/M < Carline/M 2688d2172 < Carlita/M 2689a2174 > Carlos/M 2692c2177 < Carlsbad --- > Carlsbad/M 2694c2179 < Carlton --- > Carlton/M 2696,2701c2181 < Carlye/M < Carlyle < Carlyn/M < Carlynn/M < Carlynne/M < Carma/M --- > Carlyle/M 2704,2705d2183 < Carmelia/M < Carmelina/M 2708d2185 < Carmelle/M 2711d2187 < Carmencita/M 2715,2717c2191 < Carmita/M < Carmon/M < Carnap --- > Carnap/M 2721,2722c2195 < Carnot < Carny/M --- > Carnot/M 2727d2199 < Carolann/M 2729,2733c2201,2203 < Carolee/M < Carolin/M < Carolina < Caroline < Carolingian --- > Carolina/M > Caroline/M > Carolingian/M 2735d2204 < Caroljean/M 2739d2207 < Carolynn/M 2741,2742c2209,2211 < Carpathian/MS < Carpenter --- > Carpathian/SM > Carpathians/M > Carpenter/M 2745,2747c2214 < Carree/M < Carri/MR < Carrie/M --- > Carrie/RM 2750d2216 < Carrissa/M 2753,2755c2219 < Carry/M < Carson < Cart/MR --- > Carson/M 2757c2221 < Cartesian --- > Cartesian/M 2760,2764c2224,2228 < Cartier < Cartwright < Caruso < Carver < Cary --- > Cartier/M > Cartwright/M > Caruso/M > Carver/M > Cary/M 2768c2232 < Casals --- > Casals/M 2775c2239 < Cash --- > Cash/M 2777d2240 < Casie/M 2779c2242 < Caspar --- > Caspar/M 2781c2244 < Caspian --- > Caspian/M 2784,2788c2247 < Cassandre/M < Cassandry/M < Cassatt < Cassaundra/M < Cassey/M --- > Cassatt/M 2789a2249 > Cassidy/M 2794d2253 < Cassondra/M 2797a2257 > Castilian 2799c2259 < Castlereagh --- > Castlereagh/M 2802c2262 < Castro --- > Castro/M 2811d2270 < Catha/M 2815,2818c2274 < Cathe/MR < Cathee/M < Catherin/M < Catherina/M --- > Cather/M 2820d2275 < Cathi/M 2823d2277 < Cathlene/M 2825,2827c2279 < Catholicism/SM < Cathrin/M < Cathrine/M --- > Catholicism/MS 2830d2281 < Cathyleen/M 2833,2836c2284 < Catiline < Catina/M < Catlaina/M < Catlee/M --- > Catiline/M 2838c2286 < Cato --- > Cato/M 2843,2845c2291,2292 < Catt < Catullus < Caty/M --- > Catt/M > Catullus/M 2849,2852c2296,2299 < Cauchy < Cavendish < Cavour < Caxton --- > Cauchy/M > Cavendish/M > Cavour/M > Caxton/M 2854,2855c2301 < Cayenne < Cayla/M --- > Cayenne/M 2860d2305 < Cazzie/M 2862d2306 < Cchaddie/M 2870c2314 < Cecil --- > Cecil/M 2872,2873c2316 < Ceciley/M < Cecilia --- > Cecilia/M 2875,2876d2317 < Cecilius/M < Cecilla/M 2883,2884d2323 < Celene/M < Celesta/M 2889,2890d2327 < Celestyn/M < Celestyna/M 2894d2330 < Celinda/M 2896,2898d2331 < Celinka/M < Celisse/M < Celka/M 2900,2902c2333,2334 < Cellini < Cello/M < Celsius --- > Cellini/M > Celsius/M 2910c2342 < Cepheid --- > Cepheid/M 2913c2345 < Cerenkov --- > Cerenkov/M 2919,2921c2351 < Cesarean < Cesarian < Cesaro/M --- > Cesarean/M 2923,2924c2353 < Cesya/M < Cetus --- > Cetus/M 2927c2356 < Cezanne --- > Cezanne/M 2929c2358 < Ch'in --- > Ch'in/M 2933,2935d2361 < Chadd/M < Chaddie/M < Chaddy/M 2937,2938c2363,2364 < Chadwick < Chagall --- > Chadwick/M > Chagall/M 2943c2369 < Chaldean --- > Chaldean/M 2946,2949c2372,2375 < Chamberlain < Chambers < Champlain < Champollion --- > Chamberlain/M > Chambers/M > Champlain/M > Champollion/M 2955,2957c2381,2382 < Chandal/M < Chandigarh < Chandler --- > Chandigarh/M > Chandler/M 2960c2385 < Chandragupta --- > Chandragupta/M 2963c2388 < Chanel --- > Chanel/M 2966,2967c2391,2392 < Changchun < Changsha --- > Changchun/M > Changsha/M 2970,2975c2395,2398 < Chantalle/M < Chantilly < Chanukah/M < Chanukahs < Chaplin < Chapman --- > Chantilly/M > Chaplin/M > Chaplinesque > Chapman/M 2981,2983d2403 < Charil/M < Charin/M < Chariot/M 2985d2404 < Charissa/M 2987d2405 < Charita/M 2989,2991d2406 < Charla/M < Charlean/M < Charleen/M 2993d2407 < Charlena/M 2997,2999c2411,2412 < Charley < Charlie < Charline/M --- > Charley/M > Charlie/M 3005d2417 < Charmain/M 3007d2418 < Charmane/M 3010,3012d2420 < Charmine/M < Charmion/M < Charo/M 3016c2424 < Chartres --- > Chartres/M 3018d2425 < Charyl/M 3020c2427 < Chase --- > Chase/M 3022d2428 < Chastity/M 3029c2435 < Chatterton --- > Chatterton/M 3031d2436 < Chaunce/M 3033c2438 < Chautauqua --- > Chautauqua/M 3037c2442 < Chechen --- > Chechen/M 3039c2444 < Cheddar --- > Cheddar/M 3043c2448 < Cheever --- > Cheever/M 3046,3050c2451 < Chelsae/M < Chelsea < Chelsey/M < Chelsie/M < Chelsy/M --- > Chelsea/M 3054c2455 < Chengdu --- > Chengdu/M 3056c2457 < Cheops --- > Cheops/M 3058d2458 < Cherey/M 3060,3062d2459 < Cherianne/M < Cherice/M < Cherida/M 3064,3066d2460 < Cherilyn/M < Cherilynn/M < Cherin/M 3068,3069c2462 < Cherish/M < Cherlyn/M --- > Cherish's 3074,3075d2466 < Cherri/M < Cherrita/M 3077,3078d2467 < Chery/M < Cherye/M 3080,3082c2469,2470 < Chesapeake < Cheshire < Cheslie/M --- > Chesapeake/M > Cheshire/M 3084,3086c2472,2473 < Chesterfield < Chesterton < Cheston/M --- > Chesterfield/M > Chesterton/M 3089c2476 < Chevalier --- > Chevalier/M 3097,3100c2484,2485 < Chiarra/M < Chiba < Chibcha < Chic/M --- > Chiba/M > Chibcha/M 3102,3105c2487,2489 < Chicagoan < Chicana < Chicano < Chick/M --- > Chicagoan/M > Chicana/M > Chicano/M 3107,3108d2490 < Chickie/M < Chicky/M 3120c2502 < Chinatown --- > Chinatown/M 3123d2504 < Chip/M 3127d2507 < Chiquia/M 3129c2509 < Chirico --- > Chirico/M 3132c2512 < Chittagong --- > Chittagong/M 3134,3136c2514 < Chlo/M < Chloe < Chloette/M --- > Chloe/M 3140,3141c2518,2519 < Chomsky < Chongqing --- > Chomsky/M > Chongqing/M 3144c2522 < Chou --- > Chou/M 3147d2524 < Chrisse/M 3150c2527 < Christ/MNS --- > Christ/MS 3153,3158c2530 < Christabella/M < Christal/M < Christalle/M < Christan/M < Christchurch < Christean/M --- > Christchurch/M 3160,3161c2532,2533 < Christen/M < Christendom/SM --- > Christen's > Christendom/MS 3168,3172c2540,2542 < Christianize/DSG < Christiano/M < Christie < Christin/M < Christina --- > Christianize/DG > Christie/M > Christina/M 3178,3179d2547 < Christoffer/M < Christoforo/M 3184d2551 < Christophorus/M 3186,3188d2552 < Christye/M < Christyna/M < Chrisy/M 3190,3191d2553 < Chrotoem/M < Chrysa/M 3193c2555 < Chrysostom --- > Chrysostom/M 3195,3197d2556 < Chryste/M < Chrystel/M < Chucho/M 3199,3200c2558,2559 < Chukchi < Chumash --- > Chukchi/M > Chumash/M 3202,3203c2561 < Chungking/M < Church --- > Church/M 3207c2565 < Ci --- > Ci/M 3210,3211c2568 < Cicily/M < Cid --- > Cid/M 3213d2569 < Cilka/M 3215,3218c2571 < Cincinnati < Cinda/M < Cindee/M < Cindelyn/M --- > Cincinnati/M 3221,3222d2573 < Cindie/M < Cindra/M 3225c2576 < Cinerama --- > Cinerama/M 3227d2577 < Cinnamon/M 3231d2580 < Cirilo/M 3234d2582 < Cissiee/M 3239d2586 < Citysearch/M 3241d2587 < Claiborn/M 3250,3252c2596 < Clarabelle/M < Clarance/M < Clare --- > Clare/M 3254,3259c2598 < Clarendon < Claresta/M < Clareta/M < Claretta/M < Clarette/M < Clarey/M --- > Clarendon/M 3263d2601 < Clarie/M 3265d2602 < Clarine/M 3269c2606 < Clark --- > Clark/M 3274,3276d2610 < Claudell/M < Claudelle/M < Claudetta/M 3280,3282d2613 < Claudianus/M < Claudie/M < Claudina/M 3287,3290c2618,2620 < Clausewitz < Clausius < Clay < Clayborn/M --- > Clausewitz/M > Clausius/M > Clay/M 3292,3293d2621 < Claybourne/M < Clayson/M 3297d2624 < Cleavland/M 3300c2627,2628 < Clemenceau --- > Clemenceau/M > Clemens/M 3303d2630 < Clementia/M 3306c2633 < Clementius/M --- > Clements/M 3308,3309c2635 < Clemmy/M < Clemons --- > Clemons/M 3315,3316d2640 < Clerissa/M < Cletis 3320,3321d2643 < Clevey/M < Clevie/M 3324c2646 < Clifford --- > Clifford/M 3326d2647 < Clim/M 3330a2652 > Clive/M 3332d2653 < Cloe/M 3334d2654 < Cloris/M 3335a2656 > Closure/M 3340,3341c2661 < Cly/M < Clyde --- > Clyde/M 3343,3345c2663 < Clytemnestra < Clyve/M < Clywd/M --- > Clytemnestra/M 3348,3349c2666 < Co/SM < Cob/M --- > Co/M 3351,3356c2668,2671 < Cobb < Cobbie/M < Cobby/M < Cochabamba < Cochin < Cochise --- > Cobb/M > Cochabamba/M > Cochin/M > Cochise/M 3359c2674 < Cocteau --- > Cocteau/M 3361,3364c2676 < Codee/M < Codi/M < Codie/M < Cody --- > Cody/M 3367,3371c2679,2682 < Cohan < Cohen < Coimbatore < Cointon/M < Cointreau --- > Cohan/M > Cohen/M > Coimbatore/M > Cointreau/M 3373,3375c2684 < Col < Colan/M < Colas --- > Col/M 3377c2686 < Colby --- > Colby/M 3379c2688 < Cole --- > Cole/M 3382d2690 < Colene/M 3386c2694 < Colette --- > Colette/M 3392d2699 < Collete/M 3394d2700 < Collie/M 3398c2704 < Colly/RM --- > Collins/M 3406d2711 < Colonial 3410c2715 < Colosseum --- > Colosseum/M 3412c2717 < Coltrane --- > Coltrane/M 3414c2719 < Columbine --- > Columbine/M 3416d2720 < Colver/M 3422,3423c2726,2727 < Comintern < Commons --- > Comintern/M > Commons/M 3428c2732 < Como --- > Como/M 3433c2737 < Compton --- > Compton/M 3436,3437c2740 < Comte < Con --- > Comte/M 3441c2744,2745 < Concepcion --- > Concepcion/M > Concepción/M 3443d2746 < Concettina/M 3446c2749 < Concorde --- > Concorde/M 3448,3449c2751,2752 < Condillac < Condorcet --- > Condillac/M > Condorcet/M 3456c2759 < Cong --- > Cong/M 3463c2766 < Congreve --- > Congreve/M 3465c2768 < Conn/R --- > Conn/MR 3467c2770 < Connemara --- > Connemara/M 3470,3471d2772 < Conney/M < Conni/M 3475c2776 < Connotea/M --- > Connors/M 3477,3478c2778 < Conrad < Conrade/M --- > Conrad/M 3482d2781 < Consalve/M 3484,3486c2783,2784 < Consolata/M < Constable < Constance --- > Constable/M > Constance/M 3488d2785 < Constancy/M 3492,3493c2789 < Constantina/M < Constantine --- > Constantine/M 3500c2796 < Continental --- > Continental/M 3502,3503c2798,2799 < Conway < Cook --- > Conway/M > Cook/M 3505d2800 < Cookie/M 3508c2803 < Coop/MR --- > Cooper/M 3514c2809 < Copernican --- > Copernican/M 3516,3517c2811,2812 < Copland < Copley --- > Copland/M > Copley/M 3523,3526d2817 < Corabel/M < Corabella/M < Corabelle/M < Coral/M 3528,3529d2818 < Coraline/M < Coralyn/M 3535d2823 < Cord/M 3537d2824 < Cordelie/M 3539,3542c2826 < Cordey/M < Cordi/M < Cordie/M < Cordilleras --- > Cordilleras/M 3544d2827 < Cordula/M 3546,3549d2828 < Coreen/M < Corella/M < Corenda/M < Corene/M 3551d2829 < Corette/M 3553c2831 < Corfu --- > Corfu/M 3555,3556d2832 < Corie/M < Corilla/M 3562,3563c2838,2840 < Corinthian/SM < Coriolanus --- > Corinthian/MS > Corinthians/M > Coriolanus/M 3565,3566d2841 < Coriss/M < Corissa/M 3570d2844 < Corly/M 3572,3574c2846 < Cornall/M < Corneille < Cornela/M --- > Corneille/M 3578d2849 < Cornelle/M 3580d2850 < Cornie/M 3584,3587c2854,2857 < Cornwallis < Corny/M < Coronado < Corot --- > Cornwallis/M > Corny's > Coronado/M > Corot/M 3589,3593c2859 < Correggio < Correna/M < Correy/M < Corri/M < Corrianne/M --- > Correggio/M 3595d2860 < Corrina/M 3597d2861 < Corrinne/M 3600c2864 < Corsican --- > Corsican/M 3603,3604d2866 < Cortez/M < Cortie/M 3606,3607d2867 < Cortney/M < Corty/M 3613d2872 < Cosetta/M 3618c2877 < Cossack --- > Cossack/M 3625c2884 < Cotonou --- > Cotonou/M 3629c2888 < Coulomb --- > Coulomb/M 3632,3634c2891,2892 < Couperin < Courbet < Court/M --- > Couperin/M > Courbet/M 3636d2893 < Courtnay/M 3638c2895 < Cousteau --- > Cousteau/M 3640,3643c2897,2901 < Coward < Cowley < Cowper < Cox --- > Coward/M > Cowell/M > Cowley/M > Cowper/M > Cox/M 3645d2902 < Cozmo/M 3649c2906 < Crabbe --- > Crabbe/M 3651,3653c2908,2909 < Craggie/M < Craggy/M < Craig --- > Craggy's > Craig/M 3655,3657c2911,2913 < Cranach < Crane < Cranmer --- > Cranach/M > Crane/M > Cranmer/M 3667,3668d2922 < Creigh/M < Creight/M 3671c2925,2926 < Creon --- > Creon/M > Cressida/M 3676,3677c2931,2932 < Crichton < Crick --- > Crichton/M > Crick/M 3679,3681c2934,2935 < Crimean < Crin/M < Criollo --- > Crimean/M > Criollo/M 3684d2937 < Crissie/M 3687d2939 < Cristabel/M 3689,3690d2940 < Cristen/M < Cristi/M 3693,3694d2942 < Cristie/M < Cristin/M 3696,3697d2943 < Cristine/M < Cristionna/M 3699d2944 < Cristy/M 3703,3705c2948,2950 < Croce < Crockett < Croesus --- > Croce/M > Crockett/M > Croesus/M 3707c2952 < Cromwellian --- > Cromwellian/M 3711,3713c2956,2958 < Crookes < Crosby < Cross --- > Crookes/M > Crosby/M > Cross/M 3717c2962 < Cruikshank --- > Cruikshank/M 3719c2964 < Crusades --- > Crusades's 3724d2968 < Crysta/M 3726d2969 < Crystie/M 3729,3730c2972 < Ctesiphon < Cthrine/M --- > Ctesiphon/M 3736,3739c2978,2979 < Cuisinart < Culbertson < Cull/MN < Cullan/M --- > Cuisinart/M > Culbertson/M 3742,3743d2981 < Cullie/M < Cullin/M 3748c2986 < Cummings --- > Cummings/M 3754,3755c2992,2993 < Curie < Curitiba --- > Curie/M > Curitiba/M 3759c2997 < Currie/MR --- > Currie/M 3761c2999 < Curry --- > Curry/RM 3765c3003 < Custer --- > Custer/M 3767c3005 < Cuzco --- > Cuzco/M 3769d3006 < Cyb/M 3772d3008 < Cybill/M 3778,3779d3013 < Cymbre/M < Cynde/M 3781,3784d3014 < Cyndia/M < Cyndie/M < Cyndy/M < Cynthea/M 3786d3015 < Cynthie/M 3792,3793c3021 < Cyril < Cyrill/M --- > Cyril/M 3796,3797c3024 < Cyrillus/M < Cyrus --- > Cyrus/M 3801c3028 < Czechoslovakian/MS --- > Czechoslovakian/SM 3803c3030 < Czerny --- > Czerny/M 3805c3032 < D/MN --- > D/M 3816c3043 < DEC/SDG --- > DEC/SD 3817a3045 > DHS 3819a3048 > DMCA 3835,3837c3064,3065 < DVD < DVDs < DVR/S --- > DVD/S > DVR/SM 3839d3066 < Dacca/M 3843d3069 < Dacie/M 3845d3070 < Dacy/M 3849,3853c3074,3075 < Dael/M < Daffi/M < Daffie/M < Daffy/M < Dag/M --- > Daffy's > Dag's 3856,3858c3078,3079 < Daguerre < Dagwood < Dahlia/M --- > Daguerre/M > Dagwood/M 3860d3080 < Daile/M 3862,3865c3082 < Daisey/M < Daisi/M < Daisie/M < Daisy --- > Daisy/M 3868c3085 < Dakotan --- > Dakotan/M 3870,3871c3087,3088 < Dale < Dalenna/M --- > Dalai > Dale/M 3873c3090 < Dali/S --- > Dali/M 3879,3880d3095 < Dalli/MS < Dallon/M 3883,3885d3097 < Daloris/M < Dalston/M < Dalt/M 3890c3102 < Dame/N --- > Dame/MN 3893c3105 < Damien --- > Damien/M 3895,3896c3107 < Damita/M < Damocles --- > Damocles/M 3898c3109 < Dan --- > Dan/M 3900c3111,3112 < Danae --- > Danae/M > Danaë/M 3902,3904c3114 < Danelaw < Danell/M < Danella/M --- > Danelaw/M 3911,3912d3120 < Danice/M < Danie/M 3918,3919c3126 < Danika/M < Danila/M --- > Daniels/M 3921,3922d3127 < Danit/M < Danita/M 3924d3128 < Dannel/M 3928d3131 < Dannye/M 3931c3134 < Danton --- > Danton/M 3933,3938c3136 < Danubian < Danya/M < Danyelle/M < Danyette/M < Daphene/M < Daphna/M --- > Danubian/M 3942,3944d3139 < Darb/M < Darbee/M < Darbie/M 3946d3140 < Darcee/M 3951d3144 < Darda/M 3953,3956c3146 < Dare < Dareen/M < Darell/M < Darelle/M --- > Dare/M 3958c3148 < Darfur --- > Darfur/M 3961,3962d3150 < Darice/M < Darill/M 3965,3966c3153,3154 < Darius < Darjeeling --- > Darius/M > Darjeeling/M 3968d3155 < Darleen/M 3970d3156 < Darline/M 3972,3974d3157 < Darlleen/M < Darn/M < Darnall/M 3979d3161 < Darrelle/M 3981d3162 < Darrick/M 3983c3164 < Darrow --- > Darrow/M 3985d3165 < Darsey/M 3988,3989c3168,3169 < Dartmoor < Dartmouth --- > Dartmoor/M > Dartmouth/M 3992c3172 < Darwinian --- > Darwinian/M 3997,3998d3176 < Daryle/M < Daryn/M 4000,4004c3178 < Dasi/M < Dasie/M < Dasya/M < Datamation/S < Datha/M --- > Datamation 4006,4009c3180,3182 < Daumier < Daune/M < Dav/MN < Davao --- > Daumier/M > Dav/M > Davao/M 4011,4014c3184 < Daveen/M < Daven/M < Davenport < Daveta/M --- > Davenport/M 4018d3187 < Davidde/M 4021c3190,3191 < Davie/MS --- > Davie/M > Davies/M 4024,4027c3194,3197 < Davine/M < Davis < Davy/S < Dawes --- > Davis/M > Davy/SM > Dawes/M > Dawkins 4029,4031c3199,3200 < Dawna/M < Dawson < Day --- > Dawson/M > Day/M 4033d3201 < Dayle/M 4035c3203 < Dayton --- > Dayton/M 4037d3204 < Ddene/M 4043c3210 < Dean --- > Dean/M 4054,4055d3220 < Debee/M < Debera/M 4058d3222 < Debor/M 4060c3224 < Deborah --- > Deborah/M 4063,4064c3227,3228 < Debs < Debussy --- > Debs/M > Debussy/M 4066d3229 < Decalog 4068c3231 < Decatur --- > Decatur/M 4070c3233 < Deccan --- > Deccan/M 4072c3235 < Deck/MR --- > Decker/M 4075,4079c3238 < Dedie/M < Dedra/M < Dee < Deeann/M < Deeanne/M --- > Dee/M 4082d3240 < Deerdre/M 4084,4087c3242,3243 < Deeyn/M < Defoe < Degas < Dehlia/M --- > Defoe/M > Degas/M 4089,4091c3245,3246 < Deimos < Deina/M < Deirdre --- > Deimos/M > Deirdre/M 4094c3249 < Del/Y --- > Del/M 4096c3251 < Delacroix --- > Delacroix/M 4098d3252 < Delainey/M 4102c3256 < Delawarean/MS --- > Delawarean/SM 4104,4105d3257 < Delcina/M < Delcine/M 4107c3259 < Delgado --- > Delgado/M 4110c3262 < Delibes --- > Delibes/M 4112d3263 < Delila/M 4115,4116c3266 < Delinda/M < Delius --- > Delius/M 4119d3268 < Delly/M 4123,4124c3272 < Delmonico < Delmor/M --- > Delmonico/M 4127d3274 < Delora/M 4132c3279 < Delphic --- > Delphic/M 4134d3280 < Delphinia/M 4136c3282 < Delta --- > Delta/M 4141,4143c3287 < Demetra/M < Demetre/M < Demetri/SM --- > Demetri/M 4149c3293 < Democritus --- > Democritus/M 4152c3296 < Dempsey --- > Dempsey/M 4156c3300 < Deneb --- > Deneb/M 4160c3304 < Denice/M --- > Denis/M 4163,4164d3306 < Denna/M < Dennet/M 4166d3307 < Denni/MS 4167a3309 > Dennis/M 4172c3314 < Deny/M --- > Deny's 4174d3315 < Denyse/M 4176d3316 < Deonne/M 4179c3319 < Derby --- > Derby/M 4184d3323 < Derrek/M 4187,4189d3325 < Derrik/M < Derril/M < Derron/M 4191,4192d3326 < Derward/M < Derwin/M 4197d3330 < Desirae/M 4199d3331 < Desiri/M 4201d3332 < Desmund/M 4204c3335 < Deutschmark/MS --- > Deutschmark/SM 4212,4215d3342 < Devina/M < Devinne/M < Devland/M < Devlen/M 4218d3344 < Devondra/M 4220,4225d3345 < Devonna/M < Devonne/M < Devora/M < Devy/M < Dew/M < Dewain/M 4229d3348 < Dewie/M 4233c3352 < Dexter --- > Dexter/M 4237c3356 < Di/S --- > Di/SM 4239,4241c3358,3359 < DiMaggio < Diaghilev < Diahann/M --- > DiMaggio/M > Diaghilev/M 4245d3362 < Diandra/M 4247d3363 < Dianemarie/M 4251,4252d3366 < Diannne/M < Diarmid/M 4255,4256c3369,3370 < Diaz < Dick/X --- > Dick/XM > Dickens/M 4260c3374 < Dickinson --- > Dickinson/M 4264c3378 < Diderot --- > Diderot/M 4268c3382 < Diefenbaker --- > Diefenbaker/M 4271d3384 < Diena/M 4273d3385 < Diesel/M 4275,4276c3387,3388 < Dietrich < Digg/MS --- > Dietrich/M > Digg/SM 4278,4279c3390 < Dijon < Dilan/M --- > Dijon/M 4281d3391 < Dill/M 4283d3392 < Dillie/M 4286d3394 < Dilly/M 4288d3395 < Dimitry/M 4290,4291c3397 < Dinah < Dinnie/M --- > Dinah/M 4294,4295c3400,3401 < Diocletian < Diogenes --- > Diocletian/M > Diogenes/M 4298d3403 < Dionis/M 4301c3406 < Dionysian --- > Dionysian/M 4304c3409 < Dior --- > Dior/M 4307,4308c3412,3413 < Dirac < Dirichlet --- > Dirac/M > Dirichlet/M 4311,4313c3416,3418 < Disney < Disneyland < Disraeli --- > Disney/M > Disneyland/M > Disraeli/M 4318c3423 < Dix --- > Dix/M 4320c3425 < Dixiecrat --- > Dixiecrat/M 4323d3427 < Djakarta/M 4327,4330c3431,3433 < Dnepropetrovsk < Dnieper < Dniester < Dniren/M --- > Dnepropetrovsk/M > Dnieper/M > Dniester/M 4333c3436 < Dobro --- > Dobro/M 4336d3438 < Dode/M 4343,4344c3445 < Dody/M < Doe --- > Doe/M 4346c3447 < Dolby --- > Dolby/M 4349d3449 < Doll/M 4351d3450 < Dolli/M 4355d3453 < Dolorita/SM 4360d3457 < Domeniga/M 4362d3458 < Dominga/M 4366c3462 < Dominic --- > Dominic/M 4373,4374c3469 < Domitian < Don't --- > Domitian/M 4376c3471 < Dona --- > Dona/M 4381,4387c3476 < Donall/M < Donalt/M < Donatello < Donaugh/M < Donavon/M < Donella/M < Donelle/M --- > Donatello/M 4389,4392d3477 < Donetta/M < Donia/M < Donica/M < Donielle/M 4395,4396c3480 < Donna < Donnamarie/M --- > Donna/M 4400d3483 < Donni/M 4405c3488 < Doolittle --- > Doolittle/M 4407c3490 < Doppler --- > Doppler/M 4409,4414c3492 < Doralia/M < Doralin/M < Doralyn/M < Doralynn/M < Doralynne/M < Dorcas --- > Dorcas/M 4417,4423d3494 < Dorelia/M < Dorella/M < Dorelle/M < Dorena/M < Dorene/M < Doretta/M < Dorette/M 4429d3499 < Dorice/M 4431d3500 < Dorine/M 4433d3501 < Dorisa/M 4435d3502 < Dorita/M 4438,4439d3504 < Dorolice/M < Dorolisa/M 4441d3505 < Doroteya/M 4445,4446d3508 < Dorree/M < Dorri/SM 4448,4449c3510,3511 < Dorry/M < Dorset --- > Dorris > Dorset/M 4451d3512 < Dorthea/M 4453,4454c3514 < Dortmund < Dory/M --- > Dortmund/M 4457d3516 < Dostoyevsky/M 4459d3517 < Doti/M 4461d3518 < Dotti/M 4463c3520 < Dotty/M --- > Dotty's 4469,4472c3526,3528 < Douglas < Douglass < Dougy/M < Douro --- > Douglas/M > Douglass/M > Douro/M 4475,4476c3531,3532 < Dow < Downs --- > Dow/M > Downs/M 4479c3535 < Doyle --- > Doyle/M 4482c3538 < Draconian --- > Draconian/M 4484c3540 < Drake --- > Drake/M 4486c3542 < Drambuie --- > Drambuie/M 4491,4493c3547 < Dreddy/M < Dredi/M < Dreiser --- > Dreiser/M 4498a3553 > Dropbox/M 4500,4504d3554 < Druci/M < Drucie/M < Drucill/M < Drucy/M < Drud/M 4506,4509c3556 < Drugi/M < Druid < Drusi/M < Drusie/M --- > Druid/M 4511,4512c3558 < Drusy/M < Dryden --- > Dryden/M 4515c3561 < DuPont --- > DuPont/M 4517c3563 < Dubai --- > Dubai/M 4522,4524c3568,3569 < Duchamp < Dud/M < Dudley --- > Duchamp/M > Dudley/M 4529c3574 < Duisburg --- > Duisburg/M 4531,4533d3575 < Dukey/M < Dukie/M < Duky/M 4535,4538d3576 < Dulcea/M < Dulci/M < Dulcia/M < Dulciana/M 4540d3577 < Dulcine/M 4542,4546c3579,3581 < Dulcy/M < Dulles < Dulsea/M < Duluth < Dumas --- > Dulles/M > Duluth/M > Dumas/M 4549,4554c3584,3587 < Dumpster < Dun/M < Dunant < Dunbar < Dunc/M < Duncan --- > Dumpster/M > Dunant/M > Dunbar/M > Duncan/M 4556c3589 < Dunedin --- > Dunedin/M 4566c3599 < Durant --- > Durant/M 4568,4569c3601,3602 < Durban < Durer --- > Durban/M > Durer/M 4572,4573c3605,3606 < Durkheim < Duroc --- > Durkheim/M > Duroc/M 4584c3617 < Dutchmen --- > Dutchmen/M 4586,4589c3619,3622 < Duvalier < Dvina < Dvorak < Dwain/M --- > Duvalier/M > Dvina/M > Dvorak/M > Dvorák/M 4594,4598d3626 < Dyana/M < Dyane/M < Dyann/M < Dyanna/M < Dyanne/M 4602d3629 < Dynah/M 4605c3632,3634 < Dzungaria --- > Dzungaria/M > Dürer/M > Düsseldorf/M 4630c3659,3660 < ESPN --- > ESPN/M > ESR 4636,4637c3666 < Eachelle/M < Eada/M --- > EULA/S 4639,4641c3668 < Eadith/M < Eadmund/M < Eakins --- > Eakins/M 4643d3669 < Ealasaid/M 4645c3671 < Earhart --- > Earhart/M 4649d3674 < Earlie/M 4651c3676 < Early/M --- > Early's 4656,4658d3680 < Earth/M < Eartha/M < Earvin/M 4662c3684 < Eastman --- > Eastman/M 4671d3692 < Ebeneser/M 4674,4677c3695,3696 < Ebert < Eberto/M < Ebola < Ebonee/M --- > Ebert/M > Ebola/M 4681c3700 < Ecclesiastes --- > Ecclesiastes/M 4688c3707 < Ecuadorian/MS --- > Ecuadorian/SM 4692d3710 < Edan/M 4694,4695c3712 < Edda < Eddi/M --- > Edda/M 4700,4701d3716 < Edee/M < Edeline/M 4703c3718 < Edgar --- > Edgar/M 4708d3722 < Edik/M 4712d3725 < Edita/M 4715,4716d3727 < Edithe/M < Ediva/M 4718d3728 < Edmon/M 4724c3734 < Edsel --- > Edsel/M 4727d3736 < Eduino/M 4732c3741,3742 < Edwin --- > Edwards/M > Edwin/M 4735d3744 < Edyth/M 4751,4753c3760,3762 < Ehrlich < Eichmann < Eiffel --- > Ehrlich/M > Eichmann/M > Eiffel/M 4755,4756d3763 < Eilis/M < Eimile/M 4759d3765 < Eirena/M 4761c3767 < Eisenstein --- > Eisenstein/M 4766,4767c3772,3773 < Elaine < Elam --- > Elaine/M > Elam/M 4769d3774 < Elane/M 4773c3778 < Elba --- > Elba/M 4775,4779c3780,3781 < Elbert < Elberta/M < Elbertina/M < Elbertine/M < Elbrus --- > Elbert/M > Elbrus/M 4783d3784 < Eldorado 4791d3791 < Eleen/M 4795d3794 < Elenore/M 4798d3796 < Elfie/M 4801,4804c3799,3800 < Elfrieda/M < Elga/M < Elgar < Eli --- > Elgar/M > Eli/M 4806,4808c3802 < Elianora/M < Elianore/M < Elicia/M --- > Elias/M 4813,4814c3807 < Elinore/M < Eliot --- > Eliot/M 4817c3810 < Elisabeth --- > Elisabeth/M 4821c3814 < Elisha --- > Elisha/M 4823d3815 < Elita/M 4825d3816 < Elizabet/M 4827,4828c3818 < Elizabethan/MS < Elka/M --- > Elizabethan/SM 4831,4832d3820 < Elladine/M < Ellary/M 4835,4836d3822 < Ellene/M < Ellerey/M 4839d3824 < Ellette/M 4842c3827 < Ellington --- > Ellington/M 4845c3830 < Ellis --- > Ellis/M 4847,4848d3831 < Ellissa/M < Ellswerth/M 4853d3835 < Ellynn/M 4859,4860d3840 < Elna/MH < Elnar/M 4863,4864c3843 < Elnore/M < Elohim --- > Elohim/M 4867,4868d3845 < Elonore/M < Elora/M 4873,4874c3850 < Else/M < Elset/M --- > Else's 4877d3852 < Elsi/M 4879c3854 < Elsinore --- > Elsinore/M 4882,4883d3856 < Elsworth/M < Elsy/M 4888d3860 < Elvera/M 4891d3862 < Elvina/M 4894d3864 < Elvyn/M 4897d3866 < Elwira/M 4900d3868 < Elyn/M 4903,4905c3871 < Elysha/M < Elysia < Elysian --- > Elysian/M 4908c3874 < Em/M --- > Elysée/M 4911,4912d3876 < Emalee/M < Emalia/M 4915,4918d3878 < Emelda/M < Emelen/M < Emelia/M < Emelina/M 4920,4923c3880 < Emelita/M < Emelyne/M < Emera/M < Emerson --- > Emerson/M 4927,4928d3883 < Emilee/M < Emili/M 4931d3885 < Emiline/M 4938,4939d3891 < Emlynn/M < Emlynne/M 4941d3892 < Emmalee/M 4943,4946c3894 < Emmalyn/M < Emmalynn/M < Emmalynne/M < Emmanuel --- > Emmanuel/M 4949d3896 < Emmery/M 4952,4953d3898 < Emmey/M < Emmi/M 4955,4959c3900 < Emmit/M < Emmott/M < Emmy < Emmye/M < Emogene/M --- > Emmy/M 4961,4962d3901 < Emyle/M < Emylee/M 4965,4967c3904,3905 < Endymion < Eng < Engadget/M --- > Endymion/M > Eng/M 4971d3908 < Englebert/M 4974c3911 < Englishmen --- > Englishmen/M 4976,4978c3913,3914 < Englishwomen < Engracia/M < Enid --- > Englishwomen/M > Enid/M 4983,4984c3919,3920 < Enoch < Enos --- > Enoch/M > Enos/M 4986d3921 < Enrichetta/M 4988d3922 < Enrika/M 4990d3923 < Enriqueta/M 4994,4995d3926 < Eolanda/M < Eolande/M 4997,5000c3928,3930 < Ephesian/S < Ephesus < Ephraim < Ephrayim/M --- > Ephesian/MS > Ephesus/M > Ephraim/M 5002,5003c3932,3933 < Epictetus < Epicurean --- > Epictetus/M > Epicurean/M 5006d3935 < Epinions/M 5011c3940 < Epsom --- > Epsom/M 5013,5014c3942,3943 < Epstein < Equuleus --- > Epstein/M > Equuleus/M 5023,5025c3952 < Erector < Erek/M < Erena/M --- > Erector/M 5027,5028c3954 < Erhard < Erhart/M --- > Erhard/M 5032d3957 < Ericha/M 5036,5039c3961,3964 < Ericson < Ericsson < Eridanus < Erie --- > Ericson/M > Ericsson/M > Eridanus/M > Erie/M 5042,5046c3967 < Eriksson < Erin < Erina/M < Erinn/M < Erinna/M --- > Erin/M 5053,5059d3973 < Ermanno/M < Ermengarde/M < Ermentrude/M < Ermin/M < Ermina/M < Erminia/M < Erminie/M 5061d3974 < Ernaline/M 5063d3975 < Ernesta/M 5066d3977 < Ernestus/M 5068,5069c3979 < Ernst < Erny/M --- > Ernst/M 5071d3980 < Errick/M 5076d3984 < Ertha/M 5080d3987 < Eryn/M 5087,5088d3993 < Esma/M < Esmaria/M 5096d4000 < Esra/M 5099,5101c4003,4005 < Essene < Essequibo < Essex --- > Essene/M > Essequibo/M > Essex/M 5103d4006 < Essy/M 5107d4009 < Estel/M 5109,5110d4010 < Estele/M < Estell/M 5115c4015,4016 < Estes --- > Esterházy/M > Estes/M 5122,5123d4022 < Estrellita/M < Etan/M 5125d4023 < Ethe/M 5128,5131d4025 < Ethelda/M < Ethelin/M < Ethelind/M < Etheline/M 5134c4028 < Ethernet --- > Ethernet/M 5137d4030 < Ethyl/M 5140,5142c4033,4035 < Eton < Etruria < Etruscan --- > Eton/M > Etruria/M > Etruscan/M 5144d4036 < Etti/M 5152c4044 < Euclidean --- > Euclidean/M 5154d4045 < Euell/M 5156c4047 < Eugene --- > Eugene/M 5161,5162d4051 < Eugine/M < Eukaryota/MS 5165c4054 < Euler --- > Euler/M 5173,5174c4062,4063 < Euripides < Eurodollar/MS --- > Euripides/M > Eurodollar/SM 5183c4072 < Ev/MN --- > Ev/M 5185d4073 < Evaleen/M 5187d4074 < Evangelia/M 5189d4075 < Evangelin/M 5192,5195c4078,4080 < Evangelist < Evania/M < Evanne/M < Evansville --- > Evangelist/M > Evans/M > Evansville/M 5197,5198d4081 < Eveleen/M < Evelin/M 5201,5202c4084 < Evelyn < Even/M --- > Evelyn/M 5206d4087 < Evered/M 5217,5219d4097 < Evonne/M < Evvie/M < Evvy/M 5221d4098 < Evyn/M 5223d4099 < Eward/M 5232c4108 < Exercycle --- > Exercycle/M 5238,5240c4114 < Eyde/M < Eydie/M < Eyre --- > Eyre/M 5242,5243c4116 < Ezechiel/M < Ezekiel --- > Ezekiel/M 5245,5248c4118 < Eziechiele/M < Ezmeralda/M < Ezra < Ezri/M --- > Ezra/M 5266a4137 > FSF/M 5270a4142 > FWIW 5273d4144 < Fabe/RM 5275c4146,4147 < Faberge --- > Faberge/M > Fabergé/M 5277d4148 < Fabiano/M 5283c4154 < Fafnir --- > Fafnir/M 5286,5289c4157,4158 < Fahrenheit < Faina/M < Fair/M < Fairbanks --- > Fahrenheit/M > Fairbanks/M 5294,5297c4163,4165 < Faisalabad < Faith < Falasha < Falito/M --- > Faisalabad/M > Faith/M > Falasha/M 5298a4167 > Falklands/M 5304,5309d4172 < Fan < Fanchette/M < Fanchon/M < Fancie/M < Fancy/M < Fanechka/M 5311d4173 < Fanni/M 5314,5315c4176 < Fanya/M < Far/MY --- > Far's 5319d4179 < Farand/M 5321,5324d4180 < Farica/M < Farlay/M < Farlee/M < Farleigh/M 5326,5328c4182 < Farlie/M < Farly/M < Farmer --- > Farmer/M 5330,5331c4184 < Farra/M < Farragut --- > Farragut/M 5340d4192 < Fascism 5345c4197 < Fates --- > Fates/M 5347,5348c4199,4200 < Fatima < Fatimid --- > Fatima/M > Fatimid/M 5350,5352c4202 < Faulknerian < Faun/M < Faunie/M --- > Faulknerian/M 5355c4205 < Faustian --- > Faustian/M 5357d4206 < Faustine/M 5360,5365c4209 < Favorited < Fawkes < Fawn/M < Fawne/M < Fawnia/M < Fax/M --- > Fawkes/M 5367d4210 < Faydra/M 5370d4212 < Fayina/M 5372,5373d4213 < Fayth/M < Faythe/M 5378c4218 < FedEx --- > FedEx/M 5381d4220 < Federica/M 5383,5384c4222 < Fedora/M < Fee/M --- > Feds/M 5386,5387d4223 < Felic/M < Felicdad/M 5390d4225 < Felicio/M 5392,5393d4226 < Felicle/M < Felike/M 5395d4227 < Felipa/M 5397,5398d4228 < Felisha/M < Felita/M 5400,5403c4230 < Feliza/M < Felizio/M < Fellini < Fenelia/M --- > Fellini/M 5405c4232 < Fenian --- > Fenian/M 5408d4234 < Feodora/M 5412,5414c4238 < Ferdinand < Ferdinanda/M < Ferdinande/M --- > Ferdinand/M 5416c4240 < Fergus --- > Fergus/M 5420c4244 < Fermi --- > Fermi/M 5432,5433c4256,4257 < Ferris < Fey/M --- > Ferris/M > Fey's 5435,5436c4259 < Fez < Fiann/M --- > Fez/M 5439c4262 < Fiberglas --- > Fiberglas/M 5441c4264 < Fichte --- > Fichte/M 5443d4265 < Fidela/M 5446d4267 < Fidelity/M 5448,5449c4269,4270 < Fidole/M < Field/GS --- > Fielding/M > Fields/M 5451d4271 < Fifine/M 5456,5460d4275 < Filbert/M < Filberte/M < Filberto/M < Filia/M < Filide/M 5463d4277 < Filippa/M 5468,5470c4282 < Filmore/M < Filofax < Fin --- > Filofax/M 5485,5487d4296 < Fionna/M < Fionnula/M < Fiorenze/M 5490,5491c4299,4300 < Fischer < Fisher --- > Fischer/M > Fisher/M 5495c4304 < Fitzgerald --- > Fitzgerald/M 5504c4313 < Flaubert --- > Flaubert/M 5506a4316 > Fleming/M 5509a4320 > Fletcher/M 5511d4321 < Fleurette/M 5515,5516c4325,4326 < Flint < Flintstones --- > Flint/M > Flintstones/M 5520,5521c4330 < Flora < Florance/M --- > Flora/M 5523d4331 < Florella/M 5526,5529c4334,4335 < Florentia/M < Florentine < Florenza/M < Flores --- > Florentine/M > Flores/M 5531,5532d4336 < Flori/SM < Floria/M 5535c4339 < Floridan --- > Floridan/M 5537,5538d4340 < Florie/M < Florina/M 5541c4343 < Florri/M --- > Floris 5543d4344 < Florry/M 5546d4346 < Flossi/M 5548,5551c4348,4350 < Flossy/M < Flowers < Floyd < Flss/M --- > Flossy's > Flowers/M > Floyd/M 5554,5560c4353,4359 < Foch < Fokker < Foley < Folgers < Folsom < Fomalhaut < Fonda --- > Foch/M > Fokker/M > Foley/M > Folgers/M > Folsom/M > Fomalhaut/M > Fonda/M 5562,5564d4360 < Fonsie/M < Fonz/M < Fonzie/M 5566c4362 < Forbes --- > Forbes/M 5569a4366 > Forester/M 5574c4371 < Forrest/R --- > Forrest/MR 5576,5577c4373,4374 < Forster < Fortaleza --- > Forster/M > Fortaleza/M 5580c4377 < Foster --- > Foster/M 5582,5583c4379,4380 < Foucault < Fourier --- > Foucault/M > Fourier/M 5586c4383 < Fowler --- > Fowler/M 5589c4386 < Fragonard --- > Fragonard/M 5592,5593c4389,4390 < Francene/M < Francesca --- > Frances/M > Francesca/M 5595d4391 < Franchot/M 5597c4393 < Francis --- > Francis/M 5599c4395 < Franciscan/SM --- > Franciscan/MS 5601,5606c4397,4398 < Franciska/M < Franciskus/M < Franck < Francklin/M < Francklyn/M < Franco --- > Franck/M > Franco/M 5609,5610c4401,4402 < Francyne/M < Franglais --- > Francophile > Franglais/M 5613c4405 < Frankenstein --- > Frankenstein/M 5615a4408 > Frankfurter/M 5618c4411 < Franklin --- > Franklin/M 5619a4413 > Franks/M 5621d4414 < Franni/M 5625d4417 < Frants/M 5628,5629c4420 < Frasco/M < Fraser --- > Fraser/M 5631d4421 < Frasquito/M 5634,5635c4424 < Frayda/M < Fraze/RM --- > Frazer 5639d4427 < Freddi/M 5642,5643d4429 < Fredek/M < Fredelia/M 5647,5648c4433 < Frederick < Fredericka/M --- > Frederick/M 5651d4435 < Frederigo/M 5654,5656d4437 < Fredi/M < Fredia/M < Fredra/M 5660c4441 < Free/M --- > Free's 5662d4442 < Freedman/M 5667d4446 < Freemon/M 5670c4449 < Fremont --- > Fremont/M 5673c4452 < Frenchmen --- > Frenchmen/M 5675,5676c4454,4455 < Frenchwomen < Freon --- > Frenchwomen/M > Freon/M 5680c4459 < Freudian --- > Freudian/M 5686c4465 < Friedan --- > Friedan/M 5688c4467 < Friedman --- > Friedman/M 5690d4468 < Friedrick/M 5693,5695c4471,4473 < Frigidaire < Frisbee < Frisco --- > Frigidaire/M > Frisbee/M > Frisco/M 5699,5702c4477,4481 < Frobisher < Froissart < Fromm < Fronde --- > Frobisher/M > Frodo/M > Froissart/M > Fromm/M > Fronde/M 5706c4485 < Frostbelt --- > Frostbelt/M 5708c4487 < Fry --- > Fry/M 5711,5712c4490,4491 < Fuentes < Fugger --- > Fuentes/M > Fugger/M 5717a4497,4498 > Fukushima/M > Fukuyama/M 5719,5721c4500,4502 < Fulbright < Fuller < Fullerton --- > Fulbright/M > Fuller/M > Fullerton/M 5724,5725c4505,4506 < Funafuti < Fundy --- > Funafuti/M > Fundy/M 5728c4509,4510 < Fushun --- > Furtwängler/M > Fushun/M 5730c4512 < Fuzzbuster --- > Fuzzbuster/M 5735a4518 > GCC/M 5741a4525 > GIF 5743c4527 < GM --- > GM/M 5746a4531 > GNU/M 5750a4536,4537 > GPS > GPU 5757,5759d4543 < Gabbey/M < Gabbi/M < Gabbie/M 5762d4545 < Gabey/M 5764c4547 < Gabie/M --- > Gable/M 5768c4551 < Gabriel --- > Gabriel/M 5771d4553 < Gabriell/M 5774,5776d4555 < Gabriellia/M < Gabriello/M < Gabrila/M 5779d4557 < Gaddafi 5784d4561 < Gaelan/M 5786,5787c4563,4565 < Gagarin < Gage --- > Gagarin/M > Gage/M > Gaia/M 5789d4566 < Gaile/M 5793d4569 < Gal/N 5796,5798c4572,4574 < Galatea < Galatia < Galatians --- > Galatea/M > Galatia/M > Galatians/M 5800c4576 < Galbraith --- > Galbraith/M 5802,5803c4578,4579 < Galen < Galibi --- > Galen/M > Galibi/M 5805c4581 < Galilee --- > Galilee/M 5810d4585 < Gallard/M 5812c4587 < Gallic --- > Gallic/M 5816c4591 < Gallup --- > Gallup/M 5818c4593 < Galsworthy --- > Galsworthy/M 5820,5821c4595 < Galvani < Galven/M --- > Galvani/M 5826c4600 < Gamay --- > Gamay/M 5834a4609 > Gandalf/M 5836c4611 < Gandhian --- > Gandhian/M 5840d4614 < Gannie/M 5842d4615 < Ganny/M 5846,5848c4619 < Gar/MH < Garald/M < Garbo --- > Garbo/M 5851,5852d4621 < Gardener/M < Gardie/M 5855d4623 < Gardy/M 5857d4624 < Garek/M 5862c4629 < Gargantua --- > Gargantua/M 5864,5870c4631,4632 < Garik/M < Garland < Garmin/M < Garner < Garnet/M < Garnette/M < Garold/M --- > Garland/M > Garner/M 5872,5874d4633 < Garrek/M < Garret/M < Garreth/M 5876,5880c4635,4636 < Garrick < Garrik/M < Garrison < Garrot/M < Garrott/M --- > Garrick/M > Garrison/M 5883,5884c4639 < Garv/M < Garvey --- > Garvey/M 5886,5887d4640 < Garvy/M < Garwin/M 5889c4642 < Gary --- > Gary/M 5896c4649 < Gasser --- > Gasser/M 5898c4651,4652 < Gates --- > Gastroenterology > Gates/M 5906d4659 < Gaultiero/M 5908c4661 < Gaussian --- > Gaussian/M 5911c4664 < Gautier --- > Gautier/M 5916,5917d4668 < Gavra/M < Gavrielle/M 5919,5920c4670 < Gawen/M < Gay --- > Gay/M 5922,5929c4672 < Gayel/M < Gayelord/M < Gayla/M < Gayle/RM < Gayleen/M < Gaylene/M < Gayler/M < Gaylor/M --- > Gayle/M 5932,5933c4675,4676 < Gaza < Gaziantep --- > Gaza/M > Gaziantep/M 5938,5939d4680 < Gearalt/M < Gearard/M 5941d4681 < Geer/M 5944c4684 < Gehrig --- > Gehrig/M 5948d4687 < Gelya/M 5949a4689 > Gen/M 5962,5964d4701 < Genni/M < Gennie/M < Gennifer/M 5968,5970c4705 < Genovera/M < Gentile/MS < Gentoo --- > Gentoo/M 5972d4706 < Genvieve/M 5976,5977d4709 < Geoffry/M < Georas/M 5981,5984d4712 < Georgeanna/M < Georgeanne/M < Georgena/M < Georgeta/M 5986,5987c4714 < Georgetta/M < Georgette --- > Georgette/M 5993d4719 < Georgianne/M 5996d4721 < Georgine/M 5997a4723 > Ger/M 5999d4724 < Geralda/M 6005c4730 < Gerek/M --- > Gere/M 6007d4731 < Gerhardine/M 6010,6013d4733 < Gerianna/M < Gerianne/M < Gerick/M < Gerik/M 6015d4734 < Gerladina/M 6019d4737 < Germana/M 6022d4739 < Germayne/M 6024c4741 < Geronimo --- > Geronimo/M 6027,6028d4743 < Gerrie/M < Gerrilee/M 6030c4745 < Gershwin --- > Gershwin/M 6032,6033d4746 < Gerta/M < Gerti/M 6036d4748 < Gertruda/M 6042,6043c4754,4755 < Gethsemane < Getty --- > Gethsemane/M > Getty/M 6045c4757,4758 < Gewurztraminer --- > Gewurztraminer/M > Gewürztraminer/M 6048,6049c4761 < Ghanian/MS < Ghats --- > Ghats/M 6051,6056c4763,4765 < Ghent < Gherardo/M < Ghibelline < Giacinta/M < Giacobo/M < Giacometti --- > Ghent/M > Ghibelline/M > Giacometti/M 6058d4766 < Giacopo/M 6060,6061d4767 < Giana/M < Gianina/M 6066d4771 < Giavani/M 6069,6072c4774,4775 < Gibbie/M < Gibbon < Gibbs < Gibby/M --- > Gibbon/M > Gibbs/M 6074,6077c4777,4780 < Gibson < Gide < Gideon < Gielgud --- > Gibson/M > Gide/M > Gideon/M > Gielgud/M 6079c4782 < Giff/MR --- > Giff/M 6081,6082d4783 < Giffer/M < Giffie/M 6084d4784 < Giffy/M 6089d4788 < Gilberta/M 6091,6092d4789 < Gilbertina/M < Gilbertine 6094d4790 < Gilburt/M 6097,6101c4793,4796 < Gilead < Gilemette/M < Giles < Gilgamesh < Gill --- > Gilead/M > Giles/M > Gilgamesh/M > Gill/M 6104c4799 < Gillespie --- > Gillespie/M 6106d4800 < Gilli/M 6109c4803 < Gillie/M --- > Gillie's 6111a4806 > Gilman 6114d4808 < Ginelle/M 6118d4811 < Ginni/M 6120d4812 < Ginnifer/M 6123c4815 < Ginsberg --- > Ginsberg/M 6128d4819 < Giorgia/M 6130,6131c4821,4822 < Giorgione < Giotto --- > Giorgione/M > Giotto/M 6134,6136d4824 < Gipsy/SM < Giralda/M < Giraldo/M 6138c4826 < Giraudoux --- > Giraudoux/M 6140d4827 < Giselbert/M 6142d4828 < Gisella/M 6144,6145c4830,4831 < Gish < Giuditta/M --- > Gish/M > GitHub/M 6151,6152d4836 < Giustina/M < Giustino/M 6155d4838 < Gizela/M 6157,6158d4839 < Glad/M < Gladi/M 6160,6161c4841,4842 < Gladys < Glaser --- > Gladys/M > Glaser/M 6168d4848 < Gleda/M 6172d4851 < Glenden/M 6174d4852 < Glenine/M 6179,6181c4857 < Glennis/M < Glori/M < Gloria --- > Gloria/M 6183,6185c4859 < Gloriane/M < Glory/M < Gloucester --- > Gloucester/M 6189d4862 < Glynda/M 6192d4864 < Glynnis/M 6194,6195c4866 < Gnni/M < Gnostic --- > Gnostic/M 6197c4868,4869 < Goa --- > GnuPG > Goa/M 6200,6203c4872,4873 < Godard < Godart/M < Goddard < Goddart/M --- > Godard/M > Goddard/M 6205d4874 < Godfree/M 6207d4875 < Godfry/M 6212,6213c4880,4881 < Godthaab < Godunov --- > Godthaab/M > Godunov/M 6216,6217c4884,4885 < Goebbels < Goering --- > Goebbels/M > Goering/M 6221,6222c4889,4890 < Gog < Gogol --- > Gog/M > Gogol/M 6225c4893 < Golconda --- > Golconda/M 6227d4894 < Goldarina/M 6230,6231d4896 < Goldi/M < Goldia/M 6234,6235c4899 < Goldina/M < Golding --- > Golding/M 6237c4901 < Goldsmith --- > Goldsmith/M 6239c4903 < Goldwyn --- > Goldwyn/M 6241c4905 < Golgi --- > Golgi/M 6243c4907 < Goliath --- > Goliath/M 6246,6247c4910,4911 < Gompers < Gomulka --- > Gompers/M > Gomulka/M 6249c4913 < Gonzales --- > Gonzales/M 6252d4915 < Goober/M 6255c4918 < Goodman --- > Goodman/M 6259c4922 < Goodyear --- > Goodyear/M 6264,6265c4927 < Goraud/M < Gorbachev --- > Gorbachev/M 6270,6271c4932,4933 < Gordimer < Gordon --- > Gordimer/M > Gordon/M 6273c4935 < Gore --- > Gore/M 6276c4938 < Gorgas --- > Gorgas/M 6278c4940 < Gorgonzola --- > Gorgonzola/M 6283,6284c4945 < Gotham < Gothart/M --- > Gotham/M 6289,6290c4950,4951 < Gould < Gounod --- > Gould/M > Gounod/M 6292c4953 < Goya --- > Goya/M 6295,6296c4956,4957 < Gracchus < Grace --- > Gracchus/M > Grace/M 6301,6302d4961 < Gradeigh/M < Gradey/M 6304d4962 < Graehme/M 6308,6315c4966,4971 < Graham < Grahame < Graig/M < Grail < Gram/M < Grammy < Grampians < Gran/M --- > Graham/M > Grahame/M > Grail/M > Grammy/M > Grampians/M > Gran's 6319d4974 < Granny/M 6322d4976 < Granthem/M 6325c4979 < Grass --- > Grass/M 6328,6331c4982,4983 < Gratiana/M < Graves < Gray < Grayce/M --- > Graves/M > Gray/M 6333c4985 < Grecian --- > Grecian/M 6336c4988 < Greeley --- > Greeley/M 6338c4990 < Greene --- > Greene/M 6349d5000 < Greggory/M 6351d5001 < Gregoor/M 6353c5003 < Gregorian --- > Gregorian/M 6359,6361c5009,5011 < Grenadines < Grendel < Grenoble --- > Grenadines/M > Grendel/M > Grenoble/M 6363c5013 < Gresham --- > Gresham/M 6365d5014 < Gretal/M 6369d5017 < Grethel/M 6373,6374c5021,5022 < Grey < Grieg --- > Grey/M > Grieg/M 6377d5024 < Griffie/M 6379c5026 < Griffith --- > Griffith/M 6381,6382c5028 < Griffy/M < Grimes --- > Grimes/M 6385c5031 < Gris --- > Gris/M 6387d5032 < Grissel/M 6389,6390c5034 < Griz/M < Gromyko --- > Gromyko/M 6392,6395c5036,5038 < Gross < Grosz < Grotius < Grove/RM --- > Gross/M > Grosz/M > Grotius/M 6399c5042 < Grundy --- > Grundy/M 6402a5046,5047 > Gruyère/M > Grünewald/M 6405c5050 < Guadalquivir --- > Guadalquivir/M 6409d5053 < Gualterio/M 6417c5061 < Guatemalan/SM --- > Guatemalan/MS 6420,6421c5064 < Guelph < Guendolen/M --- > Guelph/M 6423d5065 < Guenna/M 6426,6429c5068,5070 < Guerrero < Guevara < Guggenheim < Guglielma/M --- > Guerrero/M > Guevara/M > Guggenheim/M 6437,6438d5077 < Guillema/M < Guillemette/M 6443d5081 < Guinna/M 6445,6446c5083,5084 < Guiyang < Guizot --- > Guiyang/M > Guizot/M 6449,6450c5087,5088 < Gujranwala < Gullah --- > Gujranwala/M > Gullah/M 6453,6454d5090 < Gun/M < Gunar/M 6456,6457d5091 < Gunner/M < Guntar/M 6459c5093 < Gunther --- > Gunther/M 6464,6466d5097 < Gusella/M < Guss < Gussi/M 6468c5099 < Gussy/M --- > Gussy's 6476,6481c5107,5109 < Gustie/M < Gusty/M < Gutenberg < Guthrey/M < Guthrie < Guthry/M --- > Gusty's > Gutenberg/M > Guthrie/M 6487c5115 < Gwalior --- > Gwalior/M 6490d5117 < Gwendolin/M 6493,6500d5119 < Gweneth/M < Gwenette/M < Gwenneth/M < Gwenni/M < Gwennie/M < Gwenny/M < Gwenora/M < Gwenore/M 6504a5124,5125 > Gödel/M > Göteborg/M 6506c5127,5129 < HBO --- > HBO/M > HDD > HDMI 6516a5140 > HPV 6528c5152 < Ha --- > Ha/M 6530c5154 < Habakkuk --- > Habakkuk/M 6532c5156 < Had/M --- > Had's 6535d5158 < Hadlee/M 6539c5162 < Hadrian --- > Hadrian/M 6542c5165 < Hagar --- > Hagar/M 6544c5167 < Haggai --- > Haggai/M 6546,6547c5169,5170 < Hague < Hahn --- > Hague/M > Hahn/M 6550d5172 < Hailee/M 6552,6553c5174 < Haily/M < Haiphong --- > Haiphong/M 6559c5180 < Hakluyt --- > Hakluyt/M 6561,6565c5182,5184 < Haldane < Hale < Haleakala < Haleigh/M < Halette/M --- > Haldane/M > Hale/M > Haleakala/M 6568d5186 < Halie/M 6570,6573c5188,5189 < Halimeda/M < Hall < Halley < Halli/M --- > Hall/M > Halley/M 6578,6579c5194 < Hallstatt < Hallsy/M --- > Hallstatt/M 6582,6583c5197,5198 < Halsey < Halsy/M --- > Hals/M > Halsey/M 6589c5204 < Hamhung --- > Hamhung/M 6595c5210 < Hamiltonian --- > Hamiltonian/M 6598,6599c5213 < Hamlen/M < Hamlet --- > Hamlet/M 6602,6603c5216,5217 < Hammarskjold < Hammerstein --- > Hammarskjold/M > Hammerstein/M 6605,6607c5219,5220 < Hammond < Hammurabi < Hamnet/M --- > Hammond/M > Hammurabi/M 6609,6611c5222,5224 < Hampton < Hamsun < Han/S --- > Hampton/M > Hamsun/M > Han/SM 6614c5227 < Hancock --- > Hancock/M 6616c5229 < Handy --- > Handy/M 6623c5236 < Hanni/SM --- > Hanni/M 6625,6626d5237 < Hannie/M < Hanny/M 6629a5241 > Hans/MN 6632d5243 < Hansiain/M 6634a5246 > Hanukah/M 6637c5249 < Happy/M --- > Happy's 6642c5254 < Harbin --- > Harbin/M 6646,6647c5258,5259 < Hardy < Hargreaves --- > Hardy/M > Hargreaves/M 6651,6656c5263,5264 < Harlen/M < Harlene/M < Harlequin < Harley < Harli/M < Harlie/M --- > Harlequin/M > Harley/M 6658c5266 < Harlow --- > Harlow/M 6663d5270 < Harmony/M 6666d5272 < Harp/MR 6671d5276 < Harrie/M 6674d5278 < Harrietta/M 6678a5283 > Harris/M 6681c5286 < Harrods --- > Harrods/M 6683,6684c5288,5289 < Hart < Harte --- > Hart/M > Harte/M 6692c5297 < Harvey --- > Harvey/M 6694d5298 < Harwilll/M 6696d5299 < Hasheem/M 6698,6699c5301 < Hasidim < Haskel/M --- > Hasidim/M 6705,6707c5307,5309 < Hasty/M < Hatfield < Hathaway --- > Hasty's > Hatfield/M > Hathaway/M 6709c5311 < Hatteras --- > Hatteras/M 6713c5315 < Hauptmann --- > Hauptmann/M 6717,6719c5319,5320 < Havarti < Havel < Haven/M --- > Havarti/M > Havel/M 6724,6725c5325,5326 < Hawking < Hawkins --- > Hawking/M > Hawkins/M 6727c5328 < Hawthorne --- > Hawthorne/M 6731a5333 > Hayek/M 6734,6735c5336,5338 < Haynes < Hayward --- > Haynes/M > Hays/M > Hayward/M 6739d5341 < Haze/M 6742c5344 < Hazlitt --- > Hazlitt/M 6745,6747c5347,5348 < Heall/M < Hearst < Heath/R --- > Hearst/M > Heath/MR 6749,6750c5350 < Heaven/MS < Heaviside --- > Heaviside/M 6752c5352 < Hebe --- > Hebe/M 6754c5354 < Hebraic --- > Hebraic/M 6756a5357 > Hebrews/M 6758c5359 < Hecate --- > Hecate/M 6760,6761c5361 < Hecuba < Heda/M --- > Hecuba/M 6763,6764d5362 < Heddi/M < Heddie/M 6766,6767d5363 < Hedvig/M < Hedvige/M 6769d5364 < Hedwiga/M 6774,6778c5369,5372 < Hegelian < Hegira < Heida/M < Heidegger < Heidelberg --- > Hegelian/M > Hegira/M > Heidegger/M > Heidelberg/M 6780,6781c5374 < Heidie/M < Heifetz --- > Heifetz/M 6783,6784c5376 < Heindrick/M < Heine --- > Heine/M 6788,6791c5380,5381 < Heinrick/M < Heinrik/M < Heinz < Heisenberg --- > Heinz/M > Heisenberg/M 6793c5383 < Hejira/MS --- > Hejira's 6795d5384 < Helaine/M 6799d5387 < Helenka/M 6802,6803c5390,5391 < Helicon < Heliopolis --- > Helicon/M > Heliopolis/M 6805d5392 < Hell/SMR 6810,6813c5397,5400 < Hellenistic < Hellenization < Hellenize/DSG < Heller --- > Hellenistic/M > Hellenization/M > Hellenize/MD > Heller/M 6815,6816c5402 < Helli/M < Hellman --- > Hellman/M 6819d5404 < Helsa/M 6824d5408 < Helyn/M 6828a5413 > Hendricks/M 6830,6833c5415,5416 < Hendrika/M < Hendrix < Henka/M < Henley --- > Hendrix/M > Henley/M 6836,6837d5418 < Henrie/M < Henrieta/M 6842d5422 < Henryetta/M 6845c5425 < Hepburn --- > Hepburn/M 6848c5428 < Hepplewhite --- > Hepplewhite/M 6851c5431 < Heraclitus --- > Heraclitus/M 6853,6855c5433,5434 < Herb/M < Herbart < Herbert --- > Herbart/M > Herbert/M 6863,6864c5442 < Herculie/M < Herder --- > Herder/M 6866c5444 < Herero --- > Herero/M 6870c5448 < Hermaphroditus --- > Hermaphroditus/M 6873,6874d5450 < Hermie/M < Hermina/M 6878c5454 < Hermitage --- > Hermitage/M 6882d5457 < Hermy/M 6890c5465 < Herrick --- > Herrick/M 6893c5468 < Herschel --- > Herschel/M 6905,6906c5480,5481 < Herzegovina < Herzl --- > Herzegovina/M > Herzl/M 6908,6912c5483,5487 < Hesiod < Hesperus < Hess < Hesse < Hessian --- > Hesiod/M > Hesperus/M > Hess/M > Hesse/M > Hessian/M 6914d5488 < Hesther/M 6917d5490 < Hetti/M 6920,6922c5493 < Hew/M < Hewe/M < Hewet/M --- > Hew's 6924d5494 < Hewie/M 6927,6928c5497,5498 < Heyerdahl < Heywood --- > Heyerdahl/M > Heywood/M 6930c5500 < Hezekiah --- > Hezekiah/M 6933,6934c5503,5504 < Hi/M < Hialeah --- > Hi's > Hialeah/M 6939c5509 < Hickok --- > Hickok/M 6941c5511 < Hieronymus --- > Hieronymus/M 6944c5514 < Highlander/MS --- > Highlander/SM 6948d5517 < Hilarius/M 6950c5519 < Hilbert --- > Hilbert/M 6952,6953d5520 < Hildagard/M < Hildagarde/M 6955,6956c5522 < Hildebrand < Hildegaard/M --- > Hildebrand/M 6960c5526 < Hill --- > Hill/M 6962,6963c5528,5529 < Hillary < Hillel --- > Hillary/M > Hillel/M 6966,6967d5531 < Hilliary/M < Hillie/M 6970c5534 < Hilly/RM --- > Hilly's 6972c5536 < Hilton --- > Hilton/M 6975c5539,5540 < Himmler --- > Himalayas/M > Himmler/M 6977,6980c5542,5544 < Hinda/M < Hindemith < Hindenburg < Hindi --- > Hindemith/M > Hindenburg/M > Hindi/M 6985c5549 < Hines --- > Hines/M 6988c5552 < Hipparchus --- > Hipparchus/M 6990,6991c5554,5555 < Hippocratic < Hiram --- > Hippocratic/M > Hiram/M 6993c5557 < Hirohito --- > Hirohito/M 7000c5564 < Hitchcock --- > Hitchcock/M 7003c5567 < Hmong --- > Hmong/M 7005d5568 < Hobard/M 7007,7009c5570,5571 < Hobbes < Hobbs < Hobey/M --- > Hobbes/M > Hobbs/M 7013,7014c5575,5576 < Hodgkin < Hoebart/M --- > Hodges/M > Hodgkin/M 7020c5582 < Hogarth --- > Hogarth/M 7022,7023c5584,5585 < Hohenlohe < Hohenstaufen --- > Hohenlohe/M > Hohenstaufen/M 7026c5588 < Hohokam --- > Hohokam/M 7028,7029c5590,5591 < Hokusai < Holbein --- > Hokusai/M > Holbein/M 7033c5595 < Holiday --- > Holiday/M 7039d5600 < Holli/SM 7040a5602 > Hollis/M 7042,7043c5604 < Holly < Hollyanne/M --- > Holly/M 7047c5608 < Holocaust --- > Holocaust/M 7049c5610 < Holst --- > Holst/M 7051c5612 < Holt --- > Holt/M 7053,7055c5614 < Homere/M < Homeric < Homerus/M --- > Homeric/M 7061d5619 < Honey/M 7063c5621,5622 < Honiara --- > Hong > Honiara/M 7065c5624 < Honor/B --- > Honorable 7068,7069c5627,5629 < Hood < Hooke/R --- > Hood/M > Hooke/RM > Hooker/M 7074c5634 < Hope --- > Hope/M 7077,7079c5637,5639 < Hopkins < Hopper < Horace --- > Hopkins/M > Hopper/M > Horace/M 7085,7086c5645,5646 < Hormuz < Horn --- > Hormuz/M > Horn/M 7089c5649 < Horowitz --- > Horowitz/M 7091,7092c5651 < Hort/MN < Horten/M --- > Hort/M 7095c5654 < Horthy --- > Horthy/M 7103c5662 < Houdini --- > Houdini/M 7105,7106c5664,5665 < House < Housman --- > House/M > Housman/M 7110,7111c5669,5670 < Howard < Howe --- > Howard/M > Howe/M 7112a5672 > Howells/M 7116c5676 < Hoyle --- > Hoyle/M 7120,7121c5680,5681 < Huang < Hubbard --- > Huang/M > Hubbard/M 7123d5682 < Hube/RM 7126,7128d5684 < Huberto/M < Hubey/M < Hubie/M 7136c5692 < Huggins --- > Huggins/M 7137a5694 > Hughes/M 7139d5695 < Hugibert/M 7143c5699 < Hui --- > Hui/M 7149,7150c5705,5706 < Humboldt < Hume --- > Humboldt/M > Hume/M 7152,7153d5707 < Humfrid/M < Humfried/M 7155,7156c5709,5710 < Humphrey < Humvee --- > Humphrey/SM > Humvee/M 7158,7159c5712 < Hunfredo/M < Hung --- > Hung/M 7163c5716 < Hunt/R --- > Hunt/MR 7166d5718 < Huntlee/M 7168,7170c5720 < Huntsville < Hurlee/M < Hurleigh/M --- > Huntsville/M 7172c5722 < Huron --- > Huron/M 7174c5724 < Hus --- > Hus/M 7176,7180c5726,5730 < Hussein < Husserl < Hussite < Huston < Hutchinson --- > Hussein/M > Husserl/M > Hussite/M > Huston/M > Hutchinson/M 7182c5732 < Hutu --- > Hutu/M 7184c5734 < Huygens --- > Huygens/M 7186,7187d5735 < Hyacinth/M < Hyacintha/M 7189,7190d5736 < Hyacinthia/M < Hyacinthie/M 7193,7194c5739,5740 < Hyde < Hyderabad --- > Hyde/M > Hyderabad/M 7199d5744 < Hynda/M 7202a5748 > Héloise/M 7213a5760 > IDE 7214a5762,5763 > IED > IEEE 7227a5777 > IP 7229c5779 < IPO/MS --- > IPO/SM 7231a5782 > IRC 7234c5785,5787 < ISO --- > ISO/M > ISP > ISS 7237a5791 > IVF 7245,7247c5799 < Ibadan < Ibbie/M < Ibby/M --- > Ibadan/M 7249,7250c5801,5802 < Iberian < Ibiza --- > Iberian/M > Ibiza/M 7252c5804 < Ibo --- > Ibo/M 7262c5814 < Ida --- > Ida/M 7266,7273c5818 < Idalia/M < Idalina/M < Idaline/M < Idell/M < Idelle/M < Idette/M < Ieyasu < Iggie/M --- > Ieyasu/M 7277,7278c5822 < Ignacius/M < Ignatius --- > Ignatius/M 7283d5826 < Ijssel 7287,7290c5830,5831 < Ikhnaton < Ila < Ilaire/M < Ilario/M --- > Ikhnaton/M > Ila/M 7292d5832 < Ileane/M 7295d5834 < Ilise/M 7301c5840 < Illuminati --- > Illuminati/M 7304,7306d5842 < Ilysa/M < Ilyse/M < Ilyssa/M 7315d5850 < Imojean/M 7330a5866 > Indies/M 7333c5869 < Indochinese --- > Indochinese/M 7335,7336c5871,5872 < Indonesian/MS < Indore --- > Indonesian/SM > Indore/M 7340,7342c5876 < Ines < Inesita/M < Inessa/M --- > Ines/M 7345,7350c5879 < Ingaberg/M < Ingaborg/M < Ingamar/M < Ingar/M < Inge/R < Ingeberg/M --- > Inge/RM 7352d5880 < Ingelbert/M 7355d5882 < Inglebert/M 7359d5885 < Ingra/M 7361c5887 < Ingres --- > Ingres/M 7363,7364d5888 < Ingrim/M < Ingunna/M 7372c5896 < Inquisition --- > Inquisition/M 7373a5898 > Instagram/M 7376c5901 < Intelsat --- > Intelsat/M 7378,7379c5903,5904 < Internet/S < Interpol --- > Internet/SM > Interpol/M 7384,7385d5908 < Iolande/M < Iolanthe/M 7387c5910 < Ionesco --- > Ionesco/M 7390,7392d5912 < Iorgo/MS < Iormina/M < Iosep/M 7395c5915 < Iphigenia --- > Iphigenia/M 7398,7399c5918,5919 < Iqbal < Iquitos --- > Iqbal/M > Iquitos/M 7408c5928 < Irene --- > Irene/M 7410c5930 < Iris --- > Iris/M 7413c5933 < Irishmen --- > Irishmen/M 7415,7417c5935,5936 < Irishwomen < Irita/M < Irkutsk --- > Irishwomen/M > Irkutsk/M 7421c5940 < Irrawaddy --- > Irrawaddy/M 7425,7426c5944,5945 < Irvine < Irving --- > Irvine/M > Irving/M 7428d5946 < Irwinn/M 7433,7434c5951 < Isabelita/M < Isabella --- > Isabella/M 7436,7438d5952 < Isac/M < Isacco/M < Isador/M 7441,7442c5955 < Isahella/M < Isaiah --- > Isaiah/M 7444,7447c5957,5959 < Iscariot < Iseabal/M < Isfahan < Isherwood --- > Iscariot/M > Isfahan/M > Isherwood/M 7449c5961 < Ishmael --- > Ishmael/M 7452d5963 < Isiahi/M 7461c5972 < Islamic --- > Islamic/M 7463c5974,5976 < Islamist --- > Islamist/M > Islamophobia > Islamophobic 7467,7468c5980 < Isolde < Ispahan --- > Isolde/M 7472c5984 < Israelite --- > Israelite/M 7474,7477c5986 < Issachar < Issi/M < Issiah/M < Issie/M --- > Issachar/M 7488,7491c5997,5999 < Itch/M < Ithaca < Ithacan < Ito --- > Ithaca/M > Ithacan/M > Ito/M 7493c6001 < Ivan --- > Ivan/M 7498,7499c6006 < Ivett/M < Ivette/M --- > Ives/M 7502d6008 < Ivonne/M 7506c6012 < Ivy --- > Ivy/M 7509,7510d6014 < Izabel/M < Izak/M 7513,7514c6017,6018 < Izhevsk < Izmir --- > Izhevsk/M > Izmir/M 7523c6027 < JPEG/MS --- > JPEG/SM 7526,7527d6029 < Jacenta/M < Jacinda/M 7529,7532c6031 < Jacintha/M < Jacinthe/M < Jack < Jackelyn/M --- > Jack/M 7537,7538d6035 < Jackquelin/M < Jackqueline/M 7540c6037 < Jacksonian --- > Jacksonian/M 7543d6039 < Jaclin/M 7547c6043 < Jacobi --- > Jacobi/M 7550a6047 > Jacobs/M 7552,7553c6049 < Jacquard < Jacquelin/M --- > Jacquard/M 7556,7561c6052 < Jacquelynn/M < Jacquenetta/M < Jacquenette/M < Jacques < Jacquetta/M < Jacquette/M --- > Jacques/M 7564,7565c6055 < Jacuzzi < Jacynth/M --- > Jacuzzi/M 7567d6056 < Jade/M 7574,7576c6063 < Jaimie/M < Jain < Jaine/M --- > Jain/M 7578c6065 < Jaipur --- > Jaipur/M 7581d6067 < Jakie/M 7592,7593c6078 < Jamestown < Jamesy/M --- > Jamestown/M 7598,7599d6082 < Jamill/M < Jamima/M 7601,7602d6083 < Jammal/M < Jammie/M 7606,7608d6086 < Janaya/M < Janaye/M < Jandy/M 7610,7612d6087 < Janean/M < Janeczka/M < Janeen/M 7614,7615d6088 < Janel/M < Janela/M 7617d6089 < Janella/M 7619,7621d6090 < Janene/M < Janenna/M < Janessa/M 7623,7624d6091 < Janeta/M < Janetta/M 7626d6092 < Janeva/M 7628d6093 < Jania/M 7631d6095 < Janifer/M 7636d6099 < Janith/M 7638d6100 < Janka/M 7640,7641d6101 < Jannel/M < Jannelle/M 7644d6103 < Janot/M 7649a6109 > Jap/SM 7653,7660d6112 < Jaquelin/M < Jaquelyn/M < Jaquenetta/M < Jaquenette/M < Jaquith/M < Jarad/M < Jard/M < Jareb/M 7662,7665c6114 < Jarib/M < Jarid/M < Jarlsberg < Jarrad/M --- > Jarlsberg/M 7669d6117 < Jarrid/M 7673d6120 < Jasen/M 7675d6121 < Jasmina/M 7679,7680c6125 < Jasun/M < Jataka --- > Jataka/M 7685,7686c6130,6131 < Jaxartes < Jay --- > Jaxartes/M > Jay/M 7689c6134,6135 < Jaycee/S --- > Jaycee/MS > Jaycees/M 7692,7693d6137 < Jaymee/M < Jaymie/M 7695d6138 < Jaynell/M 7697,7698d6139 < Jazmin/M < Jdavie/M 7702d6142 < Jeanelle/M 7706d6145 < Jeanna/M 7711d6149 < Jecho/M 7713,7714d6150 < Jedd/M < Jeddy/M 7718c6154 < Jeep --- > Jeep/M 7723c6159 < Jeffersonian --- > Jeffersonian/M 7725,7726c6161 < Jeffie/M < Jeffrey --- > Jeffrey/M 7728,7730c6163 < Jeffy/M < Jehanna/M < Jehoshaphat --- > Jehoshaphat/M 7734,7735d6166 < Jelene/M < Jemie/M 7737,7738d6167 < Jemimah/M < Jemmie/M 7742,7746d6170 < Jenda/M < Jenelle/M < Jeni/M < Jenica/M < Jeniece/M 7748,7751c6172 < Jeniffer/M < Jenilee/M < Jenine/M < Jenkins --- > Jenkins/M 7754,7755c6175 < Jennee/M < Jennette/M --- > Jenner/M 7757d6176 < Jennica/M 7760,7761d6178 < Jennilee/M < Jennine/M 7766,7767c6183 < Jephthah < Jerad/M --- > Jephthah/M 7769,7771d6184 < Jeralee/M < Jeramey/M < Jeramie/M 7773d6185 < Jereme/M 7781d6192 < Jermain/M 7783,7784c6194 < Jermayne/M < Jeroboam --- > Jeroboam/M 7786,7787c6196 < Jerome < Jeromy/M --- > Jerome/M 7790,7792d6198 < Jerrilee/M < Jerrilyn/M < Jerrine/M 7795d6200 < Jerrome/M 7797d6201 < Jerrylee/M 7802,7804d6205 < Jessa/M < Jessalin/M < Jessalyn/M 7807,7809c6208 < Jesse < Jessee/M < Jesselyn/M --- > Jesse/M 7814d6212 < Jessika/M 7817,7818c6215 < Jesus < Jeth/M --- > Jesus/M 7820c6217 < Jetway --- > Jetway/M 7824d6220 < Jewelle/M 7826,7827c6222,6223 < Jewish/P < Jewry --- > Jewish/PM > Jewry/M 7829,7837c6225,6227 < Jidda < Jilin < Jill < Jillana/M < Jillane/M < Jillayne/M < Jilleen/M < Jillene/M < Jilli/M --- > Jidda/M > Jilin/M > Jill/M 7839d6228 < Jillie/M 7845,7846c6234,6235 < Jinan < Jinnah --- > Jinan/M > Jinnah/M 7848c6237 < Jivaro --- > Jivaro/M 7851c6240 < Joan --- > Joan/M 7860,7863c6249 < Jobey/M < Jobi/M < Jobie/M < Jobina/M --- > Jobs/M 7865,7867c6251 < Jobye/M < Jobyna/M < Jocasta --- > Jocasta/M 7869d6252 < Joceline/M 7872,7873c6255,6256 < Jock < Jockey --- > Jock/M > Jockey/M 7875d6257 < Jodee/M 7879,7885c6261,6262 < Joe < Joeann/M < Joel/Y < Joela/M < Joelie/M < Joell/MN < Joella/M --- > Joe/M > Joel/M 7887,7892d6263 < Joellen/M < Joelly/M < Joellyn/M < Joelynn/M < Joesph/M < Joete/M 7898,7899c6269 < Johannah/M < Johannes --- > Johannes/M 7902,7903d6271 < Johna/MH < Johnath/M 7906d6273 < Johnette/M 7908,7909c6275 < Johnna/M < Johnnie --- > Johnnie/M 7910a6277 > Johns/M 7913,7914d6279 < Johny/M < Joice/M 7916,7917d6280 < Jolee/M < Joleen/M 7919d6281 < Joletta/M 7922,7924c6284,6285 < Joliet < Joline/M < Jolson --- > Joliet/M > Jolson/M 7926,7927d6286 < Jolyn/M < Jolynn/M 7931c6290 < Jonas --- > Jonas/M 7935,7940c6294,6297 < Jonell/M < Joni/SM < Jonie/M < Jonson < Joplin < Jordain/M --- > Jones/M > Joni/M > Jonson/M > Joplin/M 7944d6300 < Jordanna/M 7946,7947d6301 < Jorey/M < Jorgan/M 7950,7952d6303 < Jorie/M < Jorrie/M < Jorry/M 7956d6306 < Josee/M 7960d6309 < Joseito/M 7963,7964c6312 < Josephina/M < Josephine --- > Josephine/M 7967c6315 < Josephus --- > Josephus/M 7969,7970c6317 < Josh < Joshia/M --- > Josh/M 7972,7974c6319 < Joshuah/M < Josi/M < Josiah --- > Josiah/M 7979,7980c6324 < Josy/M < Joule --- > Joule/M 7984c6328 < Jovian --- > Jovian/M 7987,7991c6331,6332 < Joyan/M < Joyann/M < Joyce < Joycean < Joycelin/M --- > Joyce/M > Joycean/M 7997d6337 < Jsandye/M 8002c6342 < Jubal --- > Jubal/M 8004c6344,6345 < Judah --- > Judaeo > Judah/M 8010,8011c6351,6352 < Jude < Judea --- > Jude/M > Judea/M 8014d6354 < Judie/M 8016,8017d6355 < Juditha/M < Judon/M 8019,8020c6357 < Judy < Judye/M --- > Judy/M 8022d6358 < Juieta/M 8025c6361 < Julee/M --- > Jules/M 8028,8029c6364,6365 < Julian < Juliana --- > Julian/M > Juliana/M 8031d6366 < Juliann/M 8035,8038c6370,6371 < Julienne/M < Juliet < Julieta/M < Julietta/M --- > Julienne's > Juliet/M 8040,8041d6372 < Julina/M < Juline/M 8043,8044d6373 < Julissa/M < Julita/M 8048c6377 < Jun --- > Jun/M 8051d6379 < Junette/M 8053,8054c6381,6382 < Jungfrau < Jungian --- > Jungfrau/M > Jungian/M 8057d6384 < Junina/M 8064d6390 < Justen/M 8070,8072d6395 < Justinn/M < Justino/M < Justis/M 8075c6398 < Juvenal --- > Juvenal/M 8081c6404 < KGB --- > KGB/M 8088c6411 < Kaaba --- > Kaaba/M 8090,8093d6412 < Kacey/M < Kacie/M < Kacy/M < Kaela/M 8095,8097c6414,6415 < Kafkaesque < Kagoshima < Kahaleel/M --- > Kafkaesque/M > Kagoshima/M 8102c6420 < Kaifeng --- > Kaifeng/M 8104,8105d6421 < Kaile/M < Kailey/M 8111d6426 < Kaitlynn/M 8113d6427 < Kakalina/M 8116,8117c6430,6431 < Kalamazoo < Kalashnikov --- > Kalamazoo/M > Kalashnikov/M 8119,8123c6433,6434 < Kale/M < Kaleb/M < Kaleena/M < Kalevala < Kalgoorlie --- > Kalevala/M > Kalgoorlie/M 8125d6435 < Kalie/M 8127d6436 < Kalila/M 8129,8130d6437 < Kalinda/M < Kalindi/M 8132,8135c6439 < Kalli/M < Kally/M < Kalmyk < Kalvin/M --- > Kalmyk/M 8137c6441 < Kamchatka --- > Kamchatka/M 8139,8142d6442 < Kameko/M < Kamila/M < Kamilah/M < Kamillah/M 8145c6445 < Kan/S --- > Kan/SM 8147,8149c6447,6448 < Kandace/M < Kandahar < Kandinsky --- > Kandahar/M > Kandinsky/M 8154,8155c6453,6454 < Kano < Kanpur --- > Kano/M > Kanpur/M 8157c6456 < Kansas --- > Kansas/M 8159c6458 < Kantian --- > Kantian/M 8161c6460 < Kaohsiung --- > Kaohsiung/M 8165,8168c6464,6465 < Karaganda < Karakorum < Karalee/M < Karalynn/M --- > Karaganda/M > Karakorum/M 8171d6467 < Karee/M 8175d6470 < Karena/M 8178,8181d6472 < Karia/M < Karie/M < Karil/M < Karilynn/M 8186,8190c6477 < Kariotta/M < Karisa/M < Karissa/M < Karita/M < Karl/MNX --- > Karl/MN 8192,8194d6478 < Karlan/M < Karlee/M < Karleen/M 8196,8199d6479 < Karlene/M < Karlie/M < Karlik/M < Karlis 8201,8202d6480 < Karlotta/M < Karlotte/M 8204,8205d6481 < Karlyn/M < Karmen/M 8208d6483 < Karney/M 8211,8212d6485 < Karola/M < Karole/M 8217,8218d6489 < Karrah/M < Karrie/M 8220,8223d6490 < Karry/M < Kary/M < Karyl/M < Karylin/M 8233,8236d6499 < Kassey/M < Kassi/M < Kassia/M < Kassie/M 8241d6503 < Katee/M 8244,8245d6505 < Katerine/M < Katey/M 8250d6509 < Katharyn/M 8256c6515 < Kathiawar --- > Kathiawar/M 8259d6517 < Kathlin/M 8263d6520 < Kathryne/M 8265d6521 < Kathye/M 8269d6524 < Katine/M 8271,8273c6526 < Katleen/M < Katlin/M < Katmai --- > Katmai/M 8275c6528 < Katowice --- > Katowice/M 8279,8282d6531 < Katti/M < Kattie/M < Katuscha/M < Katusha/M 8290,8291c6539,6540 < Kawasaki < Kay --- > Kawasaki/M > Kay/M 8295d6543 < Kayle/M 8297,8299d6544 < Kayley/M < Kaylil/M < Kaylyn/M 8305c6550 < Kazantzakis --- > Kazantzakis/M 8310d6554 < Keary/M 8312c6556 < Keats --- > Keats/M 8316d6559 < Keelby/M 8318d6560 < Keelia/M 8320d6561 < Keen/M 8323c6564 < Keewatin --- > Keewatin/M 8328,8336d6568 < Kelbee/M < Kelby/M < Kelcey/M < Kelci/M < Kelcie/M < Kelcy/M < Kele/M < Kelila/M < Kellby/M 8338c6570 < Keller --- > Keller/M 8341d6572 < Kellia/M 8343,8347c6574,6575 < Kellina/M < Kellogg < Kellsie/M < Kelly < Kellyann/M --- > Kellogg/M > Kelly/M 8349,8354c6577,6578 < Kelsi/M < Kelsy/M < Kelt/SM < Kelvin < Kelwin/M < Kemerovo --- > Kelvin/M > Kemerovo/M 8356c6580,6581 < Kempis --- > Kempis/M > Ken/M 8361d6585 < Kendre/M 8370d6593 < Kennie/M 8373d6595 < Kenon/M 8376c6598 < Kentuckian/SM --- > Kentuckian/MS 8380c6602 < Kenyatta --- > Kenyatta/M 8390,8391d6611 < Keriann/M < Kerianne/M 8393d6612 < Kermie/M 8395,8398c6614,6616 < Kermy/M < Kern < Kerouac < Kerr --- > Kern/M > Kerouac/M > Kerr/M 8401,8403c6619 < Kerrill/M < Kerrin/M < Kerry --- > Kerry/M 8406,8414c6622 < Kerwinn/M < Kesley/M < Keslie/M < Kessia/M < Kessiah/M < Kettering < Ketti/M < Kettie/M < Ketty/M --- > Kettering/M 8419,8421c6627 < Kevina/M < Kevlar < Kevon/M --- > Kevlar/M 8423,8425c6629,6630 < Kevyn/M < Kewpie < Key --- > Kewpie/M > Key/M 8427,8429c6632,6634 < Keynesian < Khabarovsk < Khachaturian --- > Keynesian/M > Khabarovsk/M > Khachaturian/M 8442,8443c6647,6648 < Khrushchev < Khufu --- > Khrushchev/M > Khufu/M 8448,8450c6653 < Kiah/M < Kial/M < Kickapoo --- > Kickapoo/M 8452,8456c6655,6656 < Kiel < Kiele/M < Kienan/M < Kierkegaard < Kiersten/M --- > Kiel/M > Kierkegaard/M 8460,8463c6660,6661 < Kijiji/M < Kikelia/M < Kikuyu < Kilauea --- > Kikuyu/M > Kilauea/M 8469,8470d6666 < Killie/M < Killy/M 8475,8477c6671 < Kimberlee/M < Kimberley < Kimberli/M --- > Kimberley/M 8479d6672 < Kimberlyn/M 8481,8483d6673 < Kimbra/M < Kimmi/M < Kimmie/M 8485d6674 < Kin/M 8489d6677 < Kingsly/M 8493d6680 < Kinna/M 8495,8497c6682 < Kinnie/M < Kinny/M < Kinsey --- > Kinsey/M 8503,8507c6688 < Kipp/MR < Kippar/M < Kipper/M < Kippie/M < Kippy/M --- > Kipp/M 8509,8510d6689 < Kirbee/M < Kirbie/M 8512c6691 < Kirchhoff --- > Kirchhoff/M 8520c6699 < Kirk --- > Kirk/M 8523c6702 < Kirov --- > Kirov/M 8525,8529c6704 < Kirsteni/M < Kirsti/M < Kirstin/M < Kirstyn/M < Kisangani --- > Kisangani/M 8532,8535c6707 < Kissee/M < Kissiah/M < Kissie/M < Kissinger --- > Kissinger/M 8538,8540c6710 < Kitchener < Kitti/M < Kittie/M --- > Kitchener/M 8543,8545c6713 < Kiwanis < Kizzee/M < Kizzie/M --- > Kiwanis/M 8549,8550d6716 < Klarika/M < Klarrisa/M 8552c6718 < Klee --- > Klee/M 8557,8560c6723,6724 < Kleon/M < Kliment/M < Klimt < Kline --- > Klimt/M > Kline/M 8567c6731 < Knickerbocker --- > Knickerbocker/M 8569c6733 < Knight --- > Knight/M 8571,8574c6735,6738 < Knossos < Knowles < Knox < Knoxville --- > Knossos/M > Knowles/M > Knox/M > Knoxville/M 8578,8579c6742,6743 < Kobe < Koch --- > Kobe/M > Koch/M 8582c6746 < Kodak --- > Kodak/M 8585,8588c6749,6751 < Koenraad/M < Koestler < Kohinoor < Kohl --- > Koestler/M > Kohinoor/M > Kohl/M 8591,8592c6754 < Koln/M < Kolyma --- > Kolyma/M 8597d6758 < Konstance/M 8599,8600d6759 < Konstantine/M < Konstanze/M 8605,8606d6763 < Koral/M < Koralle/M 8609d6765 < Kordula/M 8613d6768 < Korella/M 8615,8616d6769 < Koressa/M < Korey/M 8618d6770 < Korie/M 8620,8622d6771 < Korney/M < Korrie/M < Korry/M 8625,8626c6774,6775 < Korzybski < Kosciusko --- > Korzybski/M > Kosciusko/M 8628,8629c6777,6778 < Kossuth < Kosygin --- > Kossuth/M > Kosygin/M 8631c6780 < Kowloon --- > Kowloon/M 8638,8641c6787,6790 < Krasnodar < Krasnoyarsk < Krebs < Kremlin --- > Krasnodar/M > Krasnoyarsk/M > Krebs/M > Kremlin/M 8647d6795 < Krisha/M 8649d6796 < Krishnah/M 8651,8653d6797 < Krispin/M < Krissie/M < Krissy/M 8655,8658d6798 < Kristal/M < Kristan/M < Kriste/M < Kristel/M 8660c6800 < Kristi/MN --- > Kristi/M 8663d6802 < Kristien/M 8667,8671d6805 < Kristo/SM < Kristofer/M < Kristoffer/M < Kristofor/M < Kristoforo/M 8674d6807 < Kristyn/M 8678,8682c6811,6814 < Kropotkin < Kruger < Krugerrand < Krupp < Krysta/M --- > Kropotkin/M > Kruger/M > Krugerrand/M > Krupp/M 8684,8685d6815 < Krystalle/M < Krystle/M 8690c6820 < Kubrick --- > Kubrick/M 8692c6822 < Kuibyshev --- > Kuibyshev/M 8694,8696c6824,6826 < Kunming < Kuomintang < Kurd --- > Kunming/M > Kuomintang/M > Kurd/M 8698,8700c6828,6829 < Kurdistan < Kurile < Kurosawa --- > Kurdistan/M > Kurosawa/M 8704c6833 < Kutuzov --- > Kutuzov/M 8712,8713c6841 < Kwangju < Kwanza/MS --- > Kwangju/M 8715c6843 < Ky/H --- > Ky/MH 8718d6845 < Kylen/M 8720,8721d6846 < Kylila/M < Kylynn/M 8723d6847 < Kynthia/M 8725,8726c6849 < Kyrgyzstan < Kyrstin/M --- > Kyrgyzstan/M 8728c6851 < L'Amour --- > L'Amour/M 8730,8731c6853,6854 < L'Oreal < L'Ouverture --- > L'Oreal/M > L'Ouverture/M 8741a6865 > LGBT 8754c6878 < La/M --- > La/SM 8756c6880 < Laban --- > Laban/M 8760d6883 < Lacee/M 8763d6885 < Lacie/M 8765c6887 < Ladoga --- > Ladoga/M 8767c6889 < Lady --- > Lady/M 8770c6892 < Lafayette --- > Lafayette/M 8773,8776c6895,6897 < Lagrange < Lagrangian < Lahore < Laina/M --- > Lagrange/M > Lagrangian/M > Lahore/M 8778,8779c6899 < Laird/M < Laius --- > Laius/M 8785c6905 < Lakota --- > Lakota/M 8791,8793c6911,6913 < Lamaze < Lamb < Lambert --- > Lamaze/M > Lamb/M > Lambert/M 8795c6915 < Lambrusco --- > Lambrusco/M 8797d6916 < Lammond/M 8801d6919 < Lanae/M 8803c6921 < Lancashire --- > Lancashire/M 8807c6925 < Land --- > Land/M 8810c6928 < Landsat --- > Landsat/M 8813d6930 < Lanette/M 8815c6932 < Lang --- > Lang/M 8817,8820c6934,6936 < Langland < Langley < Langmuir < Langsdon/M --- > Langland/M > Langley/M > Langmuir/M 8824d6939 < Lanita/M 8825a6941 > Lankan/M 8827,8828d6942 < Lanni/M < Lannie/M 8833a6948 > Laos/M 8835c6950 < Laplace --- > Laplace/M 8839d6953 < Laraine/M 8842c6956 < Laredo --- > Laredo/M 8844,8845d6957 < Larina/M < Larine/M 8848,8849c6960 < Lark/M < Larousse --- > Larousse/M 8851c6962 < Lars/N --- > Lars/MN 8854d6964 < Laryssa/M 8859c6969 < Lat --- > Lat/M 8861d6970 < Latashia/M 8863c6972 < Latia/M --- > Latham/M 8870,8871d6978 < Latrena/M < Latrina/M 8875,8876c6982,6984 < Laud/R < Laue --- > Laud/MR > Lauder/M > Laue/M 8879c6987 < Laundromat --- > Laundromat/M 8881,8883d6988 < Lauraine/M < Laural/M < Lauralee/M 8886,8887d6990 < Lauree/M < Laureen/M 8889d6991 < Laurella/M 8891d6992 < Laurena/M 8893d6993 < Laurene/M 8898,8899d6997 < Laurianne/M < Laurice/M 8901d6998 < Lauritz/M 8903,8904c7000 < Laval < Lavena/M --- > Laval/M 8906d7001 < Laverna/M 8910,8911c7005 < Lavinie/M < Lavoisier --- > Lavoisier/M 8913d7006 < Law 8915c7008 < Lawrence --- > Lawrence/M 8917c7010 < Lawson --- > Lawson/M 8919,8920c7012 < Lay/M < Layamon --- > Layamon/M 8923d7014 < Layney/M 8929c7020 < Le/SMN --- > Le/SM 8932,8933c7023,7024 < Leadbelly < Leah --- > Leadbelly/M > Leah/M 8936c7027 < Leander --- > Leander/M 8941,8942d7031 < Leanor/M < Leanora/M 8946c7035 < Leavenworth --- > Leavenworth/M 8949d7037 < Lebbie/M 8952c7040 < Leda --- > Leda/M 8955,8956d7042 < Leeann/M < Leeanne/M 8959,8960d7044 < Leelah/M < Leeland/M 8962d7045 < Leesa/M 8964c7047 < Leeuwenhoek --- > Leeuwenhoek/M 8967,8968c7050 < Lefty/M < Legendre --- > Legendre/M 8970c7052 < Leghorn --- > Leghorn/M 8972d7053 < Legra/M 8981,8982c7062 < Leigh < Leigha/M --- > Leigh/M 8985d7064 < Leilah/M 8987d7065 < Leisha/M 8990d7067 < Lelah/M 8995,8997d7071 < Lemar/M < Lemmie/M < Lemmy/M 9003,9005d7076 < Lenci/M < Lenee/M < Lenette/M 9009,9011c7080 < Leninist < Lenka/M < Lenna/M --- > Leninist/M 9020a7090 > Lenten/M 9022,9023d7091 < Leodora/M < Leoine/M 9025,9026c7093 < Leoline/M < Leon --- > Leon/M 9028d7094 < Leonanie/M 9031c7097 < Leoncavallo --- > Leoncavallo/M 9034,9035d7099 < Leonelle/M < Leonerd/M 9037c7101 < Leonid --- > Leonid/M 9044d7107 < Leontyne/M 9048c7111 < Lepidus --- > Lepidus/M 9051c7114 < Lerner --- > Lerner/M 9053a7117 > Les/M 9055d7118 < Leshia/M 9057d7119 < Lesli/M 9059d7120 < Lesly/M 9061c7122 < Lesseps --- > Lesseps/M 9065d7125 < Lesya/M 9069d7128 < Lethia/M 9071d7129 < Letisha/M 9074d7131 < Letta/M 9076d7132 < Letti/M 9079d7134 < Leupold/M 9085c7140 < Leviathan --- > Leviathan/M 9094d7148 < Lewie/M 9096,9098c7150,7151 < Lewis < Lewiss < Lexi/SM --- > Lewis/M > Lexi/M 9100d7152 < Lexine/M 9103d7154 < Lexmark/M 9107,9108d7157 < Lezley/M < Lezlie/M 9117d7165 < Lianna/M 9119d7166 < Lib 9121d7167 < Libbi/M 9123c7169 < Libby --- > Libby/M 9127a7174 > LibreOffice/M 9132,9133c7179 < Licha/M < Lichtenstein --- > Lichtenstein/M 9136c7182 < Lie --- > Lie/M 9138c7184 < Liebfraumilch --- > Liebfraumilch/M 9141c7187 < Lief/M --- > Lief's 9143d7188 < Liesa/M 9147c7192 < Lila/SM --- > Lila/M 9154c7199 < Liliuokalani --- > Liliuokalani/M 9156,9157c7201,7202 < Lille < Lilli/MS --- > Lille/M > Lilli/M 9161,9162c7206 < Lilliputian/SM < Lilllie/M --- > Lilliputian/MS 9166d7209 < Lilyan/M 9170,9171c7213,7214 < Limburger < Limoges --- > Limburger/M > Limoges/M 9179c7222 < Lind --- > Lind/M 9181c7224 < Lindbergh --- > Lindbergh/M 9183d7225 < Lindie/M 9185,9188c7227,7229 < Lindsay < Lindsey < Lindsy/M < Lindy --- > Lindsay/M > Lindsey/M > Lindy/M 9190,9193d7230 < Linell/M < Linet/M < Linette/M < Link/M 9199,9202c7236 < Linnet/M < Linnie/M < Linoel/M < Linotype --- > Linotype/M 9205c7239 < Linux/S --- > Linux/MS 9207d7240 < Linzy/M 9209,9212c7242,7244 < Lionello/M < Lipizzaner < Lippi < Lippmann --- > Lipizzaner/M > Lippi/M > Lippmann/M 9215d7246 < Lira/M 9217d7247 < Lisabeth/M 9221d7250 < Lisetta/M 9223,9224d7251 < Lisha/M < Lishe/M 9228,9229d7254 < Lissi/M < Lissie/M 9234c7259 < Liszt --- > Liszt/M 9240d7264 < Liuka/M 9242d7265 < Liva/M 9245c7268 < Liverpudlian/MS --- > Liverpudlian/SM 9247,9248c7270,7271 < Livingston < Livingstone --- > Livingston/M > Livingstone/M 9250d7272 < Livvie/M 9252,9253c7274 < Livvyy/M < Livy --- > Livy/M 9262,9264c7283,7284 < Llewellyn < Lloyd < Llywellyn/M --- > Llewellyn/M > Lloyd/M 9267,9269c7287,7288 < Lobachevsky < Lochinvar < Lock/M --- > Lobachevsky/M > Lochinvar/M 9271c7290 < Lockean --- > Lockean/M 9274c7293 < Lodge --- > Lodge/M 9277,9279c7296,7297 < Loella/M < Loewe < Loewi --- > Loewe/M > Loewi/M 9283c7301 < Lohengrin --- > Lohengrin/M 9286d7303 < Loise/M 9289,9291c7306,7307 < Loleta/M < Lolita < Lollard --- > Lolita/M > Lollard/M 9293c7309 < Lolly/M --- > Lolly's 9302,9303c7318 < Lonee/M < Long --- > Long/M 9308,9310d7322 < Lonna/M < Lonnard/M < Lonni/M 9318,9320d7329 < Loralee/M < Loralie/M < Loralyn/M 9324,9325d7332 < Loree/M < Loreen/M 9327,9328c7334 < Lorelle/M < Loren/S --- > Loren/M 9331,9332c7337,7338 < Lorentz < Lorenz --- > Lorentz/M > Lorenz/M 9339,9340d7344 < Lorianna/M < Lorianne/M 9342,9343d7345 < Lorilee/M < Lorilyn/M 9346,9347d7347 < Lorine/M < Lorita/M 9351d7350 < Lorrayne/M 9353d7351 < Lorri/M 9355,9356d7352 < Lorrin/M < Lorry/M 9357a7354 > Los 9359d7355 < Lothaire/M 9370c7366 < Louis --- > Louis/M 9373d7368 < Louisette/M 9378,9379c7373 < Lourdes < Loutitia/M --- > Lourdes/M 9383c7377 < Lovelace --- > Lovelace/M 9386c7380 < Lowell --- > Lowell/M 9390d7383 < Lowrance/M 9394,9395c7387 < Loydie/M < Loyola --- > Loyola/M 9402,9404c7394,7396 < Lubavitcher < Lubbock < Lubumbashi --- > Lubavitcher/M > Lubbock/M > Lubumbashi/M 9406c7398 < Lucais/M --- > Lucas/M 9408d7399 < Lucho/M 9410,9411c7401,7402 < Lucia/MS < Lucian --- > Lucia/M > Lucian/M 9418d7408 < Lucila/M 9420d7409 < Lucilia/M 9424d7412 < Lucine/M 9426d7413 < Lucita/M 9430,9432c7417,7419 < Lucky/M < Lucretia < Lucretius --- > Lucky's > Lucretia/M > Lucretius/M 9435c7422 < Ludhiana --- > Ludhiana/M 9437d7423 < Ludovika/M 9441d7426 < Luelle/M 9443c7428 < Luftwaffe --- > Luftwaffe/M 9453,9454c7438 < Lulita/M < Lully --- > Lully/M 9456a7441 > Lumière/M 9459c7444 < Lupercalia --- > Lupercalia/M 9462d7446 < Lurette/M 9464,9467d7447 < Lurleen/M < Lurlene/M < Lurline/M < Lusa/M 9470d7449 < Lutero/M 9478d7456 < Luxemburg/M 9481c7459 < Lvov --- > Lvov/M 9486,9487c7464,7465 < Lycra < Lycurgus --- > Lycra/M > Lycurgus/M 9489c7467 < Lydia --- > Lydia/M 9493c7471 < Lyell --- > Lyell/M 9495c7473 < Lyly --- > Lyly/M 9499c7477 < Lynch --- > Lynch/M 9502,9503d7479 < Lyndel/M < Lyndell/M 9507,9511d7482 < Lyndsie/M < Lyndy/M < Lynea/M < Lynelle/M < Lynett/M 9513,9514c7484 < Lynn < Lynna/M --- > Lynn/M 9516,9520d7485 < Lynnea/M < Lynnell/M < Lynnelle/M < Lynnet/M < Lynnett/M 9522d7486 < Lynsey/M 9523a7488 > Lyons/M 9525c7490 < Lysenko --- > Lysenko/M 9547d7511 < MIPSes 9552a7517 > MOOC 9554c7519 < MPEG/MS --- > MPEG/SM 9561c7526 < MTV --- > MTV/M 9567d7531 < Mabelle/M 9569,9570c7533,7534 < Mac < MacArthur --- > Mac/M > MacArthur/M 9572c7536 < MacDonald --- > MacDonald/M 9576,9577c7540,7541 < Macaulay < Macbeth --- > Macaulay/M > Macbeth/M 9580c7544 < Mace --- > Mace/M 9584c7548 < Mach --- > Mach/M 9586c7550 < Machiavellian --- > Machiavellian/M 9592,9594c7556,7558 < Mackinaw < Macmillan < Macon --- > Mackinaw/M > Macmillan/M > Macon/M 9601d7564 < Madalena/M 9610d7572 < Madel/M 9613,9616d7574 < Madelena/M < Madelene/M < Madelin/M < Madelina/M 9618,9619d7575 < Madella/M < Madelle/M 9624,9625d7579 < Madlen/M < Madlin/M 9630d7583 < Mady/M 9632d7584 < Maegan/M 9635,9636c7587 < Mafioso < Mag/M --- > Mafioso/M 9638d7588 < Magdaia/M 9640c7590 < Magdalena --- > Magdalena/M 9643,9644c7593 < Magellanic < Maggee/M --- > Magellanic/M 9651,9653c7600,7601 < Magnitogorsk < Magnum < Magog --- > Magnitogorsk/M > Magog/M 9655c7603 < Magritte --- > Magritte/M 9666c7614 < Mahdi --- > Mahdi/M 9669c7617 < Mahler --- > Mahler/M 9672d7619 < Mahomet/M 9675d7621 < Maible/M 9677,9678d7622 < Maiga/M < Maighdiln/M 9680,9681c7624,7625 < Mailer < Maillol --- > Mailer/M > Maillol/M 9683c7627 < Maimonides --- > Maimonides/M 9688d7631 < Maisey/M 9691d7633 < Maitilde/M 9694d7635 < Maje/M 9696c7637 < Major --- > Major/M 9698c7639 < Majuro --- > Majuro/M 9700c7641 < Maker --- > Maker/M 9705,9709c7646,7649 < Malacca < Malachi < Malagasy < Malamud < Malanie/M --- > Malacca/M > Malachi/M > Malagasy/M > Malamud/M 9719,9720c7659 < Malchy/M < Malcolm --- > Malcolm/M 9726,9727c7665 < Malena/M < Mali --- > Mali/M 9733,9734c7671 < Malinde/M < Malinowski --- > Malinowski/M 9736,9738c7673,7674 < Malissia/M < Mallarme < Mallissa/M --- > Mallarme/M > Mallarmé/M 9740d7675 < Mallorie/M 9743d7677 < Malorie/M 9746c7680 < Malraux --- > Malraux/M 9754d7687 < Malynda/M 9756,9757c7689,7690 < Mameluke < Mamet --- > Mameluke/M > Mamet/M 9764,9765c7697 < Manasseh < Manaus --- > Manasseh/M 9769c7701 < Manchurian --- > Manchurian/M 9776,9777c7708,7709 < Mandela < Mandelbrot --- > Mandela/M > Mandelbrot/M 9780c7712 < Mandingo --- > Mandingo/M 9782d7713 < Mandriva/M 9784c7715 < Manet --- > Manet/M 9787,9788c7718,7719 < Mani < Manichean --- > Mani/M > Manichean/M 9793c7724 < Mann/G --- > Mann/GM 9795a7727 > Manning/M 9800c7732 < Mansfield --- > Mansfield/M 9802c7734 < Mantegna --- > Mantegna/M 9817,9819c7749,7750 < Marabel/M < Maracaibo < Marat --- > Maracaibo/M > Marat/M 9823,9824c7754,7755 < Marc < Marceau --- > Marc/M > Marceau/M 9827d7757 < Marcelia/M 9831,9832d7760 < Marcellina/M < Marcelline/M 9837,9838d7764 < Marchall/M < Marchelle/M 9841c7767 < Marciano --- > Marciano/M 9843,9844d7768 < Marcile/M < Marcille/M 9846c7770,7771 < Marconi --- > Marconi/M > Marcos/M 9851d7775 < Mareah/M 9853,9854d7776 < Marena/M < Maressa/M 9857,9858c7779 < Margalo/M < Margaret --- > Margaret/M 9864,9865c7785 < Margarette/M < Margarita --- > Margarita/M 9869d7788 < Margeaux/M 9872,9873d7790 < Margette/M < Margi/M 9885c7802 < Marian --- > Marian/M 9887c7804 < Mariann/M --- > Marianas/M 9889c7806 < Marianne --- > Marianne/M 9892d7808 < Maribelle/M 9894d7809 < Marice/M 9896d7810 < Maridel/M 9898,9899d7811 < Marieann/M < Mariejeanne/M 9901d7812 < Mariele/M 9903d7813 < Mariellen/M 9906,9908d7815 < Marigold/M < Marijn/M < Marijo/M 9911,9912d7817 < Marilin/M < Marillin/M 9914c7819 < Marin --- > Marin/M 9917d7821 < Marinna/M 9920c7824 < Mariquilla/M --- > Maris/M 9926,9927c7830 < Maritain < Maritsa --- > Maritain/M 9930,9931c7833 < Marius < Mariya/M --- > Marius/M 9934,9936d7835 < Marje/M < Marji/M < Marjie/M 9939d7837 < Marjy/M 9942,9943c7840 < Marketa/M < Markham --- > Markham/M 9945c7842,7843 < Markov --- > Markov/M > Marks/M 9948d7845 < Marlane/M 9950,9951c7847 < Marlborough < Marleah/M --- > Marlborough/M 9957,9958c7853 < Marlie/M < Marlin --- > Marlin/M 9963,9964c7858 < Marlowe < Marlyn/M --- > Marlowe/M 9967,9968c7861 < Marna/M < Marne --- > Marne/M 9971d7863 < Marnia/M 9973c7865 < Maronite --- > Maronite/M 9976c7868 < Marquette --- > Marquette/M 9978c7870 < Marquis --- > Marquis/M 9981d7872 < Marrilee/M 9984d7874 < Marrissa/M 9988c7878 < Marseille/S --- > Marseilles/M 9991d7880 < Marshal/M 9993,9994d7881 < Marsiella/M < Mart/MN 9996,10001c7883,7884 < Martainn/M < Martel < Martelle/M < Marten/M < Martguerita/M < Martha --- > Martel/M > Martha/M 10003d7885 < Marthena/M 10005c7887 < Martial --- > Martial/M 10007d7888 < Martica/M 10009c7890 < Martin --- > Martin/M 10014d7894 < Martita/M 10017,10018c7897 < Martynne/M < Marv/MN --- > Marv/M 10020d7898 < Marve/M 10022,10024c7900 < Marven/M < Marvin < Marwin/M --- > Marvin/M 10032d7907 < Maryanna/M 10034d7908 < Marybelle/M 10037,10039d7910 < Maryjane/M < Maryjo/M < Maryl/M 10041c7912 < Marylee/M --- > Marylander/M 10043d7913 < Marylinda/M 10045,10046d7914 < Marylynne/M < Maryrose/M 10048d7915 < Marysa/M 10051,10053c7918,7920 < Masaryk < Mascagni < Masefield --- > Masaryk/M > Mascagni/M > Masefield/M 10059c7926 < Masonic --- > Masonic/M 10062,10065c7929,7932 < Massachusetts < Massasoit < Massenet < Massey --- > Massachusetts/M > Massasoit/M > Massenet/M > Massey/M 10069a7937 > Masters/M 10071d7938 < Matelda/M 10074a7942 > Mather/M 10075a7944 > Mathews/M 10077,10078c7946 < Mathian/M < Mathias --- > Mathias/M 10081c7949 < Mathis --- > Mathis/M 10083c7951 < Matilda --- > Matilda/M 10085,10086c7953,7954 < Matisse < Matt --- > Matisse/M > Matt/M 10090,10091d7957 < Matthaeus/M < Mattheus/M 10093c7959,7960 < Matthias --- > Matthews/M > Matthias/M 10095,10096d7961 < Matthiew/M < Matthus/M 10104c7969 < Maugham --- > Maugham/M 10106c7971 < Maupassant --- > Maupassant/M 10108d7972 < Maure/M 10110,10113c7974,7975 < Maureene/M < Maurene/M < Mauriac < Maurice --- > Mauriac/M > Maurice/M 10117,10118d7978 < Maurise/M < Maurita/M 10120c7980 < Mauritanian/MS --- > Mauritanian/SM 10124d7983 < Maurizia/M 10127c7986 < Maurois --- > Maurois/M 10130c7989 < Mauser --- > Mauser/M 10132d7990 < Mavra/M 10134d7991 < Maxi/M 10136,10138c7993 < Maxim < Maximilian < Maximilianus/M --- > Maximilian/M 10142,10143c7997 < Maxwell < Maxy/M --- > Maxwell/M 10149c8003,8004 < Mayfair --- > Mayer/M > Mayfair/M 10153,10155c8008 < Maynord/M < Mayo < Mayor/M --- > Mayo/M 10157a8011 > Mays/M 10160c8014 < Mazarin --- > Mazarin/M 10162c8016 < Mazda --- > Mazda/M 10175c8029 < McCarthy --- > McCarthy/M 10180c8034 < McClellan --- > McClellan/M 10183,10184c8037,8038 < McCormick < McCoy --- > McCormick/M > McCoy/M 10221,10223c8075,8077 < Mead < Meade < Meadows --- > Mead/M > Meade/M > Meadows/M 10229,10230c8083 < Mechelle/M < Medan --- > Medan/M 10232,10233c8085,8086 < Medellin < Media --- > Medellin/M > Media/M 10236,10238c8089,8091 < Medici < Medina < Mediterranean/SM --- > Medici/M > Medina/M > Mediterranean/MS 10241c8094 < Meg/MN --- > Meg/M 10243,10244d8095 < Megen/M < Meggi/M 10246d8096 < Meggy/M 10248,10249d8097 < Meghann/M < Mehetabel/M 10254c8102 < Meir --- > Meir/M 10259d8106 < Melamie/M 10261c8108 < Melanesian --- > Melanesian/M 10264,10266c8111 < Melantha/M < Melany/M < Melba --- > Melba/M 10268,10269c8113,8114 < Melchior < Melchizedek --- > Melchior/M > Melchizedek/M 10271,10272d8115 < Melesa/M < Melessa/M 10276d8118 < Melinde/M 10279,10281d8120 < Melisandra/M < Melisenda/M < Melisent/M 10283d8121 < Melisse/M 10285d8122 < Melitta/M 10288d8124 < Mellicent/M 10290,10293c8126 < Mellisa/M < Mellisent/M < Mellon < Melloney/M --- > Mellon/M 10295d8127 < Melodee/M 10298d8129 < Melonie/M 10300d8130 < Melosa/M 10307c8137 < Memling --- > Memling/M 10309c8139 < Menander --- > Menander/M 10311,10312c8141,8142 < Mencius < Mencken --- > Mencius/M > Mencken/M 10315,10316c8145,8146 < Mendelian < Mendelssohn --- > Mendelian/M > Mendelssohn/M 10318d8147 < Mendie/M 10320,10321c8149 < Mendoza < Mendy/M --- > Mendoza/M 10324c8152 < Menes --- > Menes/M 10332,10333c8160,8161 < Menotti < Mensa --- > Menotti/M > Mensa/M 10336,10337c8164,8166 < Menzies < Mephistopheles --- > Menzies/M > Mephisto > Mephistopheles/M 10340,10341c8169,8170 < Mercator < Mercedes --- > Mercator/M > Mercedes/M 10344,10345c8173 < Mercia < Mercie/M --- > Mercia/M 10349,10355c8177 < Mercy/M < Meredeth/M < Meredith < Meredithe/M < Merell/M < Meridel/M < Meridith/M --- > Meredith/M 10357,10362c8179 < Merilee/M < Merill/M < Merilyn/M < Merino < Meris < Merissa/M --- > Merino/M 10364d8180 < Merla/M 10367,10374c8183,8184 < Merlina/M < Merline/M < Merlot < Merna/M < Merola/M < Merovingian < Merralee/M < Merrel/M --- > Merlot/M > Merovingian/M 10377d8186 < Merridie/M 10379,10382d8187 < Merrielle/M < Merrile/M < Merrilee/M < Merrili/M 10384c8189 < Merrily/M --- > Merrily's 10387c8192 < Merry/M --- > Merry's 10390c8195 < Merton --- > Merton/M 10396c8201 < Mesa --- > Mesa/M 10400c8205 < Mesolithic --- > Mesolithic/M 10405c8210 < Messiaen --- > Messiaen/M 10409d8213 < Messrs 10415,10416c8219,8220 < Methuselah < Metternich --- > Methuselah/M > Metternich/M 10419c8223 < Mexicali --- > Mexicali/M 10423c8227,8228 < Meyerbeer --- > Meyerbeer/M > Meyers/M 10427c8232 < MiG --- > MiG/M 10431d8235 < Mic 10433,10436c8237,8240 < Micah < Micawber < Mich < Michael --- > Micah/M > Micawber/M > Mich/M > Michael/M 10438,10440d8241 < Michaelina/M < Michaeline/M < Michaella/M 10444d8244 < Michale/M 10446d8245 < Micheil/M 10451d8249 < Michelina/M 10456c8254 < Michelson --- > Michelson/M 10458c8256 < Michigander/SM --- > Michigander/MS 10467c8265 < Micronesian --- > Micronesian/M 10470c8268 < Middleton --- > Middleton/M 10473,10474c8271 < Midge/M < Midland/S --- > Midland/MS 10477c8274 < Midwestern/R --- > Midwestern/MR 10479d8275 < Mignonne/M 10481,10482d8276 < Miguela/M < Miguelita/M 10484d8277 < Mikaela/M 10490d8282 < Mikol/M 10492d8283 < Mil/MY 10497,10498d8287 < Mildrid/M < Mile/SM 10499a8289 > Miles/M 10501,10503d8290 < Milicent/M < Milissent/M < Milka/M 10505c8292 < Mill/SR --- > Mill/SMR 10507,10508c8294,8296 < Millay < Millet --- > Millay/M > Miller/M > Millet/M 10512,10513c8300,8301 < Millikan < Millisent/M --- > Millikan/M > Mills/M 10515c8303 < Milne --- > Milne/M 10519,10523c8307,8309 < Milt/M < Miltiades < Miltie/M < Milton < Miltonic --- > Miltiades/M > Milton/M > Miltonic/M 10525d8310 < Milty/M 10527d8311 < Milzie/M 10530c8314 < Min/MR --- > Min/M 10534c8318 < Mindanao --- > Mindanao/M 10537d8320 < Miner/M 10539d8321 < Minetta/M 10540a8323 > Ming/M 10544d8326 < Minnaminnie/M 10550d8331 < Minni/M 10552d8332 < Minnnie/M 10556d8335 < Minor/M 10564c8343 < Minuit --- > Minuit/M 10567d8345 < Miquela/M 10570c8348 < Mirabeau --- > Mirabeau/M 10576,10577c8354 < Miranda < Mireielle/M --- > Miranda/M 10580d8356 < Mirelle/M 10583d8358 < Mirilla/M 10585c8360 < Miro --- > Miro/M 10589c8364 < Miskito --- > Miskito/M 10592c8367 < Mississauga --- > Mississauga/M 10598c8373 < Mistassini --- > Mistassini/M 10600d8374 < Misti 10604d8377 < Mitchael/M 10606c8379 < Mitchell --- > Mitchell/M 10614,10615c8387,8388 < Mixtec < Mizar --- > Mixtec/M > Mizar/M 10622d8394 < Mob 10626,10631c8398,8399 < Modesta/M < Modestia/M < Modestine/M < Modesto < Modesty/M < Modigliani --- > Modesto/M > Modigliani/M 10634c8402 < Mogadishu --- > Mogadishu/M 10639d8406 < Mohammed/M 10641c8408 < Mohammedanism/MS --- > Mohammedanism/SM 10643d8409 < Mohandis/M 10647d8412 < Mohican/MS 10650,10651c8415 < Moina/M < Moira --- > Moira/M 10652a8417 > Moises/M 10661c8426 < Molina --- > Molina/M 10663,10664d8427 < Mollee/M < Molli/M 10671c8434 < Moluccas --- > Moluccas/M 10673d8435 < Mommy/M 10678d8439 < Monah/M 10681c8442 < Mondrian --- > Mondrian/M 10684c8445 < Monet --- > Monet/M 10694,10695c8455,8456 < Monmouth < Monongahela --- > Monmouth/M > Monongahela/M 10701,10703c8462,8464 < Mont < Montague < Montaigne --- > Mont/M > Montague/M > Montaigne/M 10706c8467 < Montcalm --- > Montcalm/M 10708c8469 < Montenegrin --- > Montenegrin/M 10710,10713c8471,8474 < Monterrey < Montesquieu < Montessori < Monteverdi --- > Monterrey/M > Montesquieu/M > Montessori/M > Monteverdi/M 10716c8477 < Montgolfier --- > Montgolfier/M 10719c8480 < Monticello --- > Monticello/M 10722c8483 < Montrachet --- > Montrachet/M 10726,10727c8487,8488 < Moody < Moog --- > Moody/M > Moog/M 10731c8492 < Moore --- > Moore/M 10736,10737c8497,8498 < Moravia < Moravian --- > Moravia/M > Moravian/M 10740,10743c8501,8502 < Mordred < Mordy/M < More < Moreen/M --- > Mordred/M > More/M 10749,10750d8507 < Morganica/M < Morganne/M 10752d8508 < Morgun/M 10755d8510 < Morie/M 10758d8512 < Morissa/M 10761,10763c8515 < Morlee/M < Morley < Morly/M --- > Morley/M 10767c8519 < Moro --- > Moro/M 10770c8522 < Moroni --- > Moroni/M 10774,10775c8526,8527 < Morris < Morrison --- > Morris/M > Morrison/M 10777d8528 < Morry/M 10781,10782c8532 < Mortie/M < Mortimer --- > Mortimer/M 10788c8538 < Moseley --- > Moseley/M 10791a8542 > Moslem/M 10794c8545 < Mosul --- > Mosul/M 10798,10800c8549,8552 < Mott < Mount < Mountbatten --- > Mott/M > Moulton/M > Mount/M > Mountbatten/M 10802c8554 < Moussorgsky --- > Moussorgsky/M 10806d8557 < Moyna/M 10811,10812d8561 < Mozelle/M < Mozes/M 10814c8563 < Mozillian/SM --- > Mozillian/MS 10823,10825d8571 < Muffin/M < Mufi/M < Mufinella/M 10828c8574 < Muhammadan/SM --- > Muhammadan/MS 10830,10831c8576 < Muir < Muire/M --- > Muir/M 10838c8583 < Mullins --- > Mullins/M 10840,10841c8585,8586 < Multan < Multics/S --- > Multan/M > Multics 10843,10844c8588,8589 < Mumford < Munch --- > Mumford/M > Munch/M 10847d8591 < Munmro/M 10849c8593 < Munro --- > Munro/M 10851c8595 < Munster --- > Munster/M 10854c8598 < Murat --- > Murat/M 10857c8601 < Murdoch --- > Murdoch/M 10859,10860d8602 < Mureil/M < Murial/M 10862,10863c8604 < Murielle/M < Murillo --- > Murillo/M 10865,10866c8606,8607 < Murmansk < Murphy --- > Murmansk/M > Murphy/M 10869c8610 < Murrumbidgee --- > Murrumbidgee/M 10871d8611 < Murvyn/M 10881c8621 < Mussorgsky --- > Mussorgsky/M 10883,10884c8623,8624 < Muzak < My/M --- > Muzak/M > My's 10889,10890d8628 < Myca/M < Mycah/M 10892,10893c8630 < Mycenaean < Mychal/M --- > Mycenaean/M 10894a8632 > Myers/M 10897d8634 < Mylo/M 10899,10900d8635 < Myrah/M < Myranda/M 10903,10905d8637 < Myrilla/M < Myrle/M < Myrlene/M 10907,10911c8639 < Myron < Myrta/M < Myrtia/M < Myrtice/M < Myrtie/M --- > Myron/M 10913,10915c8641 < Myrvyn/M < Myrwyn/M < Mysore --- > Mysore/M 10916a8643 > Münchhausen/M 10919,10920c8646,8647 < NAACP < NAFTA --- > NAACP/M > NAFTA/M 10926,10927c8653,8654 < NBA < NBC --- > NBA/M > NBC/M 10930c8657 < NCAA --- > NCAA/M 10937,10938c8664,8665 < NFL < NGO/MS --- > NFL/M > NGO/SM 10940c8667 < NHL --- > NHL/M 10949c8676 < NPR --- > NPR/M 10953a8681 > NSA/M 10968c8696 < Nabokov --- > Nabokov/M 10970,10972c8698 < Nadean/M < Nadeen/M < Nader --- > Nader/M 10975d8700 < Nadiya/M 10977d8701 < Nady/M 10980,10982c8704,8706 < Nagoya < Nagpur < Nagy --- > Nagoya/M > Nagpur/M > Nagy/M 10984c8708 < Nahum --- > Nahum/M 10989d8712 < Nalani/M 10996,10997c8719 < Nanak < Nananne/M --- > Nanak/M 10999,11001c8721 < Nancee/M < Nancey/M < Nanchang --- > Nanchang/M 11003,11005c8723 < Nancie/M < Nancy < Nanete/M --- > Nancy/M 11008,11009d8725 < Nanice/M < Nanine/M 11011,11012d8726 < Nanking/MS < Nannette/M 11015d8728 < Nanny/M 11018c8731 < Nansen --- > Nansen/M 11021d8733 < Naoma/M 11023d8734 < Nap/M 11029,11031c8740 < Napoleonic < Nappie/M < Nappy/M --- > Napoleonic/M 11036d8744 < Nariko/M 11040c8748 < Narragansett --- > Narragansett/M 11042,11043c8750,8751 < Nash < Nashua --- > Nash/M > Nashua/M 11049,11050c8757 < Natal/M < Natala/M --- > Natal's 11052d8758 < Natalee/M 11055,11056d8760 < Natalina/M < Nataline/M 11058d8761 < Nataniel/M 11060,11061c8763 < Natassia/M < Natchez --- > Natchez/M 11063d8764 < Nathalia/M 11065c8766 < Nathan/S --- > Nathan/SM 11069c8770,8771 < Nathanil/M --- > Nathans/M > Nation/M 11073,11074c8775 < Natka/M < Natty/M --- > Natty's 11076c8777 < Naugahyde --- > Naugahyde/M 11078,11079c8779 < Nautilus < Navaho/M --- > Nautilus/M 11082c8782 < Navarre --- > Navarre/M 11086,11088c8786,8788 < Nazarene < Nazareth < Nazca --- > Nazarene/M > Nazareth/M > Nazca/M 11090d8789 < Naziism/SM 11099d8797 < Neala/M 11101,11103d8798 < Neall/M < Nealon/M < Nealson/M 11105,11106c8800,8801 < Neanderthal/MS < Neapolitan --- > Neanderthal/SM > Neapolitan/M 11111c8806 < Nebuchadnezzar --- > Nebuchadnezzar/M 11116d8810 < Neddie/M 11118d8811 < Nedi/M 11121,11122c8814 < Nefen/M < Nefertiti --- > Nefertiti/M 11129c8821,8822 < Nehemiah --- > Negros/M > Nehemiah/M 11132,11133d8824 < Neila/M < Neile/M 11135,11136d8825 < Neilla/M < Neille/M 11138,11139d8826 < Nelia/M < Nelie/M 11147c8834 < Nelson --- > Nelson/M 11150c8837 < Neogene --- > Neogene/M 11157c8844 < Nerf --- > Nerf/M 11159,11168c8846,8847 < Nerita/M < Nero < Neron/M < Nert/M < Nerta/M < Nerte/M < Nerti/M < Nertie/M < Nerty/M < Neruda --- > Nero/M > Neruda/M 11171,11172c8850 < Nesselrode < Nessi/M --- > Nesselrode/M 11174d8851 < Nessy/M 11179c8856 < Nestorius --- > Nestorius/M 11181,11182c8858,8860 < Netherlander/MS < Netherlands --- > Netflix/M > Netherlander/SM > Netherlands/M 11185d8862 < Netti/M 11187,11188d8863 < Nettle/M < Netty/M 11190,11191c8865,8866 < Nev < Neva --- > Nev/M > Neva/M 11200d8874 < Nevsa/M 11205c8879 < Newman --- > Newman/M 11207d8880 < Newsvine/M 11212c8885 < Nexis --- > Nexis/M 11214d8886 < Neysa/M 11217c8889 < Ni --- > Ni/M 11222,11223c8894,8895 < Nibelung < Nicaea --- > Nibelung/M > Nicaea/M 11228c8900 < Nicene --- > Nicene/M 11231c8903 < Nicholas --- > Nicholas/M 11233,11234c8905,8906 < Nicholle/M < Nicholson --- > Nichols/M > Nicholson/M 11237d8908 < Nickey/M 11240c8911 < Nicklaus --- > Nicklaus/M 11242,11244c8913 < Nickola/SM < Nickolai/M < Nickolaus/M --- > Nickolas/M 11248c8917 < Nicodemus --- > Nicodemus/M 11251c8920,8921 < Nicolai/S --- > Nicolai > Nicolas/M 11253d8922 < Nicolea/M 11255,11257c8924 < Nicoli/SM < Nicolina/M < Nicoline/M --- > Nicolis 11262,11263c8929,8930 < Niels/N < Nietzsche --- > Nielsen/M > Nietzsche/M 11271,11272c8938 < Nijinsky < Nikaniki/M --- > Nijinsky/M 11276c8942 < Nikkei --- > Nikkei/M 11278d8943 < Nikkie/M 11284,11287c8949 < Nikolayev < Nikoletta/M < Nikolia/M < Nikolos/M --- > Nikolayev/M 11289d8950 < Nil/SM 11290a8952 > Nils 11292,11293c8954,8955 < Nimitz < Nimrod --- > Nimitz/M > Nimrod/M 11295d8956 < Ninetta/M 11298,11299d8958 < Ninnetta/M < Ninnette/M 11301,11302c8960,8961 < Nintendo < Niobe --- > Nintendo/M > Niobe/M 11306c8965 < Nirvana --- > Nirvana/M 11308,11309c8967 < Nisei < Nissa/M --- > Nisei/M 11311,11313d8968 < Nisse/M < Nissie/M < Nissy/M 11318d8972 < Nixie 11320c8974 < Nkrumah --- > Nkrumah/M 11323d8976 < Noach/M 11325d8977 < Noak/M 11327,11329c8979 < Noami/M < Nobe/M < Nobel --- > Nobel/M 11331d8980 < Nobie/M 11333d8981 < Noby/M 11336,11338d8983 < Noelani/M < Noell/M < Noella/M 11340,11341d8984 < Noellyn/M < Noelyn/M 11343d8985 < Noh 11347d8988 < Nolana/M 11349d8989 < Nolie/M 11351,11353c8991 < Nollie/M < Nolly/M < Nome --- > Nome/M 11356d8993 < Nonah/M 11360d8996 < Nonnah/M 11366,11367d9001 < Norbie/M < Norby/M 11369d9002 < Norean/M 11371d9003 < Norene/M 11374,11376c9006 < Norina/M < Norine/M < Norma --- > Norma/M 11380,11383c9010 < Normie/M < Normy/M < Norplant < Norri/MS --- > Norplant/M 11385c9012 < Norry/M --- > Norris/M 11388c9015 < Norsemen --- > Norsemen/M 11391c9018 < Northampton --- > Northampton/M 11403c9030 < Norwich --- > Norwich/M 11405c9032 < Nostradamus --- > Nostradamus/M 11407c9034 < Nottingham --- > Nottingham/M 11411c9038 < Nova --- > Nova/M 11413d9039 < Novelia/M 11415c9041 < Novgorod --- > Novgorod/M 11418c9044 < Novokuznetsk --- > Novokuznetsk/M 11425,11427c9051,9053 < Nubia < Nubian < Nukualofa --- > Nubia/M > Nubian/M > Nukualofa/M 11432,11433c9058,9059 < Nuremberg < Nureyev --- > Nuremberg/M > Nureyev/M 11437d9062 < Nydia/M 11441,11452c9066,9077 < O'Brien < O'Casey < O'Connell < O'Connor < O'Donnell < O'Hara < O'Higgins < O'Keeffe < O'Neil < O'Neill < O'Rourke < O'Toole --- > O'Brien/M > O'Casey/M > O'Connell/M > O'Connor/M > O'Donnell/M > O'Hara/M > O'Higgins/M > O'Keeffe/M > O'Neil/M > O'Neill/M > O'Rourke/M > O'Toole/M 11463c9088 < OK/SM --- > OK/SMDG 11477,11478c9102,9103 < Oakley < Oates --- > Oakley/M > Oates/M 11481,11482c9106 < Obadiah < Obadias/M --- > Obadiah/M 11483a9108 > Obamacare 11485d9109 < Obediah/M 11487,11488c9111 < Oberon < Obidiah/M --- > Oberon/M 11490,11491c9113 < Oby/M < Occam --- > Occam/M 11493c9115 < Occidental/SM --- > Occidental/MS 11499c9121 < Octavia --- > Octavia/M 11504,11507d9125 < Ode/RM < Odele/M < Odelia/M < Odelinda/M 11509,11510d9126 < Odella/M < Odelle/M 11513,11514c9129 < Odets < Odetta/M --- > Odets/M 11516d9130 < Odey/M 11518,11519d9131 < Odilia/M < Odille/M 11527c9139 < Oedipal --- > Oedipal/M 11531,11532c9143 < Ofella/M < Offenbach --- > Offenbach/M 11534,11536c9145 < Ofilia/M < Ogbomosho < Ogdan/M --- > Ogbomosho/M 11538d9146 < Ogdon/M 11540c9148 < Oglethorpe --- > Oglethorpe/M 11545d9152 < Ojibway/MS 11547,11549c9154,9156 < Okeechobee < Okefenokee < Okhotsk --- > Okeechobee/M > Okefenokee/M > Okhotsk/M 11554,11555c9161,9162 < Oklahoman < Oktoberfest --- > Oklahoman/M > Oktoberfest/M 11558d9164 < Olag/M 11561c9167 < Oldenburg --- > Oldenburg/M 11565d9170 < Ole/MV 11568,11569d9172 < Olenka/M < Olenolin/M 11571d9173 < Olia/M 11576,11577c9178 < Olivero/M < Olivette/M --- > Oliver/M 11580,11582c9181 < Olivie/MR < Oliviero/M < Oliy/M --- > Olivier/M 11585c9184 < Olmec --- > Olmec/M 11589,11590d9187 < Olva/M < Olvan/M 11596,11597c9193,9194 < Olympic/S < Olympie/M --- > Olympic/SM > Olympics/M 11603c9200 < Omayyad --- > Omayyad/M 11605d9201 < Omero/M 11608,11609c9204 < Onassis < Ondrea/M --- > Onassis/M 11611c9206 < Onega --- > Onega/M 11614,11616d9208 < Onfre/M < Onfroi/M < Onida/M 11619d9210 < Onofredo/M 11628d9218 < Opalina/M 11631a9222 > OpenOffice/M 11633,11634c9224 < Ophelie/M < Ophiuchus --- > Ophiuchus/M 11639,11643d9228 < Oralee/M < Oralia/M < Oralie/M < Oralla/M < Oralle/M 11645c9230 < Orange --- > Orange/M 11648d9232 < Orbadiah/M 11656,11660d9239 < Orelee/M < Orelia/M < Orelie/M < Orella/M < Orelle/M 11662,11663c9241,9242 < Oreo < Orestes --- > Oreo/M > Orestes/M 11665c9244 < Orient --- > Orient/M 11680c9259 < Orphic --- > Orphic/M 11682d9260 < Orran/M 11685,11686d9262 < Orsa/M < Orsola/M 11689d9264 < Ortensia/M 11696,11697c9271,9272 < Orwell < Orwellian --- > Orwell/M > Orwellian/M 11698a9274 > Os/M 11703,11704c9279 < Osborne < Osbourn/M --- > Osborne/M 11707c9282 < Osceola --- > Osceola/M 11709c9284 < Oshawa --- > Oshawa/M 11718c9293 < Ostwald --- > Ostwald/M 11720,11725c9295 < Oswald < Oswell/M < Otes < Otha/M < Othelia/M < Othella/M --- > Oswald/M 11727,11728d9296 < Othilia/M < Othilie/M 11733,11735c9301,9303 < Otto < Ottoman < Ouagadougou --- > Otto/M > Ottoman/M > Ouagadougou/M 11737,11738c9305,9307 < Ovid < Owen/S --- > Ovid/M > Owen/SM > Owens/M 11741c9310 < Oxnard --- > Oxnard/M 11743c9312 < Oxus --- > Oxus/M 11745c9314 < Oz --- > Oz/M 11759a9329 > PCMCIA 11762,11763c9332,9333 < PDA/MS < PDF/MS --- > PDA/SM > PDF/SM 11769a9340 > PGP 11772c9343 < PLO --- > PLO/M 11786c9357 < PTA --- > PTA/M 11801d9371 < Packston/M 11803d9372 < Pacorro/M 11805,11808c9374 < Paddie/M < Paddy/M < Paderewski < Padget/M --- > Paderewski/M 11813,11815c9379,9380 < Padriac/M < Paganini < Page --- > Paganini/M > Page/M 11817c9382 < Pahlavi --- > Pahlavi/M 11819,11820c9384 < Pail/M < Paine --- > Paine/M 11824,11825c9388,9389 < Palau < Palembang --- > Palau/M > Palembang/M 11827,11828c9391,9392 < Paleogene < Paleolithic --- > Paleogene/M > Paleolithic/M 11833,11834c9397,9398 < Palestrina < Paley --- > Palestrina/M > Paley/M 11836c9400 < Palin/MS --- > Palin/M 11838,11841c9402,9404 < Pall/M < Palladio < Palm/MR < Palmerston --- > Palladio/M > Palmer/M > Palmerston/M 11848,11854c9411,9412 < Pamelina/M < Pamella/M < Pamirs < Pammi/M < Pammie/M < Pammy/M < Pampers --- > Pamirs/M > Pampers/M 11859d9416 < Panchito/M 11863c9420 < Pankhurst --- > Pankhurst/M 11865d9421 < Pansie/M 11867c9423 < Pantagruel --- > Pantagruel/M 11869c9425 < Pantheon --- > Pantheon/M 11874d9429 < Papagena/M 11877,11879c9432,9433 < Paquito/M < Paracelsus < Paraclete --- > Paracelsus/M > Paraclete/M 11882a9437 > Paralympic/S 11885a9441 > Paraná/M 11887c9443 < Pareto --- > Pareto/M 11890c9446 < Park/SR --- > Park/SMR 11891a9448 > Parker/M 11893,11894c9450,9453 < Parkman < Parliament --- > Parkman/M > Parks/M > Parliament/M > Parmenides 11897,11901c9456,9458 < Parnell < Parr < Parrish < Parrnell/M < Parry --- > Parnell/M > Parr/M > Parrish/M 11905c9462 < Parsons --- > Parsons/M 11914c9471 < Pasternak --- > Pasternak/M 11916c9473 < Pat/N --- > Pat/MN 11918c9475 < Patagonian --- > Patagonian/M 11922,11925c9479,9480 < Paterson < Patience/M < Patin/M < Patna --- > Paterson/M > Patna/M 11934,11935d9488 < Patrizio/M < Patrizius/M 11939c9492 < Patti --- > Patti/M 11941,11942c9494 < Pattin/M < Patton --- > Patton/M 11947d9498 < Pauletta/M 11949c9500 < Pauli --- > Pauli/M 11952,11953c9503,9504 < Pauline < Paulita/M --- > Pauline/M > Pauling/M 11956c9507 < Pavarotti --- > Pavarotti/M 11959d9509 < Pavla/M 11961,11962c9511,9512 < Pavlova < Pavlovian --- > Pavlova/M > Pavlovian/M 11964d9513 < Paxon/M 11974c9523 < Peale --- > Peale/M 11977d9525 < Pearla/M 11980d9527 < Pearline/M 11982,11984c9529,9530 < Peary < Pebrook/M < Pechora --- > Peary/M > Pechora/M 11994,11995d9539 < Peggi/M < Peggie/M 11997c9541 < Pei --- > Pei/M 12000c9544 < Pekinese/MS --- > Pekinese/M 12006a9551 > Pen/M 12009d9553 < Penelopa/M 12011c9555 < Penn --- > Penn/M 12014,12015d9557 < Penni/M < Pennie/M 12018c9560 < Pennsylvanian/SM --- > Pennsylvanian/MS 12030c9572 < Peoria --- > Peoria/M 12033d9574 < Pepillo/M 12036d9576 < Pepito/M 12038,12039c9578,9579 < Pepys < Pequot --- > Pepys/M > Pequot/M 12041,12043c9581,9583 < Percheron < Percival < Percy --- > Percheron/M > Percival/M > Percy/M 12047,12050c9587,9588 < Peria/M < Perice/M < Periclean < Pericles --- > Periclean/M > Pericles/M 12051a9590 > Perkins/M 12058d9596 < Pernell/M 12060c9598 < Peron --- > Peron/M 12062,12063c9600,9601 < Perren/M < Perri/M --- > Perri/MR > Perrier/M 12065,12066c9603,9604 < Perry/R < Perseid --- > Perry/M > Perseid/M 12070c9608 < Pershing --- > Pershing/M 12077,12078c9615 < Peshawar < Pet --- > Peshawar/M 12083a9621 > Peters/MN 12086d9623 < Peterus/M 12089c9626 < Petra --- > Petra/M 12091d9627 < Petrina/M 12093d9628 < Petronia/M 12095d9629 < Petronille/M 12097d9630 < Petunia/M 12099d9631 < Peyter/M 12104c9636 < Phaedra --- > Phaedra/M 12106,12107c9638 < Phaidra/M < Phanerozoic --- > Phanerozoic/M 12114d9644 < Phedra/M 12116d9645 < Phelia/M 12118,12119c9647,9648 < Phidias < Phil/Y --- > Phidias/M > Phil/MY 12121d9649 < Philbert/M 12123,12125c9651,9652 < Philemon < Philip/S < Philipa/M --- > Philemon/M > Philip/MS 12128c9655 < Philippians --- > Philippians/M 12129a9657 > Philippines/M 12131,12132c9659 < Philis/M < Philistine --- > Philistine/M 12134,12135c9661 < Phillie/M < Phillip/S --- > Phillip/SM 12138c9664 < Phillipp/M --- > Phillips/M 12143d9668 < Phip/M 12145c9670 < Phobos --- > Phobos/M 12150,12152c9675 < Photoshop/MS < Photoshopped < Photoshopping --- > Photoshop/M 12157d9679 < Phylis/M 12160,12161d9681 < Phyllys/M < Phylys/M 12167c9687 < Piccadilly --- > Piccadilly/M 12169c9689 < Pickett --- > Pickett/M 12172c9692 < Pict --- > Pict/M 12175d9694 < Pier/M 12177d9695 < Pierette/M 12184d9701 < Pietrek/M 12186,12187d9702 < Piggy/M < Pigmy/SM 12189,12191c9704,9707 < Pilate/S < Pilcomayo < Pilgrim/S --- > Pilate/MS > Pilates/M > Pilcomayo/M > Pilgrim/SM 12194d9709 < Pincas/M 12198c9713 < Pinkerton --- > Pinkerton/M 12201c9716 < Pinter --- > Pinter/M 12204,12205d9718 < Pip/MR < Piper/M 12208,12212c9721,9723 < Pippo/M < Pippy/M < Piraeus < Pirandello < Pisa --- > Piraeus/M > Pirandello/M > Pisa/M 12214c9725 < Pisistratus --- > Pisistratus/M 12217c9728 < Pitt/S --- > Pitt/SM 12218a9730 > Pitts/M 12221c9733 < Pizarro --- > Pizarro/M 12225c9737 < Planck --- > Planck/M 12230c9742 < Plath --- > Plath/M 12243c9755 < Pliny --- > Pliny/M 12252c9764,9765 < Podgorica --- > Poconos/M > Podgorica/M 12254,12255c9767,9768 < Podunk < Poe --- > Podunk/M > Poe/M 12257a9771 > Poincaré/M 12263c9777,9778 < Pol/Y --- > Pokémon/M > Pol/MY 12270c9785 < Politburo --- > Politburo/M 12273c9788 < Pollock --- > Pollock/M 12276c9791 < Pollyanna --- > Pollyanna/M 12282,12283c9797,9798 < Polyphemus < Pomerania --- > Polyphemus/M > Pomerania/M 12285,12286c9800,9801 < Pomona < Pompadour --- > Pomona/M > Pompadour/M 12290,12291c9805,9806 < Ponce < Pontchartrain --- > Ponce/M > Pontchartrain/M 12293c9808 < Pontianak --- > Pontianak/M 12296,12297c9811,9812 < Poona < Pope --- > Poona/M > Pope/M 12299c9814 < Popocatepetl --- > Popocatepetl/M 12302,12303c9817 < Poppy/M < Popsicle --- > Popsicle/M 12307c9821,9822 < Port/R --- > Port/MR > Porter/M 12309d9823 < Portie/M 12312c9826 < Portsmouth --- > Portsmouth/M 12315d9828 < Porty/M 12320c9833 < Potemkin --- > Potemkin/M 12322c9835 < Potsdam --- > Potsdam/M 12324c9837 < Potter --- > Potter/M 12327,12328c9840,9841 < Pound < Poussin --- > Pound/M > Poussin/M 12329a9843 > PowerPC/M 12331c9845 < Powers --- > Powers/M 12335c9849 < Pr/MN --- > Pr/M 12338c9852 < Praetorian --- > Praetorian/M 12341c9855 < Prakrit --- > Prakrit/M 12345c9859 < Praxiteles --- > Praxiteles/M 12350d9863 < Pren/M 12352d9864 < Prent/M 12356,12357c9868,9869 < Presbyterian/MS < Presbyterianism/SM --- > Presbyterian/SM > Presbyterianism/MS 12359,12361c9871,9872 < President/SM < Presley < Preston --- > Presley/M > Preston/M 12365,12366c9876,9877 < Price < Priestley --- > Price/M > Priestley/M 12369d9879 < Principal 12374d9883 < Priscella/M 12377d9885 < Prissie/M 12382c9890 < Procrustean --- > Procrustean/M 12388,12389c9896,9897 < Prokofiev < Promethean --- > Prokofiev/M > Promethean/M 12394c9902 < Protagoras --- > Protagoras/M 12397c9905 < Protestantism/MS --- > Protestantism/SM 12399c9907 < Proudhon --- > Proudhon/M 12402a9911 > Provençal/M 12404,12405c9913,9914 < Providence/MS < Provo --- > Providence/SM > Provo/M 12410d9918 < Prudi/M 12416c9924 < Prut --- > Prut/M 12419c9927 < Psalms --- > Psalms/M 12421c9929 < Pseudomonas/MS --- > Pseudomonas/M 12425c9933 < Ptolemaic --- > Ptolemaic/M 12429,12430c9937,9938 < Puccini < Puck --- > Puccini/M > Puck/M 12432,12434c9940,9942 < Puebla < Pueblo < Puff/M --- > Puebla/M > Pueblo/M > Puerto 12437,12438c9945,9946 < Pulaski < Pulitzer --- > Pulaski/M > Pulitzer/M 12440c9948 < Punch --- > Punch/M 12444,12445c9952,9953 < Purana < Purcell --- > Purana/M > Purcell/M 12450,12451c9958,9959 < Puritan < Puritanism/SM --- > Puritan/M > Puritanism/MS 12454,12455c9962,9963 < Pusey < Pushkin --- > Pusey/M > Pushkin/M 12458,12459c9966 < Putnam < Putnem/M --- > Putnam/M 12465c9972 < Pym --- > Pym/M 12471c9978 < Pyrrhic --- > Pyrrhic/M 12473,12474c9980,9981 < Pythagorean < Pythias --- > Pythagorean/M > Pythias/M 12475a9983,9984 > Pétain/M > Pôrto/M 12476a9986 > QA 12487c9997 < Qingdao --- > Qingdao/M 12494c10004 < Quasimodo --- > Quasimodo/M 12500c10010 < Quebecois --- > Quebecois/M 12502c10012 < Queen/S --- > Queen/MS 12508d10017 < Querida/M 12513d10021 < Quill/M 12518c10026 < Quinn --- > Quinn/M 12523d10030 < Quintilla/M 12525d10031 < Quintina/M 12528c10034 < Quirinal --- > Quirinal/M 12531c10037 < Quixote --- > Quixote/M 12533,12534c10039,10040 < Qumran < Quonset --- > Qumran/M > Quonset/M 12535a10042,10045 > Qur'anic > Quran > Quranic > Québecois/M 12537c10047 < R/MGD --- > R/MD 12553a10064 > RISC 12565c10076 < RTFM/GSD --- > RTFM 12570d10080 < Rabbi/M 12572c10082 < Rabelaisian --- > Rabelaisian/M 12577d10086 < Rachele/M 12579c10088 < Rachmaninoff --- > Rachmaninoff/M 12581d10089 < Rad/M 12583,12584d10090 < Raddie/M < Raddy/M 12586d10091 < Raeann/M 12590,12594d10094 < Rafaela/M < Rafaelia/M < Rafaelita/M < Rafaellle/M < Rafaello/M 12598d10097 < Raffarty/M 12604c10103 < Rahal/M --- > Ragnarök/M 12612,12613c10111 < Rainier < Rakel/M --- > Rainier/M 12616d10113 < Ralina/M 12618d10114 < Ram 12622c10118 < Ramakrishna --- > Ramakrishna/M 12624c10120 < Ramayana --- > Ramayana/M 12630,12633c10126,10128 < Ramonda/M < Ramos < Ramsay < Ramses --- > Ramos/M > Ramsay/M > Ramses/M 12637,12638c10132 < Rancell/M < Rand --- > Rand/M 12642d10135 < Randee/M 12644d10136 < Randene/M 12646,12647d10137 < Randie/M < Randolf/M 12650d10139 < Ranee/M 12653,12656c10142 < Rania/M < Ranice/M < Ranique/M < Rankin --- > Rankin/M 12658,12660d10143 < Ranna/M < Ransell/M < Ransom/M 12662,12663c10145,10146 < Raphael < Raphaela/M --- > Raphael/M > Rappaport/M 12666d10148 < Raquela/M 12669,12670d10150 < Rasia/M < Rasla/M 12672c10152,10153 < Rasputin --- > Rasputin/M > Rasta 12674c10155,10156 < Rastafarian/M --- > Rastafarian/MS > Rastafarianism 12678,12679c10160 < Ravel < Raven/M --- > Ravel/M 12683c10164 < Rawalpindi --- > Rawalpindi/M 12685c10166 < Ray --- > Ray/M 12688d10168 < Raychel/M 12690c10170 < Rayleigh --- > Rayleigh/M 12695,12696d10174 < Raynard/M < Raynell/M 12699d10176 < Rayshell/M 12704,12705c10181 < Read/GM < Reade --- > Reade/G 12709,12711c10185 < Reagen/M < Realtor < Reamonn/M --- > Realtor/M 12714,12715d10187 < Rebbecca/M < Rebe/M 12717c10189 < Rebecca/M --- > Rebecca's 12719,12721c10191 < Rebeka/M < Rebekah < Rebekkah/M --- > Rebekah/M 12726d10195 < Reddit/M 12730c10199 < Redmond --- > Redmond/M 12732d10200 < Reeba/M 12738,12740c10206 < Reeta/M < Reeva/M < Reeves --- > Reeves/M 12743d10208 < Reg/N 12746d10210 < Reggi/MS 12748d10211 < Reggy/M 12750c10213 < Reginae --- > Reginae/M 12752d10214 < Reginauld/M 12756c10218 < Rehnquist --- > Rehnquist/M 12758,12760c10220,10221 < Reid/R < Reidar/M < Reider/M --- > Reichstag's > Reid/M 12764,12765c10225 < Reinald/M < Reinaldo/SM --- > Reinaldo/M 12768c10228 < Reinhardt --- > Reinhardt/M 12770,12773c10230 < Reinold/M < Reinwald/M < Rem/M < Remanence/S --- > Remanence 12775c10232 < Remarque --- > Remarque/M 12777c10234 < Remington --- > Remington/M 12781d10237 < Renado/M 12794,12795d10249 < Renell/M < Renelle/M 12799c10253 < Renoir --- > Renoir/M 12809,12813c10263,10265 < Retha/M < Reube/M < Reuben < Reunion < Reuters --- > Reuben/M > Reunion/M > Reuters/M 12819c10271,10272 < Revere --- > Revelations/M > Revere/M 12821d10273 < Revkah/M 12823c10275 < Rex --- > Rex/M 12825c10277 < Reyes --- > Reyes/M 12830a10283 > Reynolds/M 12833,12835c10286,10287 < Rhea < Rheba/M < Rhee --- > Rhea/M > Rhee/M 12837,12838c10289 < Rhenish < Rheta/M --- > Rhenish/M 12840,12841d10290 < Rhetta/M < Rhiamon/M 12844d10292 < Rhianon/M 12849,12850c10297,10298 < Rhode < Rhodes --- > Rhode/S > Rhodes/M 12853,12855d10300 < Rhodia/M < Rhodie/M < Rhody/M 12860,12863c10305 < Riane/M < Riannon/M < Rianon/M < Ribbentrop --- > Ribbentrop/M 12867,12868c10309 < Ricardo < Ricca/M --- > Ricardo/M 12870c10311 < Rice --- > Rice/M 12872,12874c10313,10315 < Richard/S < Richardo/M < Richardson --- > Richard/MS > Richards/M > Richardson/M 12879,12883c10320,10321 < Richmound/M < Richter < Richthofen < Richy/M < Rici/M --- > Richter/M > Richthofen/M 12891c10329 < Rickover --- > Rickover/M 12894d10331 < Ricoriki/M 12896c10333 < Ride --- > Ride/M 12910,12912c10347,10349 < Riley < Rilke < Rimbaud --- > Riley/M > Rilke/M > Rimbaud/M 12915d10351 < Ring/M 12919d10354 < Riobard/M 12921,12922c10356,10357 < Rip/M < Ripley --- > Rios/M > Ripley/M 12924c10359 < Risorgimento --- > Risorgimento/M 12930,12932c10365,10367 < Rivalee/M < Rivera < Rivers --- > Rivas/M > Rivera/M > Rivers/M 12934d10368 < Rivi/M 12936,12937d10369 < Rivkah/M < Rivy/M 12939c10371 < Rizal --- > Rizal/M 12942,12944d10373 < Roana/M < Roanna/M < Roanne/M 12947c10376 < Rob/MZ --- > Rob/M 12949,12950d10377 < Robbert/M < Robbi/M 12952a10380 > Robbins/M 12954,12957d10381 < Robbyn/M < Robena/M < Robenia/M < Robers/M 12961a10386 > Roberts/M 12963,12964c10388,10389 < Robeson < Robespierre --- > Robeson/M > Robespierre/M 12968,12969d10392 < Robinett/M < Robinetta/M 12972c10395 < Robinson --- > Robinson/M 12975c10398 < Robson --- > Robson/M 12984,12985d10406 < Rochell/M < Rochella/M 12988,12993c10409,10411 < Rochette/M < Rock < Rockefeller < Rockey/M < Rockford < Rockie/M --- > Rock/M > Rockefeller/M > Rockford/M 12996c10414 < Rockwell --- > Rockwell/M 13002d10419 < Roddie/M 13005d10421 < Roderich/M 13008d10423 < Rodge/MZR 13009a10425 > Rodgers/M 13012,13015c10428,10429 < Rodie/M < Rodin < Rodina/M < Rodney --- > Rodin/M > Rodney/M 13022d10435 < Rodrique/M 13028c10441,10442 < Rogerio/M --- > Roger/M > Rogers/M 13031a10446 > Roku/M 13033c10448 < Roland --- > Roland/M 13037d10451 < Roley/M 13040,13041c10454,10455 < Rolland < Rollerblade --- > Rolland/M > Rollerblade/M 13043a10458 > Rollins/M 13045c10460 < Rolodex --- > Rolodex/M 13055c10470 < Romano --- > Romano/M 13057c10472,10473 < Romansh --- > Romans/M > Romansh/M 13062c10478 < Romeo --- > Romeo/M 13065c10481 < Romney --- > Romney/M 13067,13068d10482 < Romona/M < Romonda/M 13074d10487 < Ronalda/M 13076,13077d10488 < Ronica/M < Ronna/M 13079d10489 < Ronnica/M 13084,13085d10493 < Roobbie/M < Roomba/MS 13090,13092d10497 < Rora/M < Rori/M < Rorie/M 13094c10499 < Rorschach --- > Rorschach/M 13098,13100d10502 < Rosabel/M < Rosabella/M < Rosabelle/M 13107d10508 < Rosalinde/M 13110d10510 < Rosalynd/M 13113d10512 < Rosana/M 13116c10515 < Rosario --- > Rosario/M 13121d10519 < Roseanna/M 13125,13127d10522 < Roselia/M < Roselin/M < Roseline/M 13130d10524 < Rosemaria/M 13133d10526 < Rosemonde/M 13136d10528 < Rosene/M 13138,13141c10530,10531 < Rosetta < Rosette/M < Roshelle/M < Rosicrucian --- > Rosetta/M > Rosicrucian/M 13146d10535 < Rosmunda/M 13151,13152c10540 < Rossy/M < Rostand --- > Rostand/M 13156c10544 < Rosy/M --- > Rosy's 13159,13160c10547,10548 < Rothko < Rothschild --- > Rothko/M > Rothschild/M 13163c10551 < Rouault --- > Rouault/M 13167d10554 < Rouvin/M 13169c10556 < Row/MN --- > Rover/M 13171c10558 < Rowe --- > Rowe/M 13176d10562 < Rowney/M 13181d10566 < Roxi/M 13183d10567 < Roxine/M 13186c10570 < Royal --- > Royal/M 13188c10572 < Royce --- > Royce/M 13190,13197d10573 < Rozalie/M < Rozalin/M < Rozamond/M < Rozanna/M < Rozanne/M < Roze/M < Rozele/M < Rozella/M 13199,13200d10574 < Rozina/M < Rriocard/M 13205d10578 < Rube/M 13207c10580 < Rubetta/M --- > Rubens/M 13211d10583 < Rubie/M 13214,13215c10586 < Rubina/M < Rubinstein --- > Rubinstein/M 13219,13221c10590 < Ruddie/M < Ruddy/M < Rudie/M --- > Ruddy's 13223c10592 < Rudolf --- > Rudolf/M 13235d10603 < Rumania/M 13239,13240c10607,10608 < Runnymede < Runyon --- > Runnymede/M > Runyon/M 13242,13243d10609 < Ruperta/M < Ruperto/M 13249,13250c10615,10616 < Ruskin < Russ --- > Ruskin/M > Russ/M 13257d10622 < Rustie/M 13261a10627 > Rutgers/M 13263,13267c10629 < Ruthann/M < Ruthanne/M < Ruthe/M < Rutherford < Ruthi/M --- > Rutherford/M 13269d10630 < Ruthy/M 13272d10632 < Ruttger/M 13280,13281d10639 < Ryann/M < Rycca/M 13283,13285c10641 < Ryder < Ryley/M < Ryon/M --- > Ryder/M 13287,13288c10643 < Ryun/M < S/MNY --- > S/MN 13304c10659 < SEC --- > SEC/M 13311c10666 < SNP/MS --- > SNP/SM 13318a10674 > SQL 13329c10685 < SUSE --- > SUSE/M 13330a10687 > SVN/M 13335,13336c10692,10693 < Saar < Saarinen --- > Saar/M > Saarinen/M 13342c10699 < Sabin --- > Sabin/M 13345d10701 < Sabra 13348c10704 < Sacajawea --- > Sacajawea/M 13355c10711 < Sadat --- > Sadat/M 13357c10713 < Sadducee --- > Sadducee/M 13359d10714 < Sadella/M 13362,13363c10717 < Sadye/M < Safavid --- > Safavid/M 13370,13371c10724 < Sahel < Saidee/M --- > Sahel/M 13374c10727 < Sakai --- > Sakai/M 13377c10730 < Sakharov --- > Sakharov/M 13379,13384c10732,10736 < Saks < Sal/Y < Saladin < Salado < Salaidh/M < Salamis --- > Saks/M > Sal/MY > Saladin/M > Salado/M > Salamis/M 13391,13392c10743,10744 < Salinas < Salinger --- > Salinas/M > Salinger/M 13395c10747 < Salk --- > Salk/M 13397d10748 < Salli/M 13399c10750 < Sallust --- > Sallust/M 13401,13404d10751 < Sallyann/M < Sallyanne/M < Salmon/M < Saloma/M 13406,13407d10752 < Salomi/M < Salomo/M 13409d10753 < Salomone/M 13417d10760 < Salvidor/M 13420c10763 < Sam --- > Sam/M 13423c10766 < Samara --- > Samara/M 13434c10777 < Samson --- > Samson/M 13437,13438c10780 < Samuel < Samuele/M --- > Samuel/M 13440d10781 < San 13441a10783 > San/M 13446,13449c10788,10791 < Sand/Z < Sandburg < Sande/MZR < Sander/M --- > Sand/ZM > Sandburg/M > Sande/M > Sanders/M 13453c10795 < Sandinista --- > Sandinista/M 13459d10800 < Sandye/M 13461c10802 < Sanforized --- > Sanforized/M 13463c10804,10805 < Sanhedrin --- > Sanger/M > Sanhedrin/M 13469c10811 < Santa --- > Santa/M 13471,13472c10813,10814 < Santayana < Santeria --- > Santayana/M > Santeria/M 13474c10816 < Santos --- > Santos/M 13476d10817 < Sapphire/M 13480d10820 < Saraann/M 13483,13484c10823 < Sarah < Sarajane/M --- > Sarah/M 13493,13495d10831 < Sarena/M < Sarene/M < Sarette/M 13498c10834 < Sargent --- > Sargent/M 13500d10835 < Sari/M 13502d10836 < Sarine/M 13506,13507c10840,10841 < Sarto < Sartre --- > Sarto/M > Sartre/M 13510d10843 < Sashenka/M 13515,13516c10848,10849 < Sassanian < Sassoon --- > Sassanian/M > Sassoon/M 13525d10857 < Saudra/M 13527,13528c10859 < Sauncho/M < Saunder/MS --- > Saunders/M 13531,13532c10862,10863 < Saussure < Sauterne/MS --- > Saussure/M > Sauternes 13534c10865 < Savage --- > Savage/M 13538,13539c10869,10870 < Savonarola < Savoy --- > Savonarola/M > Savoy/M 13541d10871 < Saw/M 13543,13544d10872 < Sawyere/M < Sax 13548d10875 < Say/MRZ 13550c10877,10878 < Sayre/MS --- > Sayers/M > Sayre/M 13552a10881 > Scala/M 13555,13557c10884,10886 < Scandinavian/SM < Scaramouch < Scarborough --- > Scandinavian/MS > Scaramouch/M > Scarborough/M 13559,13560c10888 < Scarlatti < Scarlet/M --- > Scarlatti/M 13565c10893 < Schelling --- > Schelling/M 13569c10897 < Schiller --- > Schiller/M 13572c10900 < Schliemann --- > Schliemann/M 13574,13575c10902,10903 < Schmidt < Schnabel --- > Schmidt/M > Schnabel/M 13579c10907 < Schopenhauer --- > Schopenhauer/M 13583c10911,10912 < Schubert --- > Schrödinger/M > Schubert/M 13586c10915 < Schumann --- > Schumann/M 13594c10923 < Schweitzer --- > Schweitzer/M 13597a10927 > Scientologist/SM 13607c10937 < Scotchmen --- > Scotchmen/M 13609c10939,10940 < Scotchwomen --- > Scotchwomen/M > Scotia/M 13612c10943 < Scotsmen --- > Scotsmen/M 13614,13615c10945,10946 < Scotswomen < Scott --- > Scotswomen/M > Scott/M 13619,13621c10950 < Scottsdale < Scotty < Scout --- > Scottsdale/M 13623,13624c10952,10953 < Scranton < Scriabin --- > Scranton/M > Scriabin/M 13627c10956 < Scrooge --- > Scrooge/M 13629c10958 < Scud --- > Scud/M 13632,13634c10961,10963 < Scythia < Scythian < Se/MH --- > Scythia/M > Scythian/M > Se/MHN 13636c10965 < Seaborg --- > Seaborg/M 13640d10968 < Seana/M 13650d10977 < Secunia/M 13653d10979 < See/M 13654a10981 > Seeger/M 13663d10989 < Seka/M 13670,13671c10996 < Selestina/M < Seleucid --- > Seleucid/M 13673,13674d10997 < Selia/M < Selie/M 13678,13680c11001 < Selinda/M < Seline/M < Seljuk --- > Seljuk/M 13687c11008 < Semarang --- > Semarang/M 13689c11010 < Semiramis --- > Semiramis/M 13692c11013 < Semtex --- > Semtex/M 13695,13696c11016 < Senator < Sendai --- > Sendai/M 13700,13702c11020,11022 < Senghor < Senior < Sennacherib --- > Senghor/M > Senior/M > Sennacherib/M 13706,13707c11026,11027 < Sephardi < Sephira/M --- > Sep > Sephardi/M 13711,13712c11031,11032 < Septuagint/SM < Sequoya --- > Septuagint/MS > Sequoya/M 13717d11036 < Serene 13719,13720d11037 < Serge/M < Sergeant/M 13724c11041 < Serpens --- > Serpens/M 13729,13732c11046,11048 < Seton < Seumas/M < Seurat < Seuss --- > Seton/M > Seurat/M > Seuss/M 13734,13735c11050,11051 < Severn < Severus --- > Severn/M > Severus/M 13737,13739c11053,11055 < Sevres < Seward < Sextans --- > Sevres/M > Seward/M > Sextans/M 13742c11058 < Seyfert --- > Seyfert/M 13745,13747c11061 < Shackleton < Shadow/M < Shae/M --- > Shackleton/M 13749,13750d11062 < Shaina/M < Shaine/M 13754,13757c11066,11067 < Shakespearean < Shalna/M < Shalne/M < Shalom/M --- > Shakespearean/M > Shalom's 13760,13765d11069 < Shanan/M < Shanda/M < Shandee/M < Shandeigh/M < Shandie/M < Shandra/M 13770d11073 < Shanie/M 13773,13777c11076 < Shannah/M < Shannan/M < Shannen/M < Shannon < Shanon/M --- > Shannon/M 13779,13780c11078 < Shantee/M < Shantung --- > Shantung/M 13783d11080 < Sharai/M 13785,13787c11082,11083 < Shari < Shari'a < Sharia/M --- > Shari'a/M > Shari/M 13789,13792d11084 < Sharity/M < Sharl/M < Sharla/M < Sharleen/M 13794d11085 < Sharline/M 13796,13797c11087 < Sharon < Sharona/M --- > Sharon/M 13801d11090 < Sharyl/M 13803d11091 < Shaughn/M 13813d11100 < Shay/M 13815,13817d11101 < Shaylah/M < Shaylyn/M < Shaylynn/M 13822c11106 < Sheba --- > Sheba/M 13825,13826d11108 < Sheelagh/M < Sheelah/M 13828d11109 < Sheeree/M 13830,13831d11110 < Sheff/M < Sheffie/M 13833d11111 < Sheffy/M 13837d11114 < Shela/M 13839,13840d11115 < Shelba/M < Shelbi/M 13842d11116 < Shelden/M 13846,13848c11120 < Shelley < Shelli/M < Shellie/M --- > Shelley/M 13853,13854c11125 < Shena/M < Shenandoah --- > Shenandoah/M 13857c11128 < Sheol --- > Sheol/M 13862d11132 < Shepperd/M 13868,13874c11138,11139 < Sheridan < Sherie/M < Sherill/M < Sherilyn/M < Sherline/M < Sherlock < Sherlocke/M --- > Sheridan/M > Sherlock/M 13876,13879c11141,11142 < Sherman < Shermie/M < Shermy/M < Sherpa --- > Sherman/M > Sherpa/M 13884,13886c11147 < Sherwood < Sherwynd/M < Sherye/M --- > Sherwood/M 13888a11150 > Shetlands/M 13891c11153 < Shi'ite --- > Shi'ite/M 13894c11156 < Shijiazhuang --- > Shijiazhuang/M 13896c11158 < Shillong --- > Shillong/M 13905,13907d11166 < Shirlee/M < Shirleen/M < Shirlene/M 13909d11167 < Shirline/M 13913d11170 < Shopzilla/M 13915c11172 < Shorthorn --- > Shorthorn/M 13917d11173 < Shoshanna/M 13919d11174 < Shoshoni/SM 13922,13924c11177,11179 < Shreveport < Shriner < Shropshire --- > Shreveport/M > Shriner/M > Shropshire/M 13926,13929c11181 < Shurlock/M < Shurlocke/M < Shurwood/M < Shylock --- > Shylock/M 13931c11183 < Si --- > Si/M 13935,13936d11186 < Siana/M < Sianna/M 13938,13944c11188 < Sibbie/M < Sibby/M < Sibeal/M < Sibel/M < Sibelius < Sibella/M < Sibelle/M --- > Sibelius/M 13947d11190 < Sibilla/M 13949c11192 < Sibyl --- > Sibyl/M 13956,13958c11199 < Sidnee/M < Sidney < Sidoney/M --- > Sidney/M 13960,13962c11201,11202 < Sidonnie/M < Siegfried < Siemens --- > Siegfried/M > Siemens/M 13965d11204 < Siffre/M 13967,13969d11205 < Sigfrid/M < Sigfried/M < Sigismond/M 13971,13973c11207,11208 < Sigismund < Sigismundo/M < Sigmund --- > Sigismund/M > Sigmund/M 13975,13976c11210 < Sigurd < Sigvard/M --- > Sigurd/M 13981,13983c11215,11217 < Sikkim < Sikkimese < Sikorsky --- > Sikkim/M > Sikkimese/M > Sikorsky/M 13985,13986d11218 < Sile/M < Sileas/M 13990d11221 < Silvain/M 13999c11230 < Sim/SM --- > Sim's 14002c11233 < Simmental --- > Simmental/M 14005c11236 < Simon --- > Simon/M 14008,14009d11238 < Simonette/M < Simonne/M 14011c11240,11241 < Sims --- > Simpsons/M > Sims/M 14013,14015c11243,11245 < Sinatra < Sinclair < Sinclare/M --- > Sinatra/M > Sinbad/M > Sinclair/M 14017d11246 < Sindee/M 14021c11250 < Singer --- > Singer/M 14027d11255 < Sion 14029d11256 < Siouxie/M 14032,14033d11258 < Sisely/M < Sisile/M 14035d11259 < Sissy/M 14037,14038c11261,11262 < Sistine < Sisyphean --- > Sistine/M > Sisyphean/M 14040d11263 < Siusan/M 14045d11267 < Skell/M 14048,14051d11269 < Skip/M < Skipp/MR < Skipper/M < Skippie/M 14054,14056c11272,11273 < Skopje < Sky/M < Skye --- > Skopje/M > Skye/M 14069c11286 < Sloan --- > Sloan/M 14073c11290 < Slovakia --- > Slovakia/M 14079c11296 < Sly/M --- > Sly's 14082c11299 < Smetana --- > Smetana/M 14084,14085c11301,11302 < Smith < Smithson --- > Smith/M > Smithson/M 14089,14091c11306,11308 < Smolensk < Smollett < Smuts --- > Smolensk/M > Smollett/M > Smuts/M 14101,14102c11318,11319 < Snow < Snowbelt --- > Snow/M > Snowbelt/M 14109,14110c11326,11327 < Socratic < Soddy --- > Socratic/M > Soddy/M 14114c11331 < Soho --- > Soho/M 14118d11334 < Sollie/M 14120,14122c11336,11338 < Solomon < Solon < Solzhenitsyn --- > Solomon/M > Solon/M > Solzhenitsyn/M 14130c11346 < Sondheim --- > Sondheim/M 14137,14139d11352 < Sonni/M < Sonnie/M < Sonnnie/M 14145d11357 < Sophey/M 14147c11359 < Sophia --- > Sophia/M 14149,14150c11361,11362 < Sophoclean < Sophocles --- > Sophoclean/M > Sophocles/M 14156d11367 < Sosanna/M 14158a11370 > Sourceforge/M 14161c11373 < Southampton --- > Southampton/M 14164,14165c11376,11377 < Southerner/SM < Southey --- > Southerner/M > Southey/M 14168c11380 < Soviet --- > Soviet/M 14171c11383 < Soyuz --- > Soyuz/M 14174c11386 < Spackle --- > Spackle/M 14183c11395 < Sparks --- > Sparks/M 14185c11397 < Spartacus --- > Spartacus/M 14187,14188c11399 < Speaker < Spears --- > Spears/M 14190,14191c11401,11403 < Spence/R < Spencerian --- > Spence/RM > Spencer/M > Spencerian/M 14193,14194c11405 < Spenglerian < Spense/RM --- > Spenglerian/M 14196c11407 < Spenserian --- > Spenserian/M 14202d11412 < Spike/M 14204c11414 < Spinoza --- > Spinoza/M 14210,14211c11420,11421 < Spock < Spokane --- > Spock/M > Spokane/M 14216c11426 < Sputnik --- > Sputnik/M 14218c11428 < Squanto --- > Squanto/M 14221c11431 < Srinagar --- > Srinagar/M 14226d11435 < Stacee/M 14229d11437 < Stacia/M 14233,14237c11441,11442 < Stafani/M < Staffard/M < Stafford < Staford/M < StairMaster --- > Stafford/M > StairMaster/M 14240c11445 < Stalinist --- > Stalinist/M 14242c11447 < Stamford --- > Stamford/M 14245c11450 < Standish --- > Standish/M 14250c11455 < Stanislavsky --- > Stanislavsky/M 14252,14253c11457 < Stanleigh/M < Stanley --- > Stanley/M 14255c11459 < Stanton --- > Stanton/M 14258,14260c11462,11463 < Star/M < Starbucks < Stark --- > Starbucks/M > Stark/M 14262,14264d11464 < Starla/M < Starlene/M < Starlin/M 14271c11471 < Stavro/MS --- > Stavros 14273c11473 < Steadicam --- > Steadicam/M 14275,14277c11475 < Stearne/M < Steele < Stefa/M --- > Steele/M 14282d11479 < Steffane/M 14285,14287c11482,11483 < Steffie/M < Stein/R < Steinbeck --- > Stein/MR > Steinbeck/M 14288a11485 > Steiner/M 14291,14292c11488,11489 < Stella < Stendhal --- > Stella/M > Stendhal/M 14294d11490 < Stepha/M 14296d11491 < Stephana/M 14299d11493 < Stephannie/M 14301,14306c11495,11497 < Stephen/S < Stephenie/M < Stephenson < Stephi/M < Stephie/M < Stephine/M --- > Stephen/MS > Stephens/M > Stephenson/M 14308c11499 < Stern --- > Stern/M 14310,14311c11501 < Sterno < Stesha/M --- > Sterno/M 14314d11503 < Stevana/M 14317,14318c11506,11507 < Stevena/M < Stevenson --- > Stevens/M > Stevenson/M 14320,14321d11508 < Stevy/M < Steward/M 14325d11511 < Stillmann/M 14329,14330c11515,11516 < Stinky/M < Stirling --- > Stinky's > Stirling/M 14333c11519 < Stockton --- > Stockton/M 14340,14341c11526,11527 < Stone < Stonehenge --- > Stone/M > Stonehenge/M 14343,14348c11529,11531 < Storm/M < Stormi/M < Stormie/M < Stormy/M < Stout < Stowe --- > Stormy's > Stout/M > Stowe/M 14351,14353c11534,11536 < Stradivarius < Strasbourg < Strauss --- > Stradivarius/M > Strasbourg/M > Strauss/M 14357,14358c11540,11541 < Strindberg < Stromboli --- > Strindberg/M > Stromboli/M 14365,14366c11548,11549 < Stuyvesant < Stygian --- > Stuyvesant/M > Stygian/M 14372c11555 < Sucre --- > Sucre/M 14379,14385c11562,11567 < Sue < Suellen/M < Suetonius < Suez < Suffolk < Sufi < Sufism --- > Sue/M > Suetonius/M > Suez/M > Suffolk/M > Sufi/M > Sufism/M 14388c11570 < Sukarno --- > Sukarno/M 14399d11580 < Sully 14404a11586 > Summers/M 14406c11588 < Sumter --- > Sumter/M 14412c11594 < Sundas --- > Sundas/M 14415c11597 < Sung --- > Sung/M 14419,14421c11601,11602 < Sunny/M < Sunnyvale < Sunshine/M --- > Sunny's > Sunnyvale/M 14425c11606 < Superior --- > Superior/M 14429,14431c11610,11611 < Surabaya < Surat < Surinam/M --- > Surabaya/M > Surat/M 14437d11616 < Susanetta/M 14439c11618 < Susanna --- > Susanna/M 14442d11620 < Susette/M 14446c11624 < Sussex --- > Sussex/M 14448d11625 < Sutherlan/M 14453d11629 < Suzann/M 14465c11641 < Svengali --- > Svengali/M 14469c11645 < Swanee --- > Swanee/M 14480,14481c11656 < Sweet < Swen/M --- > Sweet/M 14490d11664 < Sybila/M 14493d11666 < Sybyl/M 14495,14496d11667 < Sydel/M < Sydelle/M 14499,14500c11670 < Sylas/M < Sylvan/M --- > Sylvan's 14504d11673 < Syman/M 14508c11677 < Synge --- > Synge/M 14511c11680 < Syriac --- > Syriac/M 14513d11681 < Szechuan/M 14516c11684,11685 < T'ang --- > Sèvres/M > T'ang/M 14518a11688 > TARP 14546d11715 < Tab/MR 14550,14554d11718 < Tabbatha/M < Tabbi/M < Tabbie/M < Tabbitha/M < Tabby/M 14557d11720 < Tabina/M 14561c11724 < Tacitus --- > Tacitus/M 14564d11726 < Tadd/M 14566,14570d11727 < Taddeusz/M < Tadeas/M < Tadeo/M < Tades < Tadio/M 14572d11728 < Tadzhikistan/M 14574,14575c11730 < Taejon < Taffy/M --- > Taejon/M 14578c11733 < Tagore --- > Tagore/M 14582c11737 < Tahoe --- > Tahoe/M 14584d11738 < Tailor/M 14588c11742 < Taiping --- > Taiping/M 14590d11743 < Taite/M 14593c11746 < Taiyuan --- > Taiyuan/M 14597c11750 < Talbot --- > Talbot/M 14600c11753 < Taliesin --- > Taliesin/M 14605,14606d11757 < Tallia/M < Tallie/M 14608d11758 < Tallou/M 14610d11759 < Tally/M 14615,14616d11763 < Talyah/M < Tam/M 14619d11765 < Tamarah/M 14621d11766 < Tamarra/M 14628d11772 < Tamiko/M 14630d11773 < Tamma/M 14632d11774 < Tammara/M 14639d11780 < Tamqrah/M 14641,14642c11782 < Tamworth < Tan --- > Tamworth/M 14644,14646c11784 < Tancred < Tandi/M < Tandie/M --- > Tancred/M 14648c11786 < Taney --- > Taney/M 14651,14652c11789 < Tangshan < Tanhya/M --- > Tangshan/M 14656d11792 < Tanitansy/M 14659d11794 < Tanney/M 14661,14663c11796 < Tannie/M < Tanny/M < Tansy/M --- > Tannhäuser/M 14672d11804 < Tarah/M 14678c11810 < Tarim --- > Tarim/M 14680,14683c11812 < Tarkington < Tarra/M < Tarrah/M < Tarrance/M --- > Tarkington/M 14685,14686c11814,11815 < Tartary < Tartuffe --- > Tartary/M > Tartuffe/M 14691,14692c11820 < Tasia/M < Tasman --- > Tasman/M 14694,14695c11822,11823 < Tasmanian < Tass --- > Tasmanian/M > Tass/M 14697c11825 < Tate --- > Tate/M 14699,14700c11827 < Tatiania/M < Tatum --- > Tatum/M 14702,14704c11829 < Tawney < Tawnya/M < Tawsha/M --- > Tawney/M 14709c11834 < Tchaikovsky --- > Tchaikovsky/M 14713d11837 < Teador/M 14716c11840 < Technicolor --- > Technicolor/M 14720,14722d11843 < Tedd/M < Tedda/M < Teddi/M 14726,14729d11846 < Tedie/M < Tedman/M < Tedmund/M < Tedra/M 14733d11849 < Teheran/M 14736,14738c11852,11854 < TelePrompter < Telemachus < Telemann --- > TelePrompter/M > Telemachus/M > Telemann/M 14740a11857 > Teller/M 14742d11858 < Temp/M 14745d11860 < Temple/M 14747c11862 < Tenn --- > Tenn/M 14750c11865 < Tennyson --- > Tennyson/M 14752d11866 < Teodoor/M 14755d11868 < Teodorico/M 14759,14760c11872 < Terence < Terencio/M --- > Terence/M 14763,14764c11875 < Tereshkova < Teresina --- > Tereshkova/M 14766d11876 < Teressa/M 14768d11877 < Teriann/M 14775d11883 < Terrel/M 14780d11887 < Terrijo/M 14782d11888 < Territorial 14784,14786c11890 < Terry < Terrye/M < Tersina/M --- > Terry/M 14790,14791c11894,11895 < Tesla < Tess --- > Tesla/M > Tess/M 14793d11896 < Tessi/M 14795d11897 < Tessy/M 14798c11900 < Tetons --- > Tetons/M 14800c11902 < Teutonic --- > Teutonic/M 14802c11904 < Tex --- > Tex/M 14808c11910 < Thackeray --- > Thackeray/M 14810,14812c11912 < Thaddeus < Thaddus/M < Thadeus/M --- > Thaddeus/M 14815,14817c11915 < Thain/M < Thaine/M < Thales --- > Thales/M 14820d11917 < Thane/M 14822,14823c11919,11920 < Thanksgiving/SM < Thant --- > Thanksgiving/MS > Thant/M 14826c11923 < Thatch/MR --- > Thatcher/M 14829,14830d11925 < Thayne/M < The 14832,14833d11926 < Theadora/M < Thebault/M 14836,14837d11928 < Thedric/M < Thedrick/M 14841c11932 < Themistocles --- > Themistocles/M 14844c11935 < Theocritus --- > Theocritus/M 14846c11937 < Theodora --- > Theodora/M 14851,14853c11942,11944 < Theosophy < Theravada < Theresa --- > Theosophy/M > Theravada/M > Theresa/M 14855,14858d11945 < Theresina/M < Theresita/M < Theressa/M < Therine/M 14863c11950 < Thespian --- > Thespian/M 14865c11952 < Thessalonian/S --- > Thessalonian/SM 14866a11954 > Thessaloníki/M 14869d11956 < Thibaud/M 14872c11959 < Thimbu --- > Thimbu/M 14877d11963 < Thomasa/M 14880d11965 < Thomasine/M 14882,14884c11967,11969 < Thomistic < Thompson < Thomson --- > Thomistic/M > Thompson/M > Thomson/M 14889d11973 < Thorn 14891d11974 < Thornie/M 14893,14895c11976,11978 < Thorny/M < Thoroughbred < Thorpe --- > Thorny's > Thoroughbred/M > Thorpe/M 14907c11990 < Thurber --- > Thurber/M 14918c12001 < Tiberius --- > Tiberius/M 14921d12003 < Tibold/M 14923c12005 < Ticonderoga --- > Ticonderoga/M 14925d12006 < Tiebold/M 14927d12007 < Tiena/M 14931,14938c12011 < Tiertza/M < Tiff/M < Tiffani/M < Tiffanie/M < Tiffany < Tiffi/M < Tiffie/M < Tiffy/M --- > Tiffany/M 14943d12015 < Tildie/M 14945,14946c12017 < Tiler/M < Tillich --- > Tillich/M 14950c12021 < Tilsit --- > Tilsit/M 14955,14956d12025 < Timmi/M < Timmie/M 14958d12026 < Timofei/M 14960,14963c12028 < Timor < Timoteo/M < Timothea/M < Timothee/M --- > Timor/M 14965c12030 < Timothy --- > Timothy/M 14970d12034 < Tine/M 14973c12037 < Tinkertoy --- > Tinkertoy/M 14975,14978c12039 < Tintoretto < Tiphani/M < Tiphanie/M < Tiphany/M --- > Tintoretto/M 14980,14981c12041 < Tipperary < Tirana/M --- > Tipperary/M 14986d12045 < Tirrell/M 14991,14992c12050,12051 < Titania < Titanic --- > Titania/M > Titanic/M 14994,14996c12053,12055 < Titicaca < Tito/SM < Titus --- > Titicaca/M > Tito/M > Titus/M 15005d12063 < Tobiah/M 15009,15013c12067,12070 < Tobit < Toby < Tobye/M < Tocantins < Tocqueville --- > Tobit/M > Toby/M > Tocantins/M > Tocqueville/M 15015,15017c12072 < Todd < Toddie/M < Toddy/M --- > Todd/M 15020,15022c12075 < Toiboid/M < Toinette/M < Tojo --- > Tojo/M 15024c12077 < Tokugawa --- > Tokugawa/M 15028c12081 < Tolkien --- > Tolkien/M 15030c12083 < Toltec --- > Toltec/M 15034,15035c12087 < Tomasina/M < Tomasine/M --- > Tomas/M 15038d12089 < Tome/M 15040d12090 < Tomkin/M 15042d12091 < Tommi/M 15044c12093 < Tommy --- > Tommy/M 15046c12095 < Tomsk --- > Tomsk/M 15051,15052d12099 < Tonie/M < Tonnie/M 15054c12101 < Tony --- > Tony/M 15056d12102 < Tonye/M 15062c12108 < Tore/M --- > Tore's 15065d12110 < Torie/M 15068c12113 < Torquemada --- > Torquemada/M 15070c12115 < Torrance --- > Torrance/M 15073,15074c12118,12119 < Torrens < Torres --- > Torrens/M > Torres/M 15078d12122 < Torrin/M 15080,15081c12124,12125 < Tortola < Tortuga --- > Tortola/M > Tortuga/M 15085c12129 < Toscanini --- > Toscanini/M 15088c12132 < Toulouse --- > Toulouse/M 15091,15094c12135 < Town/M < Townes < Towney/M < Townie/M --- > Townes/M 15096d12136 < Towny/M 15100,15101d12139 < Trace/M < Tracee/M 15108c12146 < Trajan --- > Trajan/M 15110c12148 < Transcaucasia --- > Transcaucasia/M 15112c12150,12151 < Transylvania --- > Transylvania/M > Transylvanian/M 15117d12155 < Travus/M 15119,15120c12157 < Treblinka < Trefor/M --- > Treblinka/M 15125d12161 < Trenna/M 15129,15135c12165,12166 < Tresa/M < Trescha/M < Tressa/M < Trev/MR < Trevar/M < Trevelyan < Trever/M --- > Trev/M > Trevelyan/M 15143c12174 < Trieste --- > Trieste/M 15149d12179 < Trip/M 15151c12181 < Tripitaka --- > Tripitaka/M 15159d12188 < Tristam/M 15163d12191 < Trixi/M 15165d12192 < Trixy/M 15166a12194 > Troilus/M 15168c12196 < Trollope --- > Trollope/M 15171c12199 < Trotsky --- > Trotsky/M 15174d12201 < Trstram/M 15176d12202 < Truda/M 15178,15179c12204 < Trudeau < Trudey/M --- > Trudeau/M 15181d12205 < Trudie/M 15185,15187c12209 < Trujillo < Trula/M < Trumaine/M --- > Trujillo/M 15189d12210 < Trumann/M 15192c12213 < Truth --- > Truth/M 15194d12214 < Tsingtao 15199c12219 < Tu --- > Tu/M 15202,15203c12222 < Tubman < Tuck/R --- > Tubman/M 15205,15206d12223 < Tuckie/M < Tucky/M 15215d12231 < Tulley/M 15227c12243 < Tupperware --- > Tupperware/M 15229c12245 < Turgenev --- > Turgenev/M 15238,15239c12254,12255 < Turner < Turpin --- > Turner/M > Turpin/M 15248,15249c12264,12265 < Tutankhamen < Tutsi --- > Tutankhamen/M > Tutsi/M 15253,15254c12269,12270 < Twain < Tweed --- > Twain/M > Tweed/M 15258c12274,12275 < Twinkies --- > Twinkies/M > Twitter/M 15264,15266c12281 < Tybi/M < Tybie/M < Tycho --- > Tycho/M 15270,15271d12284 < Tymon/M < Tymothy/M 15273,15274c12286,12287 < Tyndale < Tyndall --- > Tyndale/M > Tyndall/M 15276c12289 < Tyre --- > Tyre/M 15278d12290 < Tyrol/M 15280c12292 < Tyrone --- > Tyrone/M 15290c12302 < UI/MS --- > UI/SM 15298,15299c12310,12311 < UPI < UPS --- > UPI/M > UPS/M 15301d12312 < URLs 15304a12316 > USB 15306c12318 < USDA --- > USDA/M 15315a12328 > UTC 15317c12330 < Ubangi --- > Ubangi/M 15320c12333 < Ucayali --- > Ucayali/M 15322,15323c12335 < Udale/M < Udall --- > Udall/M 15334,15335d12345 < Ulaanbaatar/M < Ulberto/M 15342,15344d12351 < Ulrick/M < Ulrika/M < Ulrikaumeko/M 15348c12355 < Ulyanovsk --- > Ulyanovsk/M 15352d12358 < Umeko/M 15355c12361 < Ungava --- > Ungava/M 15366,15367c12372,12373 < Upanishads < Updike --- > Upanishads/M > Updike/M 15370,15371c12376,12378 < Ur < Ural/S --- > Ur/M > Ural/SM > Urals/M 15377d12383 < Urbanus/M 15379c12385 < Urey --- > Urey/M 15381,15384c12387,12390 < Uriah < Uriel < Uris < Urquhart --- > Uriah/M > Uriel/M > Uris/M > Urquhart/M 15386,15391c12392,12393 < Ursala/M < Ursola/M < Urson/M < Ursula < Ursulina/M < Ursuline --- > Ursula/M > Ursuline/M 15394c12396 < Urumqi --- > Urumqi/M 15396c12398 < Ustinov --- > Ustinov/M 15400d12401 < Utahn 15433c12434 < Va --- > Va/M 15439,15441c12440 < Val/MY < Valaree/M < Valaria/M --- > Val/M 15445,15446d12443 < Vale/M < Valeda/M 15448,15449d12444 < Valene/M < Valenka/M 15452d12446 < Valentijn/M 15456c12450 < Valentino --- > Valentino/M 15462,15463c12456 < Valery < Valerye/M --- > Valery/M 15465,15466d12457 < Valida/M < Valina/M 15473,15476c12464 < Vallie/M < Vally/M < Valma/M < Valois --- > Valois/M 15478d12465 < Valry/M 15480,15481c12467,12469 < Van < Vance --- > Valéry/M > Van/M > Vance/M 15485,15486c12473,12474 < Vanderbilt < Vandyke --- > Vanderbilt/M > Vandyke/M 15492,15493d12479 < Vannie/M < Vanny/M 15497,15499c12483,12485 < Varanasi < Varese < Vargas --- > Varanasi/M > Varese/M > Vargas/M 15501c12487 < Vasili/MS --- > Vasili/M 15508,15509c12494,12495 < Vauban < Vaughan --- > Vauban/M > Vaughan/M 15514c12500 < Vedanta --- > Vedanta/M 15516a12503 > Vegas/M 15518c12505 < Vela --- > Vela/M 15520c12507 < Velazquez --- > Velazquez/M 15525c12512,12513 < Velvet/M --- > Velásquez/M > Velázquez/M 15530d12517 < Venita/M 15535c12522 < Venusian --- > Venusian/M 15538,15540c12525,12526 < Veradis < Verde < Verdi --- > Verde/M > Verdi/M 15544,15550d12529 < Verene/M < Verge/M < Vergil/M < Veriee/M < Verile/M < Verina/M < Verine/M 15552d12530 < Verla/M 15554c12532 < Vermeer --- > Vermeer/M 15557c12535 < Vern/MN --- > Vern/M 15559,15560c12537 < Verne < Vernen/M --- > Verne/M 15562d12538 < Vernice/M 15566,15567c12542,12543 < Veronese < Veronica --- > Veronese/M > Veronica/M 15569d12544 < Veronike/M 15573,15574c12548 < Vespasian < Vespers --- > Vespasian/M 15578d12551 < Vevay/M 15581,15582c12554,12555 < Viagra < Vic --- > Viagra/M > Vic/M 15584c12557 < Vichy --- > Vichy/M 15589c12562 < Vicky --- > Vicky/M 15591d12563 < Victoir/M 15599,15600d12570 < Vidovic/M < Vidovik/M 15602c12572 < Viennese --- > Viennese/M 15604,15605c12574,12575 < Vietcong < Vietminh --- > Vietcong/M > Vietminh/M 15610d12579 < Viki/M 15613d12581 < Vikky/M 15615,15616c12583 < Vilhelmina/M < Villa --- > Villa/M 15618c12585 < Villon --- > Villon/M 15625,15627c12592 < Vincent/MS < Vincenty/M < Vincenz/M --- > Vincent/M 15629,15630d12593 < Vinita/M < Vinni/M 15636d12598 < Viole/M 15640d12601 < Virge/M 15644d12604 < Virgina/M 15650,15651c12610,12611 < Visakhapatnam < Visayans --- > Visakhapatnam/M > Visayans/M 15656d12615 < Vita/M 15658d12616 < Vitia/M 15666,15667c12624 < Viva/M < Vivaldi --- > Vivaldi/M 15670,15671c12627 < Vivia/M < Vivian --- > Vivian/M 15673,15674d12628 < Vivianna/M < Vivianne/M 15677d12630 < Viviene/M 15679,15681d12631 < Viviyan/M < Vivyan/M < Vivyanne/M 15683,15684c12633 < Vladamir/M < Vladimir --- > Vladimir/M 15686c12635 < Vlaminck --- > Vlaminck/M 15697c12646 < Volta --- > Volta/M 15703,15706c12652 < Vonni/M < Vonnie/M < Vonny/M < Voronezh --- > Voronezh/M 15714d12659 < Vyky/M 15722a12668 > WMD 15725a12672 > WTO 15735,15736c12682,12683 < Waco < Wade --- > Waco/M > Wade/M 15739,15742c12686,12688 < Wagnerian < Wahhabi < Waikiki < Wain/M --- > Wagnerian/M > Wahhabi/M > Waikiki/M 15744d12689 < Wait/MR 15746d12690 < Waiter/M 15749c12693 < Waksman --- > Waksman/M 15753,15754c12697,12698 < Waldensian < Waldheim --- > Waldensian/M > Waldheim/M 15756d12699 < Waldon/M 15759c12702 < Walesa --- > Walesa/M 15762c12705 < Walkman --- > Walkman/M 15764,15765c12707 < Wallace < Wallache/M --- > Wallace/M 15767c12709,12710 < Wallenstein --- > Wallenstein/M > Waller/M 15769,15771c12712,12714 < Wallis < Walliw/M < Walloon --- > Wallis/M > Walloon/M > Walls/M 15772a12716 > Walmart/M 15774c12718 < Walpurgisnacht --- > Walpurgisnacht/M 15776a12721,12722 > Walter/M > Walters/M 15779d12724 < Waly/M 15782,15784d12726 < Wandie/M < Wandis/M < Waneta/M 15786d12727 < Wanids/M 15789c12730 < Ward/N --- > Ward/M 15792c12733 < Warhol --- > Warhol/M 15795c12736 < Warren --- > Warren/M 15797c12738 < Warwick --- > Warwick/M 15800c12741 < Wash --- > Wash/M 15802,15803c12743,12744 < Washingtonian/SM < Wassermann --- > Washingtonian/MS > Wassermann/M 15805,15807c12746,12748 < Waterbury < Waterford < Watergate --- > Waterbury/M > Waterford/M > Watergate/M 15810,15815c12751,12757 < Watkins < Watson < Watt/S < Watteau < Watusi < Waugh --- > Watkins/M > Watson/M > Watt/SM > Watteau/M > Watts/M > Watusi/M > Waugh/M 15819,15820d12760 < Way/M < Waylan/M 15822,15823d12761 < Waylen/M < Waylin/M 15825,15826c12763,12764 < Wayne < Weave/M --- > Wayne/M > Weave/RM 15828c12766 < Web/R --- > Web/MR 15830c12768,12769 < Webb --- > Webb/M > Weber/M 15835c12774 < Wedgwood --- > Wedgwood/M 15838c12777 < Wehrmacht --- > Wehrmacht/M 15840d12778 < Weidar/M 15847,15848c12785 < Weizmann < Welbie/M --- > Weizmann/M 15850d12786 < Welch 15854c12790 < Welles --- > Welles/M 15856c12792 < Wells --- > Wells/M 15859c12795 < Welshmen --- > Welshmen/M 15861,15862d12796 < Wenda/M < Wendall/M 15864d12797 < Wendeline/M 15867d12799 < Wendie/M 15869,15871d12800 < Wendye/M < Wenona/M < Wenonah/M 15878c12807 < Wessex --- > Wessex/M 15882d12810 < Westbrooke/M 15884,15885c12812 < Westinghouse < Westleigh/M --- > Westinghouse/M 15887c12814 < Westminster --- > Westminster/M 15889c12816 < Westphalia --- > Westphalia/M 15891d12817 < Weylin/M 15893c12819 < Wharton --- > Wharton/M 15901,15903c12827,12828 < Whistler < Whit < Whitaker --- > Whistler/M > Whitaker/M 15907,15908c12832,12833 < Whitehall < Whitehead --- > Whitehall/M > Whitehead/M 15913c12838 < Whitman --- > Whitman/M 15915c12840 < Whitsunday/SM --- > Whitsunday/MS 15917c12842 < Whittier --- > Whittier/M 15919,15920c12844 < Wiatt/M < Wicca --- > Wicca/M 15925c12849 < Wiggins --- > Wiggins/M 15929a12854 > Wikileaks 15936c12861 < Wilberforce --- > Wilberforce/M 15940d12864 < Wilburt/M 15943c12867 < Wilde/R --- > Wilde/MR 15945,15948c12869,12870 < Wildon/M < Wileen/M < Wilek/M < Wiles --- > Wilder/M > Wiles/M 15957d12878 < Wilie/M 15959,15960c12880,12881 < Wilkes < Wilkins --- > Wilkes/M > Wilkins/M 15964d12884 < Willabella/M 15966,15968c12886 < Willamina/M < Willard < Willdon/M --- > Willard/M 15970,15972c12888 < Willemstad < Willetta/M < Willette/M --- > Willemstad/M 15975,15976c12891,12893 < William/S < Williamson --- > William/SM > Williams/M > Williamson/M 15978,15979c12895 < Willis < Willow/M --- > Willis/M 15981d12896 < Willyt/M 15983d12897 < Wilmar/M 15987,15989d12900 < Wilona/M < Wilone/M < Wilow/M 15991,15992c12902 < Wilsonian < Wilt/M --- > Wilsonian/M 15997d12906 < Win/M 15999,16000c12908,12909 < Winchester/S < Windbreaker --- > Winchester/MS > Windbreaker/M 16003,16004c12912,12913 < Windhoek < Windows --- > Windhoek/M > Windows/M 16007c12916 < Windy/M --- > Windy's 16012,16013d12920 < Wini/M < Winifield/M 16018d12924 < Winnah/M 16021,16022c12927 < Winni/M < Winnie --- > Winnie/M 16027d12931 < Winonah/M 16030c12934 < Winters --- > Winters/M 16035c12939 < Wisconsinite/SM --- > Wisconsinite/MS 16037d12940 < Wit/M 16040,16042c12943,12944 < Wittie/M < Witty/M < Witwatersrand --- > Witty's > Witwatersrand/M 16046,16048c12948,12950 < Wolf < Wolfe < Wolff --- > Wolf/M > Wolfe/M > Wolff/M 16050,16052c12952 < Wolfie/M < Wolfy/M < Wollongong --- > Wollongong/M 16054c12954 < Wolsey --- > Wolsey/M 16056c12956 < Wonder --- > Wonder/M 16059c12959 < Wood/S --- > Wood/SM 16063d12962 < Woodman 16064a12964 > Woods/M 16067,16068c12967 < Woody/M < Woolf --- > Woolf/M 16071c12970 < Woolworth --- > Woolworth/M 16075c12974 < Worcestershire --- > Worcestershire/M 16081,16082c12980 < Worms < Worth --- > Worms/M 16084d12981 < Worthy/M 16090,16092c12987,12988 < Wren < Wrennie/M < Wright --- > Wren/M > Wright/M 16096c12992 < Wuhan --- > Wuhan/M 16098,16099c12994 < Wyatan/M < Wyatt --- > Wyatt/M 16102a12998 > Wyeth/M 16104d12999 < Wylma/M 16109,16110d13003 < Wynnie/M < Wynny/M 16113c13006 < Wyomingite/MS --- > Wyomingite/SM 16126c13019 < Xanadu --- > Xanadu/M 16128,16130c13021,13022 < Xanthippe < Xavier < Xaviera/M --- > Xanthippe/M > Xavier/M 16136,16137c13028 < Xenophon < Xenos --- > Xenophon/M 16139,16140c13030 < Xerxes < Xever/M --- > Xerxes/M 16142c13032 < Xi'an --- > Xi'an/M 16145c13035 < Ximenes --- > Ximenes/M 16152,16154d13041 < Xylia/M < Xylina/M < Xymenes/M 16156c13043 < YMCA --- > YMCA/M 16160c13047 < YWCA --- > YWCA/M 16165d13051 < Yahveh/M 16167c13053 < Yakima --- > Yakima/M 16169c13055 < Yakutsk --- > Yakutsk/M 16171d13056 < Yalonda/M 16177,16179c13062 < Yamoussoukro < Yanaton/M < Yance/M --- > Yamoussoukro/M 16182c13065 < Yang --- > Yang/M 16189,16190c13072 < Yaqui < Yard/M --- > Yaqui/M 16193,16194c13075 < Yaroslavl < Yasmeen/M --- > Yaroslavl/M 16197c13078 < Yates --- > Yates/M 16202,16203c13083 < Yehudit/M < Yekaterinburg --- > Yekaterinburg/M 16205c13085 < Yellowknife --- > Yellowknife/M 16207c13087 < Yeltsin --- > Yeltsin/M 16212c13092 < Yerevan --- > Yerevan/M 16216,16218d13095 < Yettie/M < Yetty/M < Yevette/M 16220c13097 < Yggdrasil --- > Yggdrasil/M 16223d13099 < Ynes/M 16228c13104 < Yokohama --- > Yokohama/M 16231,16232d13106 < Yolane/M < Yolanthe/M 16234,16236c13108 < Yonkers < Yooper/MS < Yorgo/MS --- > Yonkers/M 16240c13112 < Yorkie --- > Yorkie/M 16249,16251c13121,13122 < Young < Youngstown < Yovonnda/M --- > Young/M > Youngstown/M 16253c13124 < Ypsilanti --- > Ypsilanti/M 16257c13128 < Yugo --- > Yugo/M 16265d13135 < Yulma/M 16269d13138 < Yurik/M 16275c13144 < Z/SDMNXT --- > Z/SMNXT 16277d13145 < Zabrina/M 16280d13147 < Zacharia/SM 16282c13149 < Zacharie/M --- > Zacharias 16284d13150 < Zacherie/M 16287d13152 < Zackariah/M 16296c13161 < Zamboni --- > Zamboni/M 16298,16299c13163 < Zamora < Zandra/M --- > Zamora/M 16301d13164 < Zaneta/M 16304,16306c13167,13169 < Zapata < Zaporozhye < Zapotec --- > Zapata/M > Zaporozhye/M > Zapotec/M 16311d13173 < Zared/M 16313d13174 < Zarla/M 16317,16319c13178 < Zebadiah/M < Zebedee < Zebulen/M --- > Zebedee/M 16321,16322c13180 < Zechariah < Zed/M --- > Zechariah/M 16328c13186 < Zelig --- > Zelig/M 16335,16338c13193,13195 < Zephaniah < Zephyrus < Zeppelin < Zerk/M --- > Zephaniah/M > Zephyrus/M > Zeppelin/M 16344c13201 < Zhengzhou --- > Zhengzhou/M 16347c13204 < Zhukov --- > Zhukov/M 16350c13207 < Ziegfeld --- > Ziegfeld/M 16354d13210 < Zilvia/M 16362c13218 < Ziploc --- > Ziploc/M 16364d13219 < Zitella/M 16368,16371c13223,13224 < Zollie/M < Zollverein < Zolly/M < Zoloft --- > Zollverein/M > Zoloft/M 16373,16375d13225 < Zonda/M < Zondra/M < Zonnya/M 16377,16381c13227 < Zorah/M < Zorana/M < Zorina/M < Zorine/M < Zorn --- > Zorn/M 16388,16389c13234 < Zsazsa/M < Zsigmondy --- > Zsigmondy/M 16393d13237 < Zulema/M 16397c13241 < Zuni --- > Zuni/M 16399d13242 < Zuzana/M 16401c13244 < Zworykin --- > Zworykin/M 16404a13248 > Zürich/M 16430c13274 < abbreviate/XDSGN --- > abbreviate/DSGNX 16431a13276 > abbé/SM 16436a13282 > abductee/MS 16441c13287 < aberration/SM --- > aberration/MS 16461c13307 < abjuration/MS --- > abjuration/SM 16482c13328 < abolitionist/MS --- > abolitionist/SM 16485c13331 < abominate/XDSGN --- > abominate/DSGNX 16492c13338 < abortionist/SM --- > abortionist/MS 16501c13347 < abrasive/MYSP --- > abrasive/MYPS 16504c13350 < abridge/DSG --- > abridge/DSLG 16519c13365 < abseil/MDRSG --- > abseil/MDSG 16524c13370 < absentminded/PY --- > absentminded/YP 16526d13371 < absinth/M 16528c13373 < absolute/PMYTNRS --- > absolute/PMYTNS 16537d13381 < absorbed/U 16540d13383 < absorber/S 16542c13385 < absorption/SM --- > absorption/M 16544d13386 < absorptivity 16547c13389 < abstemious/YP --- > abstemious/PY 16549c13391 < abstention/SM --- > abstention/MS 16552c13394 < abstract/TGSPMDRY --- > abstract/GSPMDY 16557c13399 < abstruse/RPYT --- > abstruse/YP 16559a13402 > absurdist/MS 16564c13407,13408 < abuse/EGVDSM --- > abuse's > abuse/EGVDS 16582c13426 < academician/SM --- > academician/MS 16586c13430 < accelerate/GNDSX --- > accelerate/GNXDS 16589d13432 < accelerometer/S 16593c13436 < accentuate/DSGN --- > accentuate/GNDS 16602d13444 < acceptor/S 16604d13445 < accessed/A 16608c13449 < accession/GMDS --- > accession/MDGS 16611d13451 < accidence 16613c13453 < accidental/MYS --- > accidental/SMY 16615c13455 < acclamation/SM --- > acclamation/M 16618,16619d13457 < acclimatisation < acclimatise/DSG 16624c13462 < accommodate/DSGNX --- > accommodate/XGNDS 16628c13466 < accompaniment/SM --- > accompaniment/MS 16632c13470 < accomplish/GLDS --- > accomplish/DSLG 16640c13478 < accordionist/SM --- > accordionist/MS 16651,16652c13489,13490 < accoutre/DSGL < accoutrements/M --- > accoutre/DSG > accoutrements 16656d13493 < accreted 16661c13498 < acculturate/GNDS --- > acculturate/DSGN 16663c13500 < accumulate/DSGNVX --- > accumulate/XGNVDS 16665,16666c13502,13503 < accumulator/SM < accuracy/ISM --- > accumulator/MS > accuracy/IM 16671,16672d13507 < accurst < accusal 16695d13529 < achievable/U 16697d13530 < achieved/A 16706c13539 < acidify/GDSN --- > acidify/GDS 16708d13540 < acidophiles 16711c13543 < acknowledge/DSG --- > acknowledge/DSGL 16714c13546 < acknowledgment/MS --- > acknowledgment/SM 16724c13556 < acquaintance/MS --- > acquaintance/SM 16732c13564 < acquisition/SM --- > acquisition/MS 16737d13568 < acquittance 16745c13576 < acrimonious/PY --- > acrimonious/YP 16756a13588 > acrylamide 16758c13590,13591 < act/ASDGVM --- > act's > act/ASDGV 16761d13593 < actinides 16766,16768c13598 < activated/U < activation/CAIM < activations --- > activation/ICAM 16770c13600,13601 < active/IKYSM --- > active's > active/ISY 16774c13605 < activity/ASIM --- > activity/ISM 16793d13623 < acyclic 16802,16803c13632 < adaptation/SM < adapted/U --- > adaptation/MS 16806,16807d13634 < adaptive/Y < adaptivity 16816d13642 < addictive/P 16819c13645 < additive/SMY --- > additive/SM 16821,16822c13647,13649 < address/AGDSM < addressable/U --- > address's > address/AGDS > addressable 16829c13656 < adept/TMRYPS --- > adept/MYPS 16834c13661 < adhere/ZGDRS --- > adhere/GDS 16838c13665 < adhesive/SPM --- > adhesive/PSM 16841d13667 < adiabatically 16844a13671 > adiós 16852c13679 < adjournment/MS --- > adjournment/SM 16854c13681 < adjudicate/GNVDSX --- > adjudicate/GNVXDS 16859c13686 < adjuration/SM --- > adjuration/MS 16863d13689 < adjusted/U 16866d13691 < adjustor/SM 16871,16872c13696,13697 < administer/SDG < administrate/GNVXDS --- > administer/DGS > administrate/XDSGNV 16875c13700 < administrator/SM --- > administrator/MS 16889c13714 < admittance/SM --- > admittance/M 16895c13720 < admonishment/SM --- > admonishment/MS 16916c13741 < adrenalin/M --- > adrenalin's 16917a13743 > adrenergic 16919c13745 < adroit/PTRY --- > adroit/PY 16923c13749 < adsorption/MS --- > adsorption/SM 16930c13756 < adulterate/XGNDS --- > adulterate/GNDS 16963c13789 < advertise/ZGLDRS --- > advertise/LZGDRS 16968,16969d13793 < advertize/GDSL < advertizement/SM 16971c13795 < advice/SM --- > advice/M 16977d13800 < advisedly/I 16979a13803 > advisor/SM 16983c13807 < advocator/SM --- > advocator/MS 16985c13809 < adware/MS --- > adware/SM 16989d13812 < aeolian 16996c13819 < aerie/M --- > aerie/MS 17002d13824 < aerobraking 17014,17015c13836 < aery/TRSM < aesthete/S --- > aesthete/MS 17020,17021d13840 < aether < aetiology 17024c13843 < affable/TR --- > affable 17027c13846,13847 < affect/EGVDSM --- > affect's > affect/EGDS 17037c13857,13858 < affiliate/EGNDSM --- > affiliate's > affiliate/EGNDS 17041d13861 < affine 17054c13874 < affordable/U --- > affordably 17076c13896 < afterburner/SM --- > afterburner/MS 17083c13903 < aftermarket/SM --- > aftermarket/MS 17090c13910 < afterthought/MS --- > afterthought/SM 17099a13920 > ageing/SM 17108c13929 < agglomerate/XDSMGN --- > agglomerate/DSMGNX 17110c13931 < agglutinate/XDSGNV --- > agglutinate/DSXGN 17112c13933 < aggrandize/LGDS --- > aggrandize/GLDS 17114c13935 < aggravate/GNDSX --- > aggravate/GNXDS 17118d13938 < aggregated/E 17121,17122c13941,13942 < aggression/SM < aggressive/YP --- > aggression/M > aggressive/PY 17126d13945 < aggrieved/Y 17129c13948 < agile/YTR --- > agile/Y 17132d13950 < agism 17134d13951 < agitated/Y 17145c13962 < agonist --- > agonist/S 17150,17151c13967 < agoraphobic/SM < agouti --- > agoraphobic/MS 17164d13979 < agrochemical/S 17176c13991 < aid/SMDRZG --- > aid/SMDG 17206d14020 < airframe/S 17232d14045 < airstream 17242c14055 < airworthy/TPR --- > airworthy/P 17253d14065 < alanine 17261d14072 < albedo 17269d14079 < alchemical 17277d14086 < aldehyde 17287c14096 < alert/TGMDRYPS --- > alert/GMDYPS 17298,17299c14107 < algebraical/Y < algebraist --- > algebraically 17302d14109 < algorithmically 17319,17322d14125 < aline/LGDS < alinement/MS < aliphatic < aliquot/S 17326c14129 < alkali/M --- > alkali/MS 17339c14142 < allegiance/SM --- > allegiance/MS 17345d14147 < allegri 17348d14149 < allelic 17356c14157 < alleviate/DSXGN --- > alleviate/DSGN 17362c14163 < alliterate/DSGNVX --- > alliterate/DSXGNV 17365d14165 < allocatable 17367d14166 < allocated/U 17370,17371d14168 < allocator/S < allophones 17374,17375d14170 < allotrope < allotropic 17380c14175 < allowable --- > allowable/U 17391c14186 < allusive/YP --- > allusive/PY 17397d14191 < almanack/S 17420,17421c14214,14215 < alphabetization/MS < alphabetize/DRSZG --- > alphabetization/SM > alphabetize/ZGDRS 17435,17436c14229 < altercate/XN < altercation/M --- > altercation/SM 17438c14231 < alternate/XDSMYGNV --- > alternate/DSMYGNVX 17441c14234 < alternator/MS --- > alternator/SM 17462c14255 < amalgamate/DSGNX --- > amalgamate/XGNDS 17472c14265 < amateurish/PY --- > amateurish/YP 17489a14283 > ambience/MS 17495c14289 < ambitious/PY --- > ambitious/YP 17513c14307,14309 < ambush/ZGMDS --- > ambush/GMDS > ameba/MS > amebae 17514a14311 > ameboid 17521d14317 < amended/U 17525c14321 < amercement/MS --- > amercement/SM 17528d14323 < amethystine 17530c14325 < amiable/P --- > amiable 17540d14334 < amine/S 17548d14341 < ammonites 17564,17565c14357 < amongst < amontillado/MS --- > amontillado/SM 17572c14364 < amortization/MS --- > amortization/SM 17575a14368 > amoxicillin 17585a14379 > ampicillin 17589c14383 < amplify/DRSZGNX --- > amplify/NDRSXZG 17592d14385 < ampul/MS 17597a14391 > amuck 17600d14393 < amused/U 17605d14397 < anabolic 17615,17616d14406 < anagrammatic < anagrammatically 17623c14413 < analogous/PY --- > analogous/YP 17628c14418 < analyses --- > analyses/A 17632a14423 > analyticalally 17636,17637d14426 < anamorphic < anapaest/SM 17640,17641d14428 < anaphora < anaphoric 17643c14430 < anarchical/Y --- > anarchically 17665c14452 < anchorperson/MS --- > anchorperson/SM 17682d14468 < anechoic 17686c14472 < anemometer/MS --- > anemometer/SM 17689d14474 < aneroid 17694c14479 < anesthetist/SM --- > anesthetist/MS 17696,17697c14481 < anesthetize/DSG < aneurism/SM --- > anesthetize/GDS 17710d14493 < anglepoise 17726a14510 > angulation 17730c14514 < animadvert/SGD --- > animadvert/GSD 17732c14516 < animalcule/MS --- > animalcule/SM 17738c14522 < anime --- > anime/M 17749,17750d14532 < anisotropic < anisotropy/S 17756d14537 < annal/S 17759c14540 < anneal/GDRS --- > anneal/GDS 17763d14543 < annexe/M 17766c14546 < annihilator/MS --- > annihilator/SM 17769d14548 < annotated/U 17779d14557 < annoyware/S 17786d14563 < annuli 17790,17791c14567 < annulus < annunciation/MS --- > annunciation/SM 17801c14577 < anonymization/SM --- > anonymization/MS 17810c14586 < answer/BMDRGS --- > answer/BMDGS 17845d14620 < anthropic 17847,17848c14622 < anthropogenic < anthropoid/SM --- > anthropoid/MS 17850c14624 < anthropologist/MS --- > anthropologist/SM 17852d14625 < anthropometric 17856c14629 < anthropomorphize/DSG --- > anthropomorphize/DS 17863c14636 < antibiotic/SM --- > antibiotic/MS 17867,17868c14640,14641 < antichrist/MS < anticipate/GNVXDS --- > antichrist/SM > anticipate/GNXDS 17880c14653 < anticoagulant/SM --- > anticoagulant/MS 17882,17883c14655,14656 < anticommunist/MS < anticyclone/MS --- > anticommunist/SM > anticyclone/SM 17898,17899c14671,14672 < antilogarithm/MS < antimacassar/SM --- > antilogarithm/SM > antimacassar/MS 17906,17907c14679,14680 < antioxidant/SM < antiparticle/MS --- > antioxidant/MS > antiparticle/SM 17921c14694 < antiquarian/MS --- > antiquarian/SM 17927a14701 > antiscience 17937,17938c14711 < antispasmodic/SM < antistatic --- > antispasmodic/MS 17940,17941d14712 < antisymmetric < antisymmetry 17950,17951c14721,14723 < antiviral/S < antivirus/MS --- > antivenom > antiviral/MS > antivirus/M 17957c14729 < antral --- > antrum 17975d14746 < aorist 17989,17990d14759 < aperiodic < aperiodically 18002c14771 < aphrodisiac/MS --- > aphrodisiac/SM 18010d14778 < apnea 18025a14794 > apoptotic 18028c14797 < apostatize/DSG --- > apostatize/GDS 18032,18033c14801 < apostrophe/SM < apostrophized --- > apostrophe/MS 18038,18039c14806 < apotheosizes < app/MS --- > app/SM 18053,18054c14820 < appeased/U < appeasement/MS --- > appeasement/SM 18065c14831 < appertain/DGS --- > appertain/GDS 18073d14838 < applecart 18083d14847 < applicative 18087a14852,14853 > appliqué/SMG > appliquéd 18091,18092c14857,14858 < appointment/ESMA < apportion/ALDGS --- > appointment/AESM > apportion/AGDLS 18095c14861 < apposite/PYNV --- > apposite/YNVP 18098c14864 < appositive/MS --- > appositive/SM 18101d14866 < appraisees 18105c14870 < appreciate/XDSGNV --- > appreciate/DSXGNV 18113c14878 < apprehensive/PY --- > apprehensive/YP 18118d14882 < apprize/GDS 18120,18121c14884 < approachability < approachable/IU --- > approachable/UI 18124c14887 < appropriate/DSPXYGN --- > appropriate/PYGNXDS 18128c14891 < appropriator/MS --- > appropriator/SM 18135c14898 < approximate/XYGNDS --- > approximate/DSXYGN 18161d14923 < aquiculture/M 18168d14929 < arachnoid 18173,18174c14934,14935 < arbitrageur/MS < arbitrament/MS --- > arbitrageur/SM > arbitrament/SM 18180c14941 < arbitrator/SM --- > arbitrator/MS 18183d14943 < arbores 18188,18190c14948,14949 < arcade/MGS < arcana < arcane/PY --- > arcade/MS > arcane 18205c14964 < archbishopric/MS --- > archbishopric/SM 18207d14965 < archdeaconry 18209c14967 < archdiocese/SM --- > archdiocese/MS 18214c14972 < archeologist/MS --- > archeologist/SM 18216d14973 < archeopteryx 18221d14977 < archetypical 18224a14981 > archipelagoes 18229c14986 < architecture/SM --- > architecture/MS 18233d14989 < archived/U 18238d14993 < ardency 18258c15013 < argumentative/YP --- > argumentative/PY 18262c15017 < arid/TRY --- > arid/Y 18273c15028 < arithmetician/SM --- > arithmetician/MS 18275c15030,15031 < arm/EAGDSM --- > arm's > arm/EAGDS 18287d15042 < armless 18303d15057 < aromaticity 18308d15061 < aroused/U 18312c15065 < arraignment/MS --- > arraignment/SM 18314,18315c15067 < arrangeable < arrangement/ASME --- > arrangement/AESM 18322d15073 < arrestable 18332c15083 < arrow/GMDS --- > arrow/MS 18339d15089 < arsenide 18344d15093 < artefactual 18355a15105 > arthroscopy 18360c15110 < articulate/PXDSYGN --- > articulate/YGNPDSX 18363d15112 < articulatory 18386c15135 < aryl/MS --- > aryl/SM 18389d15137 < asbestosis 18394,18395d15141 < ascendency/M < ascendent/SM 18398c15144 < ascertain/BLGDS --- > ascertain/GDSBL 18403d15148 < ascorbic 18406c15151 < ascription/MS --- > ascription/M 18439c15184 < asphyxiate/DSGNX --- > asphyxiate/DSXGN 18446d15190 < aspirational 18454d15197 < assailed/U 18456c15199 < assassinate/GNDSX --- > assassinate/GNXDS 18461,18463c15204,15206 < assemblage/MS < assemble/EADSG < assembler/MS --- > assemblage/SM > assemble/ERZGSD > assembler/EM 18465c15208 < assembly/AM --- > assembly/EAM 18477d15219 < assessable 18487c15229,15230 < assign/ALGDSM --- > assign's > assign/ALGDS 18489c15232 < assignation/SM --- > assignation/MS 18491c15234 < assignee/MS --- > assignee/M 18495d15237 < assimilable 18505,18507c15247,15248 < associate/EDSGNVM < associated/U < associateship --- > associate's > associate/EDSGNV 18509d15249 < associational 18511,18512d15250 < associative/Y < associativity 18516c15254 < assortment/SM --- > assortment/MS 18519d15256 < assuaged/U 18521,18522c15258 < assuming/AU < assumption/MS --- > assumption/SM 18538c15274 < astonish/DSGL --- > astonish/DSLG 18545c15281 < astral/Y --- > astral 18549c15285 < astringent/MYS --- > astringent/SMY 18556c15292 < astrologist/SM --- > astrologist/MS 18577d15312 < asymptote/S 18593d15327 < atheistically 18594a15329 > atherosclerotic 18604d15338 < atlantes 18606c15340 < atmosphere/SM --- > atmosphere/MS 18614,18616d15347 < atomicity < atomistic < atomization 18625a15357 > atrioventricular 18636a15369 > attaché/MS 18643,18644c15376 < attained/U < attainment/MS --- > attainment/SM 18646c15378,15379 < attempt/ASDGM --- > attempt's > attempt/ASDG 18648c15381 < attendance/MS --- > attendance/SM 18653d15385 < attentional 18655c15387 < attentive/IYP --- > attentive/IPY 18658d15389 < attenuated/U 18660d15390 < attenuator/S 18662c15392 < attestation/MS --- > attestation/SM 18672,18674c15402,15404 < attractant/SM < attraction/SM < attractive/UPY --- > attractant/MS > attraction/MS > attractive/UY 18676,18678c15406 < attractor/S < attributable/U < attribute/BXDSMGNV --- > attribute/DSMGNVBX 18681c15409 < attributive/SMY --- > attributive/MYS 18691c15419 < audacious/PY --- > audacious/YP 18699d15426 < audiobook/SM 18701c15428 < audiologist/MS --- > audiologist/SM 18704c15431 < audiophile/MS --- > audiophile/SM 18708,18709c15435 < audit/GVMDS < audited/U --- > audit/GMDS 18716d15441 < augite 18718c15443 < augmentation/SM --- > augmentation/MS 18727,18728c15452 < auntie/M < aunty/SM --- > auntie/SM 18735d15458 < auric 18739,18740c15462 < auroral < auscultate/XDSGN --- > auscultate/GNDSX 18748c15470,15471 < auteur/MS --- > auteur's > auteurs 18751c15474 < authenticate/GNDSX --- > authenticate/XGNDS 18754d15476 < authenticator/S 18759c15481 < authoritarian/SM --- > authoritarian/MS 18783,18784c15505 < autocue < autodidact/MS --- > autodidact/SM 18787d15507 < autoignition 18798,18799c15518 < automobile/MGDS < automorphism/S --- > automobile/DSMG 18815d15533 < availabilities 18821c15539 < avaricious/YP --- > avaricious/Y 18828d15545 < avenged/U 18834c15551 < averse/XNV --- > averse/XN 18844c15561 < avid/TRY --- > avid/Y 18866d15582 < awakened/U 18869c15585,15586 < aware/UPT --- > awardee/S > aware/UP 18871d15587 < awarer 18878d15593 < awestricken 18891a15607 > awol 18895,18896d15610 < axehead/S < axeman 18898d15611 < axillary 18902,18903c15615 < axiomatizing < axis/MS --- > axis/M 18908d15619 < ay/M 18916d15626 < azimuthal 18932c15642 < babysitter/SM --- > babysitter/MS 18934c15644 < baccalaureate/MS --- > baccalaureate/SM 18947,18948c15657 < backbench/RSZ < backbencher/M --- > backbench/S 18967c15676 < background/MRSZ --- > background/MRZS 18988c15697 < backslapper/MS --- > backslapper/SM 19002a15712 > backstory/S 19007c15717 < backtrack/GSD --- > backtrack/SDG 19009c15719 < backward/SPY --- > backward/PSY 19018c15728 < bacteria/SM --- > bacteria/M 19024c15734 < bacteriologist/MS --- > bacteriologist/SM 19026d15735 < bacteriophage 19034c15743 < badge/MZDRSG --- > badge/MZGRS 19075d15783 < bakehouse 19083,19084c15791,15792 < balance/UDSGM < balanced/A --- > balance's > balance/UDSG 19096,19097d15803 < balefuller < balefullest 19104d15809 < ballade/S 19140c15845 < banal/RYT --- > banal/Y 19143c15848,15849 < band/ESGDM --- > band's > band/ESGD 19156d15861 < bandpass 19166,19168c15871 < banefuller < banefullest < bang/SZGMDR --- > bang/SGMDR 19185c15888 < banned/U --- > banned 19187,19188c15890 < banning/U < bannister/MS --- > banning 19195d15896 < banshie/MS 19212c15913,15914 < bar/ECUTSM --- > bar's > bar/ECUTS 19215c15917 < barbarianism/SM --- > barbarianism/MS 19225d15926 < barbeque/DSMG 19233d15933 < barcarolle/MS 19251d15950 < bargepole 19254a15954 > barista/MS 19257c15957,15958 < bark/CSGDM --- > bark's > bark/CSGD 19262d15962 < barleycorn/S 19270c15970 < barnstorm/ZGSDR --- > barnstorm/SDRZG 19290a15991,15992 > barrelled > barrelling 19304,19305d16005 < barycenter < barycentric 19308c16008 < basalt/SM --- > basalt/M 19310c16010,16011 < base/CDRSLTGM --- > base's > base/CDSLTG 19319a16021 > baser 19335d16036 < basketful 19345c16046 < bassoonist/MS --- > bassoonist/SM 19374c16075 < bathysphere/SM --- > bathysphere/MS 19395c16096 < battlefront/SM --- > battlefront/MS 19399c16100 < battleship/MS --- > battleship/SM 19403d16103 < baulk/MDGS 19421c16121 < beachcomber/MS --- > beachcomber/SM 19462c16162 < beatify/GDSXN --- > beatify/GXNDS 19469c16169 < beautician/MS --- > beautician/SM 19472,19473c16172,16173 < beautiful/TRY < beautify/DRSZGN --- > beautiful/Y > beautify/NDRSZG 19474a16175 > beaux 19488c16189 < bedazzle/GLDS --- > bedazzle/GDSL 19506,19507d16206 < bedlinen < bedmaker/S 19515d16213 < bedsheets 19527d16224 < beechwood 19529c16226 < beefburger/MS --- > beefburger/SM 19531d16227 < beefeater 19543d16238 < beermat/S 19562c16257 < befuddle/GDSL --- > befuddle/GLDS 19565a16261 > begat 19596c16292 < behaviorist/SM --- > behaviorist/MS 19611c16307 < belated/PY --- > belated/Y 19614c16310 < beleaguer/SGD --- > beleaguer/GSD 19619d16314 < believability/U 19623d16317 < believed/U 19626c16320 < belittle/DSLG --- > belittle/LDSG 19633c16327 < belletrist/SM --- > belletrist/MS 19640c16334 < belligerent/SMY --- > belligerent/MYS 19648c16342 < bellybutton/MS --- > bellybutton/SM 19664,19665c16358,16359 < benchmark/GMS < bend/BSZGMDR --- > benchmark/MS > bend/BSZGMR 19681c16375 < benevolence/MS --- > benevolence/SM 19776c16470 < bevel/JGMDS --- > bevel/GMDS 19784c16478 < bewilder/SLGD --- > bewilder/LSGD 19797a16492,16494 > biased/U > biassed > biassing 19802,19803c16499 < biblicists < bibliographer/SM --- > bibliographer/MS 19840c16536 < bifurcate/DSXGN --- > bifurcate/XDSGN 19871,19872d16566 < bilharzia < biliary 19876a16571 > bilirubin 19889c16584 < billionaire/MS --- > billionaire/SM 19893,19894c16588 < billowy/RT < billposters --- > billowy 19900d16593 < bimodal 19904c16597,16598 < bind/AUGSM --- > bind's > bind/AUGS 19909a16604 > bingeing 19917d16611 < binodal 19927d16620 < bioengineering 19943,19945d16635 < biometric/S < biometry < biomorph 19953a16644 > bioreactor/S 19954a16646 > biosensor/S 19958d16649 < biota 19961d16651 < biotechnologist 19963d16652 < biotic 19970d16658 < bipedalism 19989,19991c16677 < birdtables < birdwatcher/MS < birdwatching --- > birdwatcher/SM 19993,19994d16678 < birefringence < birefringent 19996c16680 < birth/GMD --- > birth/ZGMDR 19997a16682 > birther/M 20001c16686 < birthright/SM --- > birthright/MS 20003c16688 < birthstone/MS --- > birthstone/SM 20015d16699 < bistable 20021a16706 > bitcoin/SM 20032c16717 < bitty/TPR --- > bitty/TR 20043c16728 < bizarre/YP --- > bizarre/Y 20045c16730 < bl/D --- > bl/DG 20054,20055c16739,16740 < blackball/SMDG < blackberry/SMG --- > blackball/SGMD > blackberry/GSM 20059a16745 > blackface 20071d16756 < blackshirts 20088c16773 < blameless/PY --- > blameless/YP 20092c16777 < blammo/GDS --- > blammo 20097c16782 < blandishment/MS --- > blandishment/SM 20111a16797 > blasé 20141c16827 < blessed/TRYP --- > blessed/YP 20145d16830 < blether/GSD 20153c16838 < blindfold/GSMD --- > blindfold/SMDG 20164c16849 < blissful/PY --- > blissful/YP 20178c16863 < bloatware/S --- > bloatware 20183c16868,16869 < block/UGDSM --- > block's > block/UGDS 20196c16882 < blogroll/MS --- > blogroll/SM 20208d16893 < bloodied/U 20215c16900 < bloodmobile/SM --- > bloodmobile/MS 20218d16902 < bloodsport/S 20221,20223c16905,16906 < bloodstone < bloodstream/MS < bloodsucker/MS --- > bloodstream/SM > bloodsucker/SM 20227,20228c16910 < bloodthirsty/TPR < bloodworm --- > bloodthirsty/RPT 20230d16911 < bloodymindedness 20245,20247c16926,16927 < bloviate/SGD < bloviation < bloviator/SM --- > bloviate/GNDS > bloviator/MS 20254c16934 < blowjob/MS! --- > blowjob/SM 20264,20265d16943 < blub/S < blubbed 20268d16945 < blubbing 20278a16956 > blueing/M 20280c16958 < bluejacket/MS --- > bluejacket/SM 20286,20287c16964,16965 < blueprint/GMDS < bluestocking/MS --- > blueprint/MDGS > bluestocking/SM 20295c16973 < blunder/MDRZGJS --- > blunder/MDRZGS 20309d16986 < blushing/UY 20317c16994 < board/JZGMDRS --- > board/ZGMDRS 20319d16995 < boardgames 20321c16997 < boardinghouse/SM --- > boardinghouse/MS 20329d17004 < boatclubs 20344c17019 < bobbysoxer/MS --- > bobbysoxer/SM 20349c17024 < bobsledder/SM --- > bobsledder/MS 20365d17039 < bodiless 20369c17043 < bodybuilder/MS --- > bodybuilder/SM 20384d17057 < boggling/Y 20386,20387c17059 < bogie/M < bogometer/S --- > bogie/MS 20389,20390c17061 < bogosity/S < bogotify/DSG --- > bogosity 20392d17062 < bogy/SM 20398d17067 < boiled/U 20419,20420c17088 < boloney/M < bolshevik/M --- > bolshevik/SM 20424c17092,17093 < bolt/USGDM --- > bolt's > bolt/USGD 20430c17099 < bombardment/MS --- > bombardment/SM 20454d17122 < bonemeal 20457c17125 < boney --- > boneyard 20466d17133 < bonnie 20468c17135,17136 < bonsai/MS --- > bonobo/MS > bonsai/M 20484c17152 < bookbinder/MS --- > bookbinder/SM 20488d17155 < booked/U 20501c17168 < bookseller/SM --- > bookseller/MS 20508d17174 < bookwork 20523c17189,17190 < boot/ASGDM --- > boot's > boot/ASGD 20527a17195 > bootie/M 20531c17199 < bootlegger/SM --- > bootlegger/MS 20534d17201 < bootprints 20548,20549c17215,17216 < borderland/SM < borderline/SM --- > borderland/MS > borderline/MS 20560c17227 < borrow/SDRZGBJ --- > borrow/SDRZGJ 20568,20571c17235,17238 < bosom/USM < bosomy/RT < boson/S < boss/DRSGM --- > bosom's > bosom/US > bosomy > boss/DSGM 20588,20589c17255 < bothy < botnet/MS --- > botnet/SM 20595c17261 < bottommost --- > botulinum 20599,20600c17265 < bougainvillaea/S < bougainvillea/SM --- > bougainvillea/MS 20616d17280 < boundedness 20619c17283 < boundless/YP --- > boundless/PY 20621c17285 < bounteous/PY --- > bounteous/YP 20623c17287 < bountiful/PY --- > bountiful/YP 20630c17294 < boustrophedon/S --- > boustrophedon 20633c17297,17298 < boutonniere/SM --- > boutonniere/MS > boutonnière/MS 20643d17307 < bowie 20645d17308 < bowlder/SM 20660d17322 < boxful 20664d17325 < boxtops 20673d17333 < boyscout 20675a17336 > bpm 20679d17339 < braced/U 20683d17342 < bracing/Y 20686d17344 < bracketed/U 20691a17350 > bradycardia 20694c17353 < braggadocio/MS --- > braggadocio/SM 20703d17361 < braincell/S 20705c17363 < brainchildren --- > brainchildren/M 20707c17365 < brainless/YP --- > brainless/Y 20709c17367 < brainstorm/GSMD --- > brainstorm/SMDG 20711,20712c17369 < brainteaser/MS < brainteasing --- > brainteaser/SM 20722c17379 < brambly/TR --- > brambly 20762c17419 < breadboard/MS --- > breadboard/SM 20764c17421 < breadcrumb/SM --- > breadcrumb/MS 20769c17426 < breadwinner/MS --- > breadwinner/SM 20777c17434 < breakfast/GMDS --- > breakfast/MDGS 20791,20795c17448,17451 < breastplate/MS < breaststroke/MS < breastwork/SM < breath/MDRSZGBJ < breathalyser/S --- > breastplate/SM > breaststroke/SM > breastwork/MS > breath/MDRSZGB 20805,20806d17460 < breccias < brecciated 20845,20846c17499 < bridged/U < bridgehead/MS --- > bridgehead/SM 20852c17505,17506 < brief/CSDTGJM --- > brief's > brief/CSDTGJ 20864c17518 < brigantine/SM --- > brigantine/MS 20868c17522 < brightness/MS --- > brightness/M 20877d17530 < brimfull 20889d17541 < brinksmanship/M 20891d17542 < brio 20907,20908c17558,17559 < broadcast/AMGSD < broadcaster/SM --- > broadcast/AMDGS > broadcaster/MS 20912d17562 < broadleaved 20914c17564 < broadminded/P --- > broadminded 20918c17568 < broadsword/MS --- > broadsword/SM 20927c17577 < broke/G --- > broke 20942d17591 < broncho/SM 20945,20946c17594,17595 < broncobuster/MS < brontosaur/SM --- > broncobuster/SM > brontosaur/MS 20963c17612 < brotherhood/SM --- > brotherhood/MS 20983d17631 < bruised/U 20996,20997d17643 < brushy < brusk/RT 21014,21015c17660 < bubonic < buccaneer/SMDG --- > buccaneer/SGMD 21022c17667,17668 < buckle/UDSGM --- > buckle's > buckle/UDSG 21024d17669 < buckminsterfullerene 21031a17677 > buckyball/SM 21039c17685 < budgerigar/SM --- > budgerigar/MS 21051c17697,17698 < bug/CSM --- > bug's > bug/CS 21065a17713 > builtin 21085c17733 < bulletproof/GSD --- > bulletproof/SDG 21092c17740 < bullheaded/YP --- > bullheaded/PY 21106c17754 < bully/DRSMTG --- > bully/DSMG 21124c17772 < bumptious/YP --- > bumptious/PY 21130c17778 < bunco/MDG --- > bunco/SMDG 21133d17780 < bundled/U 21141c17788,17789 < bunk/CDGSM --- > bunk's > bunk/CDGS 21144c17792 < bunko/M --- > bunko/SMDG 21155c17803,17804 < burden/USGDM --- > burden's > burden/USGD 21160c17809 < bureaucrat/SM --- > bureaucrat/MS 21176c17825 < burgomaster/MS --- > burgomaster/SM 21179,21180c17828 < buried/U < burk/S --- > burka/S 21186c17834 < burn/MDRZGSBJ --- > burn/MDRZGSB 21188d17835 < burned/U 21195c17842 < burnt/U --- > burnt 21196a17844 > burqa/S 21216d17863 < bushfire 21219d17865 < bushland 21231,21232c17877 < businesspeople < businessperson/MS --- > businessperson/SM 21239,21240c17884 < busmen < buss/MD --- > buss/M 21242d17885 < bustard/S 21260a17904 > buttercream 21272,21273c17916,17918 < button/USDGM < buttonhole/MGDS --- > button's > button/USDG > buttonhole/DSMG 21277c17922 < buxom/RT --- > buxom 21284a17930 > buzzkill/SM 21322c17968 < cabinetmaker/SM --- > cabinetmaker/MS 21327c17973 < cablecast/MGS --- > cablecast/GMS 21346a17993 > caddie/MDS 21349c17996 < caddy/GDSM --- > caddying 21360d18006 < caesarian/MS 21368a18015 > café/SM 21370a18018,18019 > cagier > cagiest 21374d18022 < cagy/PTR 21402c18050 < calculate/AXGNVDS --- > calculate/AGNVDSX 21406c18054 < calculator/MS --- > calculator/SM 21412c18060 < calender/MDGS --- > calender's 21417d18064 < calibrated/U 21420c18067 < calico/M --- > calico/MS 21422d18068 < calif/MS 21454,21455d18099 < calorimeter/S < calorimetry 21457c18101 < calumniate/DSGN --- > calumniate/GNDS 21478d18121 < camerae 21489c18132,18133 < camp/CSTGDM --- > camp's > camp/CSGD 21493,21494c18137 < campanological < campanologist/SM --- > campanologist/MS 21506c18149 < can/SMDRJZG --- > can/SMDRZG 21510a18154 > canapé/MS 21516d18159 < canceled/U 21518c18161 < cancellation/MS --- > cancellation/SM 21526,21527c18169 < candelas < candid/RYPT --- > candid/YP 21538,21539c18180,18181 < candlestick/SM < candlewick/MS --- > candlestick/MS > candlewick/SM 21558c18200 < cannibalize/DSG --- > cannibalize/GDS 21566d18207 < cannula 21574c18215 < canonization/MS --- > canonization/SM 21579c18220,18221 < cant/CZRDGSM --- > cant's > cant/CZRDGS 21581d18222 < cantaloup/SM 21591c18232 < cantilever/GSMD --- > cantilever/MDGS 21595c18236 < cantonment/SM --- > cantonment/MS 21605c18246 < capable/TR --- > capable/I 21611d18251 < capacitive 21614c18254 < caparison/MDSG --- > caparison/MDGS 21630c18270 < capitulate/AGNXDS --- > capitulate/ADSXGN 21639c18279 < capricious/YP --- > capricious/PY 21662d18301 < caracul/M 21665c18304 < caramelize/GDS --- > caramelize/DSG 21668a18308 > caravansarai/S 21675c18315 < carbohydrate/MS --- > carbohydrate/SM 21681d18320 < carbonic 21684d18322 < carbonyl 21687a18326 > carbs 21690,21691c18329 < carburetor/MS < carcase/S --- > carburetor/SM 21694,21695c18332 < carcinogenesis < carcinogenic/SM --- > carcinogenic/MS 21708,21709c18345,18346 < cardinality < cardiogram/MS --- > cardio > cardiogram/SM 21712,21713c18349 < cardioid < cardiologist/SM --- > cardiologist/MS 21714a18351 > cardiomyopathy 21720d18356 < cared/U 21731c18367 < careless/YP --- > careless/PY 21744,21746c18380 < caricaturisation < caricaturist/MS < caricaturization --- > caricaturist/SM 21761a18396 > carnie/M 21763a18399 > carnivora 21765c18401 < carnivorous/YP --- > carnivorous/PY 21781c18417 < carpenter/MDSG --- > carpenter/MDGS 21795d18430 < carrell/SM 21801,21802c18436 < carroty/RT < carrousel/SM --- > carroty 21818c18452 < cartographer/MS --- > cartographer/SM 21823c18457 < cartoonist/SM --- > cartoonist/MS 21837c18471 < caseharden/GSD --- > caseharden/DGS 21843a18478 > cashback/M 21867c18502 < castigator/MS --- > castigator/SM 21874d18508 < castrato 21888c18522 < cataleptic/SM --- > cataleptic/MS 21890a18525,18526 > catalogue/DSMG > catalogued/U 21901c18537 < catastrophe/SM --- > catastrophe/MS 21914,21915c18550 < catchphrase/MS < catchup/M --- > catchphrase/SM 21929c18564 < caterwaul/GSMD --- > caterwaul/SMDG 21937c18572 < catheterize/GDS --- > catheterize/DSG 21943d18577 < cationic 21950a18585 > catsup/MS 21969d18603 < caulking/M 22003d18636 < cavitation 22009d18641 < cayman/MS 22020d18651 < cedarwood 22031d18661 < celebrated/U 22036d18665 < celebs 22052a18682 > cellulitis 22073c18703 < cent/ARM --- > cent/SZMR 22076c18706 < centenarian/SM --- > centenarian/MS 22079c18709 < center/MDGS --- > center/MDG 22081,22082c18711,18712 < centerfold/SM < centerpiece/SM --- > centerfold/MS > centerpiece/MS 22085c18715 < centiliter/SM --- > centiliter/MS 22087c18717 < centimeter/SM --- > centimeter/MS 22089c18719 < central/TSMRY --- > central/SMY 22094,22096c18724,18725 < centralize/CDSG < centralizer/SM < centric/F --- > centralize/CGDS > centralizer/MS 22098c18727 < centrifuge/MGDS --- > centrifuge/DSMG 22102,22103d18730 < centroid/S < cents 22117a18745 > cerebrovascular 22129,22130c18757 < certain/UYT < certainer --- > certain/UY 22134,22136c18761,18763 < certificate/MGNXDS < certification/M < certify/DSG --- > certificate/MGDS > certification's > certify/CDSNXG 22158c18785,18786 < chain/UGDSM --- > chain's > chain/UGDS 22163c18791 < chairmanship/MS --- > chairmanship/SM 22165c18793 < chairperson/MS --- > chairperson/SM 22179d18806 < challenging/Y 22182,22184c18809,18810 < chamberlain/SM < chambermaid/SM < chamberpot/S --- > chamberlain/MS > chambermaid/MS 22187d18812 < chammy/SM 22197c18822 < chancellor/SM --- > chancellor/MS 22203c18828 < chandelier/MS --- > chandelier/SM 22218c18843 < channelize/GDS --- > channelize/DSG 22220c18845 < chant/ZGMDRJS --- > chant/ZGMDRS 22224,22226c18849 < chanticleer/SM < chantry/S < chanty/SM --- > chanticleer/MS 22252c18875 < characteristic/MS --- > characteristic/SM 22255c18878 < characterize/GDS --- > characterize/DSG 22263c18886 < charge/EAMGDS --- > charge/AESDGM 22270c18893 < charioteer/SM --- > charioteer/MS 22272,22273c18895 < charismatic/SM < charismatically --- > charismatic/MS 22285c18907 < charming/TRY --- > charming/Y 22291c18913,18914 < charter/ASGDM --- > charter's > charter/ASGD 22293d18915 < chartists 22306c18928 < chastisement/MS --- > chastisement/SM 22311a18934 > chateaux 22323c18946 < chauffeur/MDGS --- > chauffeur/GMDS 22330d18952 < cheapish 22333c18955 < cheapskate/SM --- > cheapskate/MS 22336c18958,18959 < check/AGMDSU --- > check's/A > check/UAGDS 22338c18961 < checked/U --- > checkbox 22340c18963 < checkerboard/MS --- > checkerboard/SM 22347a18971 > checksum 22365,22366c18989,18990 < cheerleader/MS < cheerless/YP --- > cheerleader/SM > cheerless/PY 22371c18995 < cheeseburger/MS --- > cheeseburger/SM 22382,22383d19005 < chemiluminescence < chemiluminescent 22386c19008 < chemistry/MS --- > chemistry/SM 22388d19009 < chemosynthesis 22406c19027 < chesterfield/MS --- > chesterfield/SM 22413c19034 < chew/SBZGMDR --- > chew/SZGMDR 22424c19045 < chichi/TMRS --- > chichi/MS 22431c19052 < chickenshit/SM! --- > chickenshit/MS! 22442c19063 < chieftainship/MS --- > chieftainship/SM 22455c19076 < childish/PY --- > childish/YP 22462c19083 < childproof/SGD --- > childproof/GSD 22464d19084 < chile/MS 22469d19088 < chilli/TPMR 22473c19092 < chilly/S --- > chilly/TPR 22475d19093 < chimaerical 22483c19101 < chimpanzee/MS --- > chimpanzee/SM 22507d19124 < chiral 22511,22512c19128,19129 < chiropractic/MS < chiropractor/MS --- > chiropractic/SM > chiropractor/SM 22518a19136 > chiselled 22519a19138 > chiselling 22526d19144 < chitlings/M 22527a19146 > chitosan 22529d19147 < chivalric 22539d19156 < chlorate 22542c19159 < chlorinate/DSGN --- > chlorinate/GNDS 22545,22546c19162,19163 < chlorofluorocarbon/MS < chloroform/SMDG --- > chlorofluorocarbon/SM > chloroform/SGMD 22549d19165 < chloroquine 22552d19167 < chocaholic/SM 22555c19170 < chocoholic/MS --- > chocoholic/SM 22562c19177 < choirmaster/MS --- > choirmaster/SM 22565a19181,19182 > cholecystectomy > cholecystitis 22570d19186 < choline 22574d19189 < choosey 22593c19208 < choreograph/ZGDR --- > choreograph/DRZG 22610,22611c19225 < christened/U < christening/SM --- > christening/MS 22613c19227 < chroma --- > christology 22616d19229 < chromaticism 22618d19230 < chromatographic 22621d19232 < chromite 22628d19238 < chronicled/U 22633c19243 < chronologist/SM --- > chronologist/MS 22635,22636c19245 < chronometer/MS < chronometric --- > chronometer/SM 22645c19254 < chuff/D --- > chuffed 22658c19267 < chunk/MS --- > chunk/GMDS 22667c19276 < churchwarden/SM --- > churchwarden/MS 22678d19286 < chutzpa/M 22680a19289,19292 > château/M > châteaux > châtelaine/SM > ciabatta/SM 22683c19295 < cicatrice/SM --- > cicatrices 22687c19299,19300 < cider/MS --- > cider's > cider/S 22689d19301 < cigaret/MS 22692d19303 < ciggy/S 22708c19319,19320 < cipher/CGDSM --- > cipher's > cipher/CGDS 22721d19332 < circulant 22724,22725c19335,19336 < circularize/GDS < circulate/ADSGN --- > circularize/DSG > circulate/ADSG 22728c19339 < circumcise/GNDSX --- > circumcise/XDSGN 22731c19342 < circumference/SM --- > circumference/MS 22736c19347 < circumnavigate/XDSGN --- > circumnavigate/XGNDS 22738d19348 < circumnavigational 22740,22741c19350,19351 < circumscribe/DSG < circumscription/SM --- > circumscribe/GDS > circumscription/MS 22744c19354 < circumstance/DSMG --- > circumstance/MGDS 22746,22747c19356,19357 < circumvent/GDBS < circumvention/MS --- > circumvent/DSG > circumvention/M 22754d19363 < cissy/S 22759c19368,19369 < cite/IAGSDM --- > cite's > cite/IAGSD 22764d19373 < citrate 22771d19379 < cityscape 22776d19383 < civies/M 22780c19387 < civilization/SM --- > civilization/MS 22789c19396,19398 < claim/CKEAGDSMB --- > claim's > claim/CKEAGDS > claimable/AKE 22792c19401 < claimer/CEMS --- > claimer/ECSM 22794c19403 < clairvoyant/SM --- > clairvoyant/MS 22805c19414 < clamorous/Y --- > clamorous 22821c19430 < clapboard/MDSG --- > clapboard/MDGS 22830c19439 < clarify/NXDSG --- > clarify/XDSNG 22837c19446,19447 < clasp/UGDSM --- > clasp's > clasp/UGDS 22842,22843c19452,19453 < classicist/SM < classifiable/U --- > classicist/MS > classifiable 22846,22848c19456,19459 < classificatory < classified/MSU < classifier/SM --- > classified's > classified/U > classifieds > classifier/MS 22864,22865c19475,19477 < claw/SGMD < clay/SM --- > claw's > claw/CSGD > clay/M 22869d19480 < claymore/S 22913c19524,19526 < click/ZGMDRS --- > cliché/MS > clichéd > click/BZGMDRS 22916a19530 > clientèle/MS 22927,22928c19541 < climatological < climatologist/MS --- > climatologist/SM 22932,22934d19544 < climbable/U < climbdown < climbed/U 22950c19560 < cliometrician/SM --- > cliometrician/MS 22959,22960d19568 < cliquier < cliquiest 22962a19571 > clit/SM 22969c19578,19579 < cloak/USDGM --- > cloak's > cloak/USDG 22974d19583 < clockmaker 22980c19589,19590 < clog/USM --- > clog's > clog/US 22983a19594 > cloisonné/M 22993,22994c19604,19605 < close/EIGTSDMB < closed/U --- > closable/I > close/DRSMYTGBJP 22996d19606 < closely 23000d19609 < closer/S 23003,23004c19612,19613 < closing/SM < closure/IEMS --- > closing/M > closure/ESM 23008,23009c19617,19618 < clotheshorse/SM < clothesline/MS --- > clotheshorse/MS > clothesline/SM 23022d19630 < cloudscape/S 23028c19636,19637 < cloverleaf/MS --- > cloverleaf/SM > cloverleaves 23030c19639 < clownish/PY --- > clownish/YP 23043d19651 < clubroom 23089c19697 < coalmine/ZS --- > coalmine/S 23147,23148c19755 < cockshies < cocksucker/SM! --- > cocksucker/MS! 23154d19760 < cocoanut/MS 23157c19763 < cod/ZSMR --- > cod/SM 23162,23164c19768,19770 < code/CAGDSM < codebreaker < codec/MS --- > code's > code/CZGDRS > codec/SM 23166d19771 < codename/D 23168,23170c19773,19774 < codependent/MS < coder/CSM < codeword/S --- > codependent/SM > coder/CM 23178,23180c19782,19783 < codify/DRSNXZG < codling < codon/MS --- > codify/XDRSNZG > codon/SM 23187c19790 < coelenterate/SM --- > coelenterate/MS 23189c19792 < coerce/XDRSZGNV --- > coerce/DRSZGNV 23191d19793 < coercible 23201c19803 < coffeemaker/MS --- > coffeemaker/SM 23237c19839 < coif/MS --- > coif/MDGS 23241c19843,19844 < coil/UADGSM --- > coil's/A > coil/UADGS 23245c19848 < coincidence/SM --- > coincidence/MS 23250d19852 < cointreau 23260d19861 < coldish 23271c19872 < collaborate/GNVXDS --- > collaborate/DSXGNV 23275c19876 < collaborator/SM --- > collaborator/MS 23285d19885 < collated/U 23291,23292c19891,19893 < collect/ASGVDM < collectable/SM --- > collect's > collect/ASGVD > collectable/MS 23296,23297c19897,19898 < collection/ASM < collective/SMY --- > collection/AMS > collective/MYS 23299,23300c19900 < collectivist/MS < collectivity --- > collectivist/SM 23302c19902 < collectivize/GDS --- > collectivize/DSG 23306d19905 < collegial 23314,23316d19912 < collimation < collimator < collinear 23318,23319c19914 < collisional < collocate/MGNXDS --- > collocate/MGNDSX 23325c19920 < colloquialism/MS --- > colloquialism/SM 23327c19922 < colloquium/SM --- > colloquium/MS 23339,23340c19934 < colonialist/SM < colonic --- > colonialist/MS 23342,23343c19936 < colonization/CAM < colonizations --- > colonization/ACM 23347c19940 < colonoscope/SM --- > colonoscope/MS 23351c19944,19945 < color/AEGDSM --- > color's > color/AEGDS 23357c19951,19953 < colored/MSU --- > colored's > colored/U > coloreds 23362,23363c19958 < colorimetric < coloring/SM --- > coloring's 23367d19961 < colorizing/C 23384d19977 < comae 23393,23395c19986,19988 < combination/MS < combinatorial < combine/ADSGM --- > combination/SM > combine's > combine/ADSG 23400d19992 < combusted 23402c19994 < combustible/SM --- > combustible/MS 23414c20006 < comer/M --- > comer's 23417,23419c20009,20011 < cometary < comeuppance/MS < comfit/ESM --- > comeuppance/SM > comfit's > comfit/ES 23421c20013 < comfortable/UP --- > comfortable/P 23437c20029 < commandeer/DGS --- > commandeer/GDS 23439,23440c20031 < commanding/Y < commandment/SM --- > commandment/MS 23442c20033 < commemorate/XDSGNV --- > commemorate/XGNVDS 23445c20036 < commence/ALDSG --- > commence/ADSLG 23450c20041 < commendation/ASM --- > commendation/AMS 23452c20043 < commensurable/I --- > commensurable 23454c20045 < comment/GSMDRZ --- > comment/ZGSMD 23465c20056 < commiserate/DSXGNV --- > commiserate/GNVDSX 23468c20059 < commissariat/MS --- > commissariat/SM 23470c20061,20062 < commission/ACGSDM --- > commission's > commission/ACSGD 23481a20074 > committer/S 23483c20076,20078 < commode/EISM --- > commode's > commode/EIS > commodification 23487c20082,20083 < common/UPRYTM --- > common's > common/UPRYT 23492c20088 < commonplace/SM --- > commonplace/MS 23495d20090 < commonsensical 23501d20095 < communality 23506,23507c20100,20101 < communicant/SM < communicate/XDSGNV --- > communicant/MS > communicate/GNVDSX 23509,23510c20103,20104 < communicative/P < communicator/MS --- > communicative/U > communicator/SM 23516d20109 < communitarian 23520d20112 < commutativity 23526c20118 < compaction/S --- > compaction 23529c20121 < companion/SMB --- > companion/SBM 23537,23538c20129 < comparative/SMY < comparator/S --- > comparative/MYS 23541c20132 < compartment/MS --- > compartment/SM 23548c20139 < compatibility/ISM --- > compatibility/IM 23558c20149 < compensate/DSGNX --- > compensate/DSXGN 23561d20151 < compensator 23570,23572c20160,20161 < competition/MS < competitive/UP < competitively --- > competition/SM > competitive/PY 23575,23577c20164,20166 < compilable/U < compilation/ASM < compile/BDRSZG --- > compilation/AM > compilations > compile/DRSZG 23585d20173 < complaining/UY 23590,23591c20178 < complement/MDGS < complementarity --- > complement/SGMD 23593c20180 < complete/PYTGNBXDRS --- > complete/PYTGNXDRS 23597c20184 < complex/TMRSY --- > complex/MSY 23608c20195 < compliment/MDSG --- > compliment/MDGS 23610c20197 < comply/XDSNG --- > comply/NDSXG 23618,23620c20205,20206 < composite/MYNSX < composition/CSM < compositional --- > composite/MYGNXPDS > composition/CM 23635c20221,20222 < compress/CGVDSM --- > compress's > compress/CGDS 23637,23638c20224 < compressibility < compressible/I --- > compressible 23640,23641d20225 < compressional < compressions 23644,23645c20228,20229 < compromise/DSMG < comptroller/SM --- > compromise/MGDS > comptroller/MS 23647c20231 < compulsive/PY --- > compulsive/YP 23651,23654c20235,20236 < compunction/MS < computability < computably < computation/MS --- > compunction/SM > computation/SM 23656c20238 < compute/ADSBG --- > compute/ADSG 23661a20244 > compère/DSG 23665c20248 < concatenate/DSGNX --- > concatenate/XDSGN 23676d20258 < conceivability/I 23680c20262 < concentrate/MGNDSX --- > concentrate/DSMGNX 23682c20264 < concentrator/S --- > concentric 23689c20271 < conceptualize/GDS --- > conceptualize/DSG 23694c20276,20277 < concert/ESDGM --- > concert's > concert/ESDG 23697c20280 < concertina/SMDG --- > concertina/SGMD 23699c20282 < concertmaster/SM --- > concertmaster/MS 23708d20290 < conciliar 23711c20293 < conciliator/MS --- > conciliator/SM 23719c20301 < conclusive/IPY --- > conclusive/IYP 23723c20305 < concomitant/SMY --- > concomitant/MYS 23725c20307 < concordance/MS --- > concordance/SM 23729c20311 < concrete/DSMYGNPX --- > concrete/DSPMYGNX 23738c20320 < concurrence/MS --- > concurrence/SM 23742,23744c20324,20326 < concussion/MS < condemn/SBDRZG < condemnation/SM --- > concussion/SM > condemn/SDRZG > condemnation/MS 23747c20329 < condensate/MNSX --- > condensate/MNXS 23755c20337,20338 < condition/AGSDM --- > condition's > condition/AGSD 23757d20339 < conditionality 23764,23765c20346,20347 < condominium/SM < condone/DSGB --- > condominium/MS > condone/DSG 23768c20350 < conduct/SMV --- > conduct/MDGV 23773c20355 < conductivity/SM --- > conductivity/M 23782c20364 < confabulate/XGNDS --- > confabulate/XDSGN 23784c20366 < confection/SMRZ --- > confection/SZMR 23787d20368 < confectionist 23792c20373 < conference/SMG --- > conference/MGS 23800c20381 < confessional/MS --- > confessional/SM 23812,23814c20393,20394 < config/MS < configuration/AS < configure/ABGDS --- > configuration/S > configure/B 23816c20396 < confinement/SM --- > confinement/MS 23818c20398 < confirmation/AMS --- > confirmation/ASM 23821c20401 < confiscate/GNXDS --- > confiscate/DSGNX 23825c20405 < conflagration/SM --- > conflagration/MS 23829,23830d20408 < conflicting/Y < conflictual 23833c20411 < confocal --- > conform/ZB 23835d20412 < conformal 23838d20414 < conformational 23842d20417 < confounded/Y 23846c20421,20422 < confuse/BRZ --- > confrère/SM > confuse/RZ 23858c20434 < conglomerate/XMGNDS --- > conglomerate/DSXMGN 23861c20437 < congratulate/DSXGN --- > congratulate/XGNDS 23864,23865c20440,20441 < congregant/SM < congregate/XDSGN --- > congregant/MS > congregate/GNDSX 23878,23879c20454 < congruence/SM < congruency --- > congruence/M 23881d20455 < congruential 23891d20464 < conjugacy 23896,23897c20469,20470 < conjunctiva/MS < conjunctive/MS --- > conjunctiva/SM > conjunctive/SM 23899c20472 < conjuration/SM --- > conjuration/MS 23903d20475 < conman 23907,23912c20479,20480 < connectedness < connecter/MS < connectible < connection/ESM < connectionless < connective/SM --- > connection/EMS > connective/MS 23917c20485 < conniption/SM --- > conniption/MS 23921,23922c20489 < connoisseur/MS < connoisseurship --- > connoisseur/SM 23937,23938c20504 < conscionable/U < conscious/UPY --- > conscious/UYP 23946a20513 > consensual 23949c20516 < consequence/MS --- > consequence/SM 23953c20520 < conservation/MS --- > conservation/M 23957c20524 < conservative/PMYS --- > conservative/MYS 23964c20531 < considerate/IYNP --- > considerate/IPYN 23966c20533 < consideration/IAM --- > consideration/AIM 23971c20538 < consignment/SM --- > consignment/MS 23978c20545 < consolation/SM --- > consolation/MS 23980,23981c20547 < consoled/U < consolidate/GNXDS --- > consolidate/XDSGN 23984c20550 < consolidator/SM --- > consolidator/MS 23986a20553 > consommé/M 23989d20555 < consonantal 23996c20562 < conspirator/SM --- > conspirator/MS 24004d20569 < consternating 24006c20571 < constipate/DSGN --- > constipate/GNDS 24009c20574 < constituent/MS --- > constituent/SM 24014d20578 < constitutionalists 24018,24020c20582,20584 < constraint/MS < constrict/SGVD < constriction/MS --- > constraint/SM > constrict/GVSD > constriction/SM 24023,24025c20587,20589 < construct/CADVGSM < constructable < construction/CASM --- > construct's > construct/CADVGS > construction/CAMS 24030,24032c20594 < constructivism < constructivist < constructor/SM --- > constructor/MS 24038c20600 < consult/AGD --- > consult/GSD 24041c20603 < consultation/SM --- > consultation/MS 24043,24044c20605 < consults < consumable/MS --- > consumable/SM 24049,24050c20610,20611 < consumerist/SM < consummate/YGNDSX --- > consumerist/MS > consummate/YGNXDS 24052c20613 < consumption/SM --- > consumption/M 24061d20621 < containable/U 24064c20624 < containerize/GDS --- > containerize/DSG 24070c20630 < contaminator/MS --- > contaminator/SM 24073c20633 < contemplate/XGNVDS --- > contemplate/DSGNV 24087c20647 < contention/MS --- > contention/SM 24106d20665 < continuable 24108,24109c20667,20668 < continuance/ESM < continuation/ESM --- > continuance/EMS > continuation/EMS 24117d20675 < contra/S 24118a20677 > contrabassoon/S 24126c20685 < contradict/DGS --- > contradict/SDG 24128d20686 < contradictorily 24130c20688 < contradistinction/SM --- > contradistinction/MS 24133c20691 < contraindicate/GNDSX --- > contraindicate/GNXDS 24137a20696,20697 > contrarian/SM > contrarianism 24142,24145c20702,20703 < contrary/SMP < contrast/MDGVS < contrasting/Y < contrasty --- > contrary/PSM > contrast/MDGS 24149c20707 < contribute/GNDX --- > contribute/XGND 24151c20709 < contributor/SM --- > contributor/MS 24154c20712 < contrivance/SM --- > contrivance/MS 24157c20715,20716 < control/CSM --- > control's > control/CS 24162c20721 < controversial/UY --- > controversial/Y 24164c20723 < controvert/DGS --- > controvert/DSG 24173,24174c20732,20733 < conurbation/SM < convalesce/GDS --- > conurbation/MS > convalesce/DSG 24177d20735 < convect/GVSD 24179a20738 > convective 24184a20744 > convenor/MS 24186,24187c20746,20747 < conventicle/SM < convention/MS --- > conventicle/MS > convention/SM 24189,24190d20748 < conventionalism < conventionalist 24194c20752 < convergence/SM --- > convergence/MS 24200d20757 < conversazione 24202c20759,20760 < convert/AGSDM --- > convert's > convert/AGSD 24210c20768 < convey/SBDRZG --- > convey/SBDG 24212d20769 < conveyer/M 24215c20772 < conviction/SM --- > conviction/MS 24224d20780 < convolve/D 24231c20787,20788 < cook/ADGSM --- > cook's > cook/ADGS 24237c20794 < cookie/SM --- > cookie/M 24254c20811 < cooperative/PSMY --- > cooperative/PMYS 24256,24257c20813,20814 < cooperator/MS < coordinate/MYGNDS --- > cooperator/SM > coordinate/DSMYGN 24260c20817 < coordinator/SM --- > coordinator/MS 24267c20824 < copier/M --- > copier/SM 24272d20828 < coplanar 24275c20831 < copperhead/MS --- > copperhead/SM 24278d20833 < coppice/DSMG 24281,24283d20835 < coprocessor/S < coprolite < coprophagous 24287c20839 < copulate/XGNVDS --- > copulate/GNVDS 24290,24291c20842,20843 < copulatory < copy/DRSMZGB --- > copy's > copy/ADSG 24297,24299c20849,20851 < copyleft/S < copyright/SGMDB < copywriter/SM --- > copyleft > copyright/GSMD > copywriter/MS 24306d20857 < coralline 24322c20873 < corespondent/SM --- > corespondent/MS 24325c20876,20877 < cork/UDGSM --- > cork's > cork/UDGS 24342d20893 < cornflake/S 24345c20896 < cornflower/MS --- > cornflower/SM 24366,24367c20917 < corporate/SN < corporately --- > corporate/XYN 24369d20918 < corporations 24371d20919 < corporatist 24388d20935 < correctable/U 24390c20937 < correction/MS --- > correction/SM 24392c20939 < corrective/MS --- > corrective/SM 24394,24395c20941,20942 < corrector/S < correlate/DSXMGNV --- > corrector > correlate/XDSMGNV 24398c20945 < correlative/SM --- > correlative/MS 24400c20947 < correspondence/MS --- > correspondence/SM 24405d20951 < corrigenda 24408c20954 < corroborate/GNVXDS --- > corroborate/GNVDSX 24419d20964 < corrupted/U 24423c20968 < corruption/SM --- > corruption/MS 24432,24433d20976 < corticosteroid/S < cortisol 24434a20978 > cortège/SM 24445d20988 < cosiness/M 24448c20991 < cosmetician/SM --- > cosmetician/MS 24452c20995 < cosmical/Y --- > cosmically 24455,24456c20998,20999 < cosmological/Y < cosmologist/MS --- > cosmological > cosmologist/SM 24459c21002 < cosmopolitan/SM --- > cosmopolitan/MS 24462,24463c21005,21006 < cosponsor/SGMD < cossacks --- > cosplay > cosponsor/GSMD 24467c21010 < cost/MYGSJ --- > cost/MDYGSJ 24471d21013 < costless 24490,24491c21032,21033 < cottonseed/SM < cottontail/SM --- > cottonseed/MS > cottontail/MS 24505a21048 > coulée/SM 24515,24516c21058 < count/ERBZGDMS < countability/E --- > count/EASMDG 24518c21060 < countably/U --- > countably 24521,24523c21063,21065 < countenance/EGDSM < counter/EM < counteract/GVSD --- > countenance/EMGDS > counter/EMS > counteract/SGVD 24526,24527c21068,21069 < counterattack/MDGS < counterbalance/DSMG --- > counterattack/GMDS > counterbalance/MGDS 24529c21071 < counterclaim/SGMD --- > counterclaim/GSMD 24534a21077 > counterfactual 24542c21085 < countermand/MDGS --- > countermand/GMDS 24545c21088 < counteroffensive/MS --- > counteroffensive/SM 24547,24548c21090,21092 < counterpane/MS < counterpart/MS --- > counterpane/SM > counterpart/SM > counterpetition 24552c21096 < counterrevolution/MS --- > counterrevolution/SM 24554c21098 < countersign/GMDS --- > countersign/GSMD 24556c21100 < countersink/GMS --- > countersink/GSM 24558d21101 < counterstrike 24561c21104 < countervail/GDS --- > countervail/GSD 24575c21118,21119 < coup/ASM --- > coup's > coup/AS 24577,24578c21121,21122 < couple/CUDSGM < coupler/S --- > couple's > couple/UCGSD 24605c21149 < cousin/SMY --- > cousin/SM 24608,24609d21151 < covalent/Y < covariance/S 24613,24614c21155,21157 < cover/AEUGDSM < coverage/MS --- > cover's > cover/AEUGDS > coverage/M 24616c21159,21160 < covering/MS --- > covering's > coverings 24618d21161 < coversheet 24639c21182 < cowl/MDGSJ --- > cowl/MGSJ 24677,24678c21220 < crack/SMDRYZGBJ < crackable/U --- > crack/SMDRYZGJ 24685d21226 < crackly/TR 24713c21254 < crank/SMDRTG --- > crank/SMDG 24724c21265 < crappie/RSMT --- > crappie/M 24726c21267 < crappy --- > crappy/RSPT 24728,24730c21269,21270 < crapshooter/SM < crash/MDRSZG < crashing/Y --- > crapshooter/MS > crash/MDSG 24744c21284 < crawlspace/MS --- > crawlspace/SM 24765,24769c21305,21306 < creased/U < creatable < create/KADSGNV < created/U < creation/ASMK --- > create/AKVNGSDX > creation/KAM 24780c21317 < credential/GSMD --- > credential/SGMD 24786d21322 < creditability 24788d21323 < credited/U 24807c21342 < crematorium/SM --- > crematorium/MS 24810c21345 < crenelate/GNXDS --- > crenelate/XGNDS 24849d21383 < criminalization/C 24851d21384 < criminological 24863c21396 < crippleware/S --- > crippleware 24872c21405 < crisscross/MDSG --- > crisscross/GMDS 24907c21440 < croquet/MDG --- > croquet/M 24910c21443,21444 < cross/AUGTSDM --- > cross's > cross/AUGTSD 24918,24920c21452,21454 < crossbreed/SMG < crosscheck/SGMD < crosscurrent/SM --- > crossbreed/SGM > crosscheck/SMDG > crosscurrent/MS 24925c21459 < crosshatch/DSG --- > crosshatch/GDS 24934d21467 < crosstalk 24937d21469 < crossways 24943,24944c21475 < crotchety/P < crotchless --- > crotchety 24954,24955c21485 < crowdfunded < crowdfunding --- > crowdfund/SDG 24957c21487 < crowfoot/M --- > crowfoot/SM 24960a21491 > croûton/MS 24962d21492 < cruciate 24964d21493 < crucifiable 24966c21495 < crucifixion/MS --- > crucifixion/SM 24974a21504 > crudités/M 24979,24980c21509,21510 < cruft/SDG < crufty/S --- > cruft/SD > crufty 24993c21523 < crunch/ZGMDRS --- > crunch/GMDRS 25003c21533 < crust/ISDGM --- > crust/SMDG 25015,25017c21545 < cryonic < cryonics < cryostat --- > cryonic/S 25019,25022c21547 < crypt/CSM < cryptanalysis < cryptanalyst < cryptanalytic --- > crypt/SM 25026,25028c21551 < cryptographer/MS < cryptographic < cryptographically --- > cryptographer/SM 25031d21553 < cryptology 25037d21558 < crystallographer/S 25039a21561 > crèche/MS 25044c21566 < cub/ZGSJMDR --- > cub/ZGSMDR 25049c21571 < cubical/Y --- > cubical 25051d21572 < cubing/GD 25062c21583 < cuddly/TRP --- > cuddly/TR 25066d21586 < cufflink/SM 25072c21592 < culminate/DSXGN --- > culminate/XDSGN 25083,25084c21603,21604 < cultivar/MS < cultivate/DSBXGN --- > cultivar/SM > cultivate/BDSGN 25093,25094c21613,21614 < cumber/ISDG < cumbersome/PY --- > cumber/SDG > cumbersome/P 25100d21619 < cumquat/MS 25115d21633 < cupidinously 25131c21649 < curatorships --- > curaçao 25138c21656,21657 < cure/KZGBDRSM --- > cure's > cure/KZGBDRS 25145d21663 < curial 25149c21667 < curious/RYTP --- > curious/YP 25152c21670,21671 < curl/UDGSM --- > curl's > curl/UDGS 25159d21677 < curlycue/MS 25163,25164c21681,21682 < current/FAYSM < curricle --- > current's > current/FSY 25170,25172c21688,21692 < curse/DSMGV < cursed/TRY < cursive/EAYM --- > curse's > curse/ADSGV > cursed/Y > cursive's > cursive/EAY 25179c21699 < curtailment/MS --- > curtailment/SM 25182d21701 < curtsey/MDGS 25186d21704 < curvacious 25189d21706 < curvilinear 25196c21713,21714 < cuss/FEGSDM --- > cuss's > cuss/EFGSD 25207,25209c21725,21727 < customhouse/MS < customization/MS < customize/DSGB --- > customhouse/SM > customization/M > customize/DSG 25216d21733 < cutesie 25221d21737 < cutlas/M 25231d21746 < cuttle 25239d21753 < cyanogen 25240a21755 > cyberbully/S 25241a21757 > cybercafé/S 25244a21761 > cybersex 25249d21765 < cycleway/S 25253d21768 < cycloid 25257c21772 < cyclopaedia/SM --- > cyclopaedia/MS 25262d21776 < cyder/SM 25265c21779 < cylindrical/Y --- > cylindrical 25272c21786 < cypher/MDSG --- > cypher/M 25275d21788 < cysteine/M 25278,25281c21791,21792 < cytochrome < cytokine/MS < cytological < cytologist/MS --- > cytokine/SM > cytologist/SM 25286d21796 < cytotoxic 25291,25292c21801,21802 < d'Arezzo < d'Estaing --- > d'Arezzo/M > d'Estaing/M 25310c21820 < dado/M --- > dado/SM 25341d21850 < dalesman 25351d21859 < damaging/Y 25360,25361c21868 < damned/TR < damning/Y --- > damned/T 25371d21877 < danceable 25382c21888 < dangerous/PY --- > dangerous/Y 25401,25402d21906 < darkish < darkly/TR 25420d21923 < databank/SM 25422,25423c21925,21927 < datasheet/MS < date/DRSBMZGV --- > datasheet/SM > datatype > date/DRSMZGV 25430c21934 < datum/MS --- > datum/M 25453d21956 < daysack 25468c21971 < dead/PXTMNRY --- > dead/XTMNRY 25480d21982 < deadweight/MS 25488c21990 < dealership/MS --- > dealership/SM 25506d22007 < deathly/RT 25522c22023 < debilitate/GNDS --- > debilitate/DSGN 25527d22027 < debonaire 25529a22030 > debridement 25535d22035 < debutant 25542c22042 < decaffeinate/GDS --- > decaffeinate/DSG 25546c22046 < decapitate/XDSGN --- > decapitate/XGNDS 25554c22054 < deceitful/PY --- > deceitful/YP 25559c22059 < decelerate/XDSGN --- > decelerate/GNDS 25561c22061 < decelerator/MS --- > decelerator/SM 25564c22064 < decent/ITRY --- > decent/IY 25568d22067 < decertify/DSGNX 25570d22068 < decidability/U 25575d22072 < deciles 25579d22075 < decimalize 25583,25584c22079 < decipherable/IU < decipherment/S --- > decipherable/UI 25593c22088 < declamation/SM --- > declamation/MS 25595c22090 < declaration/SM --- > declaration/MS 25602c22097 < declination/MS --- > declination/M 25606,25607c22101 < deco < decolletage/MS --- > decolletage/SM 25609d22102 < decompose/B 25611d22103 < deconstruct/V 25613,25614d22104 < deconvolution < deconvolve 25617d22106 < decorated/U 25631,25632c22120,22121 < decrement/GDS < decremental --- > decremented > decrements 25637d22125 < decrypt/GD 25639d22126 < decustomised 25645a22133 > deduct/GVD 25654d22141 < deepish 25656c22143 < deer/SM --- > deer/M 25659d22145 < deerstalking 25663,25664c22149 < defaecate < defalcate/XDSGN --- > defalcate/DSXGN 25680c22165 < defective/MYSP --- > defective/MPYS 25685c22170 < defenestrate/NDX --- > defenestration/S 25687c22172 < defenseless/PY --- > defenseless/YP 25689d22173 < defensibility 25701a22186 > defibrillation 25706d22190 < defiled/U 25709,25710c22193 < definably/I < define/AGDRS --- > define/AGDS 25715,25718c22198,22201 < definition/ASM < definitional < definitive/PY < deflate/GNBDS --- > definition/AM > definitions > definitive/Y > deflate/GNDS 25729d22211 < deform/B 25741,25743c22223,22224 < degauss/GD < degeneracy/SM < degenerate/MV --- > degeneracy/M > degenerate/MVX 25745d22225 < degrease 25750d22229 < deictic 25765,25766c22244,22245 < delete/BXGNDRS < deleterious/Y --- > delete/XGNDS > deleterious 25771c22250 < deliberate/YVPX --- > deliberate/XYVP 25777c22256 < delicious/YP --- > delicious/PY 25781,25782c22260,22261 < deliminator/S < delineate/GNDSX --- > deliminator > delineate/GNXDS 25786c22265 < deliquesce/GDS --- > deliquesce/DSG 25788c22267 < delirious/PY --- > delirious/YP 25792c22271,22272 < deliverable/US --- > deliverable/S > deliverables/U 25799d22278 < deltoids 25808d22286 < demagog/MS 25816c22294 < demarcate/XDSGN --- > demarcate/DSGNX 25834c22312 < democratically/U --- > democratically 25836c22314 < democratize/DSG --- > democratize/GDS 25838,25840c22316,22317 < demodulator < demographer/MS < demographic/MS --- > demographer/SM > demographic/SM 25844c22321 < demolish/DRSG --- > demolish/DSG 25857c22334 < demonstrate/GNVXDS --- > demonstrate/XGNVDS 25859c22336 < demonstrative/SMYP --- > demonstrative/MYSP 25861c22338 < demonstrator/SM --- > demonstrator/MS 25864c22341 < demount/BG --- > demount 25874a22352 > denaturation 25877,25878d22354 < dendrochronological < dendrochronology 25879a22356 > deniability 25883c22360 < denigrate/DSXGN --- > denigrate/DSGN 25885a22363 > denitrification 25888d22365 < denotational 25890,25891c22367,22368 < denouement/SM < denounce/DSGL --- > denouement/MS > denounce/LDSG 25908c22385 < denunciation/MS --- > denunciation/SM 25923d22399 < dependance/M 25938c22414 < deportation/SM --- > deportation/MS 25942d22417 < depositary 25947c22422 < deprecate/GNXDS --- > deprecate/GNDS 25953,25954c22428,22429 < depredation/MS < depressant/MS --- > depredation/SM > depressant/SM 25956,25957c22431,22432 < depression/MS < depressive/MS --- > depression/SM > depressive/SM 25961d22435 < deprogram/S 25965c22439 < deputation/SM --- > deputation/MS 25969,25971c22443,22444 < dequeue/DSG < derailleur/MS < derailment/MS --- > derailleur/SM > derailment/SM 25975,25976c22448,22449 < dereliction/MS < deride/D --- > dereliction/M > deride/GDS 25982c22455 < derivative/MYS --- > derivative/MS 25987c22460 < dermatologist/MS --- > dermatologist/SM 25996a22470 > derrière/SM 25999c22473 < desalinate/DSGN --- > desalinate/GNDS 26005,26007c22479,22480 < descendant/SM < descendent/SM < descender/S --- > descendant/MS > descender 26009c22482,22483 < describer/MS --- > describe/BZGDR > describer/M 26011c22485 < descriptive/YP --- > descriptive/PY 26013d22486 < descriptivism 26032,26033c22505 < design/MRZB < designate/XDSGN --- > designate/DSGNX 26036,26038d22507 < designational < designator/S < designed/Y 26040d22508 < desirabilia 26051c22519 < desolate/DSPYGN --- > desolate/PDSYGN 26054d22521 < desorption 26059c22526 < desperate/PYN --- > desperate/YNP 26067d22533 < despond 26077,26079c22543 < dessicated < dessication < destination/MS --- > destination/SM 26084c22548 < destroy/SBZGDR --- > destroy/SZGDR 26094c22558 < desultory/P --- > desultory 26096c22560 < detachment/SM --- > detachment/MS 26101d22564 < detectability/U 26103d22565 < detectably/U 26105,26106c22567 < detectible < detection/SM --- > detection/M 26117d22577 < determinacy/I 26119c22579 < determinate/YV --- > determinate 26125d22584 < determinist 26127d22585 < deterministically 26132d22589 < detest/RZB 26135c22592 < dethrone/GL --- > dethrone/DSLG 26138d22594 < detonated/U 26150d22605 < deuteron 26177c22632 < devoted/PY --- > devoted/Y 26181c22636 < devour/SDRZG --- > devour/SDG 26184c22639 < dew/SM --- > dew/M 26195c22650 < dextrous/Y --- > dharma 26202,26203d22656 < diabolism < diachronic 26205c22658 < diacritical/S --- > diacritical 26209,26211c22662 < diagnosable/U < diagnose/DSBG < diagnosed/U --- > diagnose/DSG 26215c22666 < diagnostician/MS --- > diagnostician/SM 26218d22668 < diagonalize/DSG 26228c22678 < dialectical/Y --- > dialectical 26230d22679 < dialer 26232,26233c22681,22683 < dialog/SMGD < dialogue/SMRGD --- > dialog/SDG > dialogue/DRSMG > dialyses 26237a22688 > diamanté 26242c22693 < diamondback/SM --- > diamondback/MS 26263a22715 > dices/I 26265d22716 < dichloride 26274c22725 < dicky/RMT --- > dicky/SM 26298c22749 < dido/M --- > dido/MS 26303d22753 < dieing 26317c22767,22768 < difference/MGS --- > difference/IM > differences 26319,26322c22770,22771 < differentiability < differentiable < differential/MYS < differentiate/DSGNX --- > differential/SM > differentiate/DSGN 26325d22773 < differentiators 26332c22780 < diffuse/DRSYZGNVP --- > diffuse/DSYGNVP 26335,26336d22782 < diffusional < diffusivity 26348a22795 > digicam/S 26353c22800 < digitize/ZGDRS --- > digitize/GDS 26361,26362c22808 < digression/SM < dihedral --- > digression/MS 26382,26383c22828 < dillydally/GDS < diluent --- > dillydally/DSG 26387c22832 < dim/ZPSRY --- > dim/PSRY 26389,26391c22834,22835 < dimension/SGMD < dimensional/Y < dimensionality --- > dimension/SM > dimensional 26393c22837 < diminish/GBDS --- > diminish/GDS 26395a22840 > diminuendoes 26404,26405d22848 < dimorphic < dimorphism 26407c22850 < dimply/RT --- > dimply 26422c22865 < dingo/SM --- > dingo/M 26426c22869 < dink/RT --- > dink/R 26434c22877 < dint/MS --- > dint/M 26438d22880 < diopter/S 26445d22886 < diplexers 26453c22894,22895 < diplomatist/SM --- > diplomatist/MS > diplopia 26466c22908 < dire/YTPR --- > dire/YTR 26468d22909 < directed/U 26470,26472c22911,22912 < direction/ISM < directional/Y < directionality --- > direction/IM > directional 26473a22914 > directions 26495,26496c22936 < disaggregation < disambiguate/DGN --- > disambiguate/N 26499d22938 < disassemble/R 26505,26506c22944,22945 < disburse/LDSG < disbursement/SM --- > disburse/DSGL > disbursement/MS 26516c22955 < disciplinarian/MS --- > disciplinarian/SM 26520c22959 < disclose/DSG --- > disclose/DSBG 26527c22966 < discomfit/GD --- > discomfit/DG 26529c22968 < discommode/GD --- > discommode/DG 26533c22972 < disconsolate/YN --- > disconsolate/Y 26536c22975 < discotheque/MS --- > discotheque/SM 26538c22977 < discouragement/MS --- > discouragement/SM 26541d22979 < discoverable 26549c22987 < discrete/YNP --- > discrete/PYN 26553,26555c22991,22992 < discriminant/S < discriminate/DSGNV < discriminated/U --- > discriminant > discriminate/GNDS 26562,26565c22999,23000 < discuss/B < discussant/MS < discussed/A < discussion/MS --- > discussant/SM > discussion/SM 26568c23003 < disembowel/GLSD --- > disembowel/SDLG 26570c23005 < disfigurement/MS --- > disfigurement/SM 26573c23008 < disgruntle/LDSG --- > disgruntle/LGDS 26575a23011 > disguised/U 26584c23020 < dishevel/DGSL --- > dishevel/DGLS 26590c23026 < dishwasher/SM --- > dishwasher/MS 26593c23029 < disillusion/DGL --- > disillusion/GLD 26595c23031 < disinfectant/SM --- > disinfectant/MS 26596a23033 > disinterested/PY 26598,26600c23035 < disinvest < disjoint/P < disjointed/PY --- > disjointed/YP 26602d23036 < disjunction/S 26607d23040 < dislike/DSMG 26609c23042 < dismal/RYT --- > dismal/Y 26615d23047 < dismissible 26619c23051 < disparage/LDSG --- > disparage/DSGL 26632,26633c23064 < dispersant < disperse/XZGNVDRS --- > disperse/GNDS 26635d23065 < dispersive/Y 26637,26639d23066 < dispirited/Y < displace/R < displayed/AU 26642a23070 > disposed/I 26645a23074,23075 > disproportional > disprove/B 26649c23079 < disputation/MS --- > disputation/SM 26655c23085 < disquisition/SM --- > disquisition/MS 26662,26663d23091 < disruptor < diss/DSG 26664a23093 > dissed 26668c23097 < disseminate/DSGN --- > disseminate/GNDS 26670c23099 < dissension/MS --- > dissension/SM 26674c23103 < dissertation/MS --- > dissertation/SM 26679,26680c23108,23109 < dissipate/GNVDS < dissipated/U --- > dissing > dissipate/GNDS 26682c23111 < dissociate/GNVDS --- > dissociate/GNDS 26684d23112 < dissociative/Y 26700,26701c23128,23129 < distention/MS < distil/S --- > distemper/M > distention/SM 26708c23136 < distinctive/PY --- > distinctive/YP 26713d23140 < distinguishably/I 26716d23142 < distorted/U 26718,26719c23144,23145 < distracted/YP < distracting/Y --- > distract/DG > distracted/Y 26726c23152 < distribute/AGNVDSB --- > distribute/AGNVDS 26732,26733c23158,23159 < distributivity < distributor/SM --- > distributor's > distributor/AS 26735c23161,23162 < district/ASM --- > district's > district/AS 26741d23167 < disulphide 26744d23169 < disyllable 26749c23174 < ditsy/RT --- > ditsy 26750a23176 > dittoes 26753,26754c23179 < ditzy/RT < diuresis --- > ditzy/R 26769c23194 < diversify/NGDS --- > diversify/GNDS 26776c23201 < divestiture/SM --- > divestiture/MS 26796c23221,23222 < divorcement/SM --- > divorcement/MS > divorcée/MS 26805d23230 < djellabah/M 26807,26808c23232,23233 < djinn/M < do/SJRHZG --- > djinn > do/SJMRHZG 26814a23240 > dobro 26823c23249 < dockworker/SM --- > dockworker/MS 26829c23255 < doctrinal/Y --- > doctrinal 26839,26841d23264 < dodecahedra < dodecahedral < dodecahedron 26872a23296 > doglike 26877a23302 > dognapper 26884d23308 < dogy/SM 26889c23313,23314 < dole/FGDSM --- > dole's > dole/FGDS 26891,26892d23315 < dolefuller < dolefullest 26894d23316 < dolerite 26912c23334 < domesticate/GNDS --- > domesticate/DSGN 26935c23357 < done/AU --- > done/FAU 26942c23364 < donnybrook/SM --- > donnybrook/MS 26944c23366 < donuts/S --- > donuts 26957c23379,23380 < door/ISM --- > door's > door/IS 26959d23381 < doorhandles 26967d23388 < doornail 26980a23402,23403 > dopier > dopiest 26984c23407 < dopy/RTP --- > doppelgänger/S 27000c23423 < doss/DRZG --- > doss/DRSZG 27006a23430 > dotcom/SM 27012,27013c23436,23438 < dotty/RPT < double/ADSGM --- > dotty/RT > double's > double/ADSG 27015d23439 < doubler 27018,27019d23441 < doubletalk < doublethink 27024c23446 < doubtful/YP --- > doubtful/PY 27031d23452 < doughs 27053a23475 > downfield 27055c23477 < downhearted/YP --- > downhearted/PY 27058,27060c23480 < downland/S < download/MDSG < downloadable --- > download/MDBSG 27062d23481 < downpipes 27084c23503 < downward/YS --- > downward/S 27097a23517 > dpi 27105,27106c23525,23526 < draft/ASDGM < draftboard --- > draft's > draft/ASDG 27129c23549 < drainboard/MS --- > drainboard/SM 27139c23559 < dramatization/MS --- > dramatization/SM 27149,27152c23569,23570 < draughtboards < draughtswoman < draughtswomen < draw/MRZGSBJ --- > draughtboard/S > draw/MRZGSJ 27155d23572 < drawcord 27159c23576 < drawn/AI --- > drawn/A 27166d23582 < dreadnaught/SM 27177c23593 < dreamworld/MS --- > dreamworld/SM 27206c23622 < drillmaster/MS --- > drillmaster/SM 27215c23631 < drive/RSMZGBJ --- > drive/RSMZGJ 27219a23636 > driveshaft/SM 27222c23639 < drizzly/TR --- > drizzly 27234d23650 < drooping/Y 27248,27250c23664 < drouth/M < drouths < drove/RSMZG --- > drove/RSMZ 27266c23680 < druggie/M --- > druggie/SM 27269c23683 < druggy/SM --- > druggy 27289d23702 < dryish 27292d23704 < drystone 27294c23706 < dual/YS --- > dual 27296,27298c23708 < dualist < dualistic < duality/SM --- > duality/M 27311c23721 < duck/JMDGS --- > duck/MDGS 27316d23725 < duckpond 27319c23728,23729 < duct/CIFDGM --- > duct's/K > duct/CKIFS 27321a23732 > ducting 27323d23733 < ducts/IKC 27327c23737,23738 < due/ISM --- > due's > due/IS 27334d23744 < duffel 27347d23756 < dulness/M 27357d23765 < dumfound/GDS 27361a23770 > dumpsite/S 27366c23775 < dunderhead/SM --- > dunderhead/MS 27383d23791 < duologue 27389,27390c23797,23798 < duplicability < duplicate/AGNDSM --- > duplicate's > duplicate/AGNDS 27392d23799 < duplications 27395c23802 < duplicity/SM --- > duplicity/M 27397c23804 < durable/S --- > durable 27400c23807 < duration/MS --- > duration/M 27412d23818 < dustcover 27414d23819 < dustily 27429c23834 < dwarf/STGMDR --- > dwarf/SGMD 27438d23842 < dyad 27445c23849 < dyestuff/SM --- > dyestuff/M 27457d23860 < dyne 27459c23862 < dysfunction/SM --- > dysfunction/MS 27464d23866 < dyslexically 27466a23869 > dysphagia 27468c23871 < dystrophy --- > dystonia 27469a23873,23880 > débridement > débutante/SM > décolletage/SM > décolleté > démodé > dérailleur/MS > déshabillé/M > détente/M 27475a23887 > eMusic/M 27483a23896 > earbud/SM 27505c23918,23919 < earth/UDYGM --- > earth's > earth/UDYG 27527c23941 < east/MG --- > east/M 27544c23958 < eavesdropper/MS --- > eavesdropper/SM 27554a23969 > ecclesial 27559c23974,23975 < echo/ADGM --- > echo's > echo/ADG 27579c23995 < econometric/S --- > econometric 27584d23999 < economization 27588a24004,24005 > ecotourism/M > ecotourist/MS 27593,27594d24009 < ectopic < ectoplasm 27600a24016 > edamame 27605d24020 < edgeless 27622c24037,24038 < edit/ADGSM --- > edit's > edit/ADGS 27628,27629c24044,24045 < editorialize/GDS < editorship/MS --- > editorialize/DSG > editorship/M 27642d24057 < eduction 27646c24061 < eerie --- > eerie/RT 27649d24063 < eery/RTP 27654c24068 < effective/IYP --- > effective/IPY 27656d24069 < effector/S 27658c24071 < effectuate/GDS --- > effectuate/DSG 27670c24083 < efficiency/ISM --- > efficiency/IM 27680c24093 < effortless/PY --- > effortless/YP 27699d24111 < egis/M 27722,27724d24133 < eidetic < eigenfunction/S < eigenstate/S 27730d24138 < eightfold 27735d24142 < eightpence 27744d24150 < ejecta 27748c24154 < elaborate/PYGNDSX --- > elaborate/YGNDSPX 27757c24163 < elasticity/SM --- > elasticity/M 27759d24164 < elastodynamics 27767c24172 < elderflower --- > eldercare/M 27769,27772c24174,24177 < elect/ASDGVM < electability < electable/U < elected/U --- > eldritch > elect's > elect/ASDGV > electable 27774c24179 < electioneer/DSG --- > electioneer/DGS 27785,27786c24190,24191 < electrify/NZGDRS < electrocardiogram/SM --- > electrify/ZGNDRS > electrocardiogram/MS 27790,27791c24195 < electrochemical/Y < electrocute/GNDSX --- > electrocute/DSXGN 27794c24198 < electrodynamic/S --- > electrodynamics 27801d24204 < electroluminescent 27805,27806d24207 < electrolytically < electrolyze/GD 27811,27812d24211 < electromechanical < electromechanics 27815d24213 < electronegative 27816a24215 > electronica/M 27819d24217 < electrophoresis 27836d24233 < elementarily 27858,27859c24255 < eligibly/I < eliminate/DSXGN --- > eliminate/XDSGN 27888c24284 < elucidate/XDSGN --- > elucidate/DSGNX 27893,27894d24288 < eluted < elven 27897,27898c24291,24293 < elvish/S < em/SM --- > elvish > em's > em/S 27904c24299 < emancipate/GNDS --- > emancipate/DSGN 27906,27908c24301,24302 < emancipator/SM < emancipatory < emasculate/DSGN --- > emancipator/MS > emasculate/GNDS 27919c24313 < embarrass/LGDS --- > embarrass/GLDS 27926d24319 < embeddable 27928,27929c24321,24322 < embedding/S < embellish/LDSG --- > embedding > embellish/LGDS 27935c24328 < embitter/GDLS --- > embitter/GLDS 27943d24335 < embodiments 27947c24339 < embosom --- > embolization 27963c24355 < embryologist/SM --- > embryologist/MS 27969c24361 < emendation/SM --- > emendation/MS 27990d24381 < emissivity/S 27994a24386,24387 > emo/SM > emoji 28002,28003c24395 < emotionality < emotionalize/DSG --- > emotionalize/GDS 28008,28009d24399 < empathetical < empathic 28024,28025c24414,24416 < emplacement/MS < employ/ADGLSM --- > emplacement/SM > employ's > employ/ADGLS 28027d24417 < employe/RSMZB 28029c24419 < employer/M --- > employer/SM 28060c24450 < encapsulate/GNXDS --- > encapsulate/XGNDS 28066d24455 < encephalopathy 28076,28077c24465,24466 < encircle/LDSG < encirclement/SM --- > encircle/DSGL > encirclement/M 28089c24478 < encourage/DRSGL --- > encourage/DSLG 28092c24481 < encroach/GDSL --- > encroach/GLDS 28095c24484 < encrustation/MS --- > encrustation/SM 28097d24485 < encrypted/U 28101c24489 < encumbrance/SM --- > encumbrance/MS 28105d24492 < encyclopaedic 28124a24512 > endocarditis 28129,28131c24517,24520 < endomorphism/S < endoplasmic < endorphin/MS --- > endometrial > endometriosis > endometrium > endorphin/M 28133c24522 < endorsement/SM --- > endorsement/MS 28137a24527 > endothelial 28141d24530 < endpapers 28144d24532 < endungeoned 28149d24536 < endwise 28152c24539 < energetic/S --- > energetic 28163,28164c24550 < enforce/AGDS < enforceability --- > enforce/LZGDRS 28167,28169c24553,24555 < enforcement/MS < enforcer/MS < enfranchise/ELGDS --- > enforcement/M > enforcer/M > enfranchise/EGDSL 28171d24556 < enfranchiser 28173,28174c24558 < engaged/U < engagement/ESM --- > engagement/EMS 28177c24561 < engine/DSM --- > engine/SM 28182d24565 < engrained 28192d24574 < enhanceable 28194d24575 < enharmonic 28198d24578 < enjambement/SM 28202d24581 < enjoyability 28209c24588 < enlighten/LSGD --- > enlighten/SGLD 28211d24589 < enlightening/U 28226c24604 < enormous/YP --- > enormous/PY 28237d24614 < enrobed 28242c24619 < enshrine/GDSL --- > enshrine/GLDS 28256c24633 < entangle/EDSGL --- > entangle/EDSLG 28259d24635 < entangler 28262c24638 < entered/U --- > enteric 28264c24640 < enterprise/SMG --- > enterprise/MGS 28266c24642 < entertain/DRSZGL --- > entertain/ZGDRSL 28270d24645 < enthalpy/S 28273c24648 < enthrone/LGDS --- > enthrone/GDSL 28279c24654 < enthusiastically/U --- > enthusiastically 28291c24666 < entomologist/SM --- > entomologist/MS 28296,28297c24671 < entrain/DL < entrance/DSLMG --- > entrance/LDSMG 28311c24685 < entrepreneur/MS --- > entrepreneur/SM 28314d24687 < entropic 28319a24693 > entrée/MS 28338d24711 < environ/SL 28342c24715 < environmentalist/MS --- > environmentalist/SM 28352a24726,24727 > eosinophil/S > eosinophilic 28354d24728 < epaulette/MS 28359d24732 < ephemeris 28361d24733 < epically 28365,28366d24736 < epicycles < epicycloid 28370c24740 < epidemiologist/MS --- > epidemiologist/SM 28380d24749 < epigraphical 28385d24753 < epilog/MS 28387d24754 < epinephrin/M 28390,28391d24756 < epiphenomena < epiphenomenon 28394d24758 < episcopalian 28406,28407d24769 < epitaxial < epitaxy 28411d24772 < epithetic 28424c24785 < equality/ISM --- > equality/IM 28437d24797 < equiangular 28439,28441c24799 < equilateral/MS < equilibrating < equilibration --- > equilateral/SM 28448,28449c24806 < equipartition < equipment/MS --- > equipment/M 28458c24815 < equivalence/SM --- > equivalence/MS 28463c24820 < equivocate/XGNDS --- > equivocate/GNXDS 28465,28466c24822,24823 < equivocator/MS < er --- > equivocator/SM > er/C 28486d24842 < ergodic 28490d24845 < ergophobia 28498d24852 < erosional 28504d24857 < erotics/S 28524c24877,24878 < erythrocyte/MS --- > erythrocyte/SM > erythromycin 28530d24883 < escalop/GDS 28535c24888 < escapement/MS --- > escapement/SM 28542c24895 < escarpment/SM --- > escarpment/MS 28548d24900 < escorted/U 28552c24904 < escutcheon/MS --- > escutcheon/SM 28555c24907 < esophagus/M --- > esophagus/MS 28557d24908 < esoterica 28560c24911 < espadrille/SM --- > espadrille/MS 28576d24926 < essentialist 28578,28579c24928 < establish/EASDGL < established/U --- > establish/AESDGL 28585d24933 < esthete/SM 28587,28588d24934 < esthetically < esthetics/M 28595c24941 < estrangement/SM --- > estrangement/MS 28599d24944 < estuarine 28613d24957 < etherized 28616d24959 < ethicist 28628c24971 < ethnologist/MS --- > ethnologist/SM 28653d24995 < eukaryote 28665d25006 < euphonium/S 28680c25021 < evade/DRSZGB --- > evade/DRSZG 28682d25022 < evaluable 28684d25023 < evaluated/U 28686,28687d25024 < evaluational < evaluator/S 28709c25046 < event/SMG --- > event/SM 28719,28720c25056 < everlasting/SMY < everliving --- > everlasting/MYS 28725d25060 < everyman 28734d25068 < evidential 28747d25080 < evolute/NX 28749d25081 < evolutionarily 28751,28752c25083 < evolutionism < evolutionist/MS --- > evolutionist/SM 28760c25091 < exact/SPDRYTGB --- > exact/SBPDRYTG 28762,28763c25093,25094 < exacting/YP < exaction/MS --- > exacting/PY > exaction/SM 28767c25098 < exaggerate/DSGNX --- > exaggerate/XDSGN 28770c25101 < exaggerator/SM --- > exaggerator/MS 28774d25104 < examinable 28777,28778d25106 < examined/U < examinees 28799c25127 < exception/SMB --- > exception/BSM 28801a25130 > exceptionalism 28805c25134 < exchange/DRSMZG --- > exchange/DSMG 28812c25141 < excitation/SM --- > excitation/M 28818,28819c25147 < exciton < excl/S --- > excl 28821c25149 < exclamation/MS --- > exclamation/SM 28826c25154 < exclusive/MYPS --- > exclusive/PMYS 28829c25157 < excommunicate/GNXDS --- > excommunicate/GNDSX 28831c25159 < excoriate/DSXGN --- > excoriate/DSGNX 28842d25169 < excruciation 28847c25174 < excursionist/SM --- > excursionist/MS 28855,28856d25181 < execked < execking 28862c25187 < execution/MRZ --- > execution/ZMR 28875c25200 < exemplify/XGDSN --- > exemplify/GDSXN 28878c25203 < exercise/DRSBMZG --- > exercise/DRSMZG 28892c25217 < exhibition/ZMRS --- > exhibition/MS 28896c25221 < exhilarate/GNDS --- > exhilarate/DSGN 28899c25224 < exhortation/SM --- > exhortation/MS 28913,28914c25238 < existentialist/SM < existentialistic --- > existentialist/MS 28917d25240 < exocrine 28922a25246 > exoplanet/MS 28928,28929c25252 < exorcize/DSG < exoskeleton/MS --- > exoskeleton/SM 28932d25254 < exothermically 28938,28940c25260 < expand/BGSDR < expandability < expanded/U --- > expand/BGSD 28947c25267 < expansive/PY --- > expansive/YP 28952c25272 < expatriate/MGNDS --- > expatriate/DSMGN 28955c25275 < expectancy/SM --- > expectancy/M 28957,28960c25277,25279 < expectation/MS < expectational < expectorant/MS < expectorate/GNDS --- > expectation/SM > expectorant/SM > expectorate/DSGN 28971c25290 < expeditious/YP --- > expeditious/PY 28973d25291 < expeditor/SM 28979c25297 < expenditure/MS --- > expenditure/SM 28981c25299 < expensive/IPY --- > expensive/IYP 28983c25301 < experience/IDM --- > experience/IMD 28987c25305 < experiment/ZGSMDR --- > experiment/MDRSZG 28990d25307 < experimentalist/S 28995d25311 < expertize 29001d25316 < expiratory 29006c25321 < explainable/U --- > explainable 29012c25327 < explicate/XGNVDS --- > explicate/XGNDS 29016,29017c25331 < explode/ZGDRS < exploded/U --- > explode/GDS 29019c25333 < exploitation/MS --- > exploitation/M 29025c25339 < explore/BZGDRS --- > explore/ZGDRS 29029c25343 < explosive/SMYP --- > explosive/SPMY 29036d25349 < exportability 29052c25365 < expression/MS --- > expression/SM 29057c25370 < expressive/YP --- > expressive/PY 29059,29060c25372,25373 < expressway/MS < expropriate/XGNDS --- > expressway/SM > expropriate/GNXDS 29062c25375 < expropriator/MS --- > expropriator/SM 29065c25378 < expurgate/XDSGN --- > expurgate/DSGNX 29072c25385 < extemporaneous/YP --- > extemporaneous/PY 29078d25390 < extendability 29081,29082c25393 < extensibility < extensible/I --- > extensible 29084c25395 < extensional/Y --- > extensional 29087d25397 < extensors 29092c25402 < exterminate/GNDSX --- > exterminate/DSXGN 29094c25404 < exterminator/SM --- > exterminator/MS 29097c25407 < externalize/GDS --- > externalize/DSG 29100c25410 < extinguish/BZGDRS --- > extinguish/ZGBDRS 29106c25416,25417 < extoll/SGD --- > extolled > extolling 29108c25419 < extortion/ZMR --- > extortion/MRZ 29111c25422 < extortionist/SM --- > extortionist/MS 29114,29115c25425,25426 < extract/BMDGVS < extraction/MS --- > extract/MDGS > extraction/SM 29118c25429 < extradite/GNDSBX --- > extradite/GNBXDS 29120d25430 < extragalactic 29123d25432 < extralinguistic 29130c25439 < extrapolate/GNXDS --- > extrapolate/XGNDS 29133,29134c25442 < extrasolar < extraterrestrial/SM --- > extraterrestrial/MS 29137c25445 < extravagance/SM --- > extravagance/MS 29139c25447 < extravaganza/SM --- > extravaganza/MS 29141,29143d25448 < extravert/MS < extrema < extremal 29161d25465 < exudate/N 29167d25470 < exulting/Y 29170c25473 < exurbanite/MS --- > exurbanite/SM 29177a25481 > eyeing 29186d25489 < eyeshadow 29194,29195d25496 < eyrie/M < eyry/SM 29201c25502 < fabricate/DSXGN --- > fabricate/DSGNX 29203,29204c25504 < fabricator/MS < fabulists --- > fabricator/SM 29207c25507,25508 < face/ACSDGM --- > face's > face/ACSDG 29212d25512 < faceplate 29218c25518 < facilitate/GNVDS --- > facilitate/GNDS 29220c25520 < facilitator/SM --- > facilitator/MS 29232c25532,25533 < factor/SMDG --- > factor's > factor/ASDG 29234,29235c25535 < factorisable < factorization/S --- > factorization 29246d25545 < fadeout 29248,29249c25547 < faerie/M < faery/SM --- > faerie/SM 29256d25553 < fagoting/M 29267c25564 < fairground/SM --- > fairground/MS 29269,29270d25565 < fairings/S < fairish 29275d25569 < fairytale 29277c25571,25572 < faithful/UPYM --- > faithful's > faithful/UPY 29291c25586 < fall/MNRZGS --- > fall/MNGS 29300d25594 < fallopian 29308,29309c25602 < falsifiability < falsifiable/U --- > falsifiable 29312c25605 < falsify/DRSZGXN --- > falsify/DRSZGNX 29316c25609,25610 < fame/DM --- > fame's > fame/D 29319d25612 < familiarities 29330a25624 > fanboy/SM 29333c25627 < fanciful/PY --- > fanciful/YP 29339a25634 > fandom 29356c25651 < faradize/DSG --- > faradize/DG 29388c25683 < fascinate/XGNDS --- > fascinate/GNDSX 29397a25693 > fashionista/MS 29404c25700 < fastidious/YP --- > fastidious/PY 29419d25714 < fatheaded/P 29426d25720 < fathomed/U 29429d25722 < fatigued/U 29433d25725 < fatted 29445c25737 < faultfinder/MS --- > faultfinder/SM 29449c25741 < faultless/YP --- > faultless/PY 29461d25752 < favored/U 29466d25756 < fawning/Y 29470a25761 > faïence/M 29474,29475d25764 < fearfuller < fearfullest 29479c25768 < fearsome/YP --- > fearsome 29482c25771 < feasibly/U --- > feasibly 29489d25777 < featherlight 29521,29522d25808 < feedstock < feedstuffs 29532d25817 < felafel/S 29534c25819 < felicitate/XGNDS --- > felicitate/GNXDS 29545c25830 < fellowship/SM --- > fellowship/MS 29562,29563d25846 < fenced/U < fencepost 29569d25851 < fenland 29576d25857 < fermion/S 29580c25861 < ferocious/YP --- > ferocious/PY 29585d25865 < ferrite 29619d25898 < fetich/MS 29627c25906,25907 < fetter/USGDM --- > fetter's > fetter/USGD 29647c25927,25929 < fiasco/M --- > fiancé/SM > fiancée/MS > fiasco/SM 29654c25936 < fiber/MD --- > fiber/M 29662d25943 < fibroblast/S 29669d25949 < fices 29676,29677c25956,25957 < fictionalization/MS < fictionalize/GDS --- > fictionalization/SM > fictionalize/DSG 29681c25961 < fiddle/DRSJMZG --- > fiddle/DRSMZG 29698c25978 < fieldwork/ZMR --- > fieldwork/MRZ 29704d25983 < fierily 29718c25997 < fig/SLM --- > fig/FSM 29724d26002 < figural 29727c26005,26006 < figure/FEGSDM --- > figure's > figure/EFGSD 29731d26009 < filamentary 29735,29738c26013,26017 < file/CAKGDSM < filer/CSM < filesystem/MS < filet/GSMD --- > file/KCSRDGZM > filename/S > filer/KCM > filesystem/SM > filet 29740c26019 < filibuster/ZGSMDR --- > filibuster/MDRSZG 29744,29745c26023,26026 < filing/SM < fill/AIDGSM --- > filing's > filings > fill's > fill/AIDGS 29766,29767c26047,26048 < filtrable < filtrate/IGNDSM --- > filtrate's > filtrate/IGNDS 29778,29780c26059,26061 < finance/ADSGM < financial/Y < financials --- > finance's > finance/ADSG > financial/YS 29784c26065 < find/BJMRZGS --- > find/JMRZGS 29788c26069,26070 < fine/CAFTGDSM --- > fine's/F > fine/CAFTGDS 29795c26077 < fingerboard/MS --- > fingerboard/SM 29797d26078 < fingerless 29801c26082 < fingerprint/MDSG --- > fingerprint/SGMD 29808c26089,26090 < finish/ADSGM --- > finish's > finish/ADSG 29811c26093 < finite/PY --- > finite/IY 29814,29815c26096 < finny/TR < fiord/SM --- > finny 29827d26107 < fired/U 29829c26109 < firefight/MRSJZG --- > firefight/MRSZG 29843d26122 < firesafe 29853d26131 < firkin 29857c26135 < firmware/MS --- > firmware/M 29883,29884c26161,26162 < fission/BSM < fissure/DSM --- > fission/BM > fissure/SM 29902d26179 < fivefold 29918c26195 < flabbergast/GSD --- > flabbergast/SGD 29949,29950c26226 < flam < flamage/S --- > flamage 29956a26233 > flambé/MD 29959,29960c26236,26237 < flameproof/DSG < flamethrower/MS --- > flameproof/DGS > flamethrower/SM 29965c26242 < flange/MDS --- > flange/MS 29969d26245 < flannelet/M 29994a26271 > flatbread 30021d26297 < flautist/SM 30032c26308 < flay/DRZGS --- > flay/DGS 30039d26314 < fledgeling/SM 30052d26326 < fleshless 30059d26332 < flexibilities 30064c26337 < flexitime/M --- > flexion 30066c26339 < flibbertigibbet/MS --- > flibbertigibbet/SM 30069d26341 < flickery 30071c26343 < flight/MDS --- > flight/MS 30074d26345 < flightpath 30088c26359,26361 < flippable --- > flipflop/S > flipflopped > flipflopping 30097c26370 < flirtation/SM --- > flirtation/MS 30105d26377 < floatation 30107,30108d26378 < floaty < flocculation 30118c26388 < floodlight/MDGS --- > floodlight/MDSG 30121c26391 < floodwater/M --- > floodwater/MS 30125,30126c26395 < floorspace < floorwalker/MS --- > floorwalker/SM 30132d26400 < flopper 30152c26420 < flouncy/TR --- > flouncy 30156c26424 < floury/RT --- > floury 30159c26427 < flow/IMGS --- > flow/MDGS 30161,30162c26429,26430 < flowed < flower/CSDGM --- > flower's > flower/CSDG 30175c26443 < fluctuate/XGNDS --- > fluctuate/GNDSX 30185c26453 < fluidize/DSG --- > fluidize/GS 30187d26454 < flukey 30193d26459 < flunkey/MS 30203,30204c26469,26470 < fluorocarbon/SM < fluoroscope/MS --- > fluorocarbon/MS > fluoroscope/SM 30215,30216c26481,26484 < flux/ADGM < fluxes --- > flux's/A > flux/IMS > fluxed > fluxing 30223c26491 < flyer/MS --- > flyer/SM 30237,30238c26505 < fo'c's'le < fo'c'sle --- > fo'c'sle/MS 30248c26515,26516 < focus/ADSGM --- > focus's > focus/ADSG 30252,30253c26520,26521 < foetid < fog/CSM --- > fog's > fog/CS 30267c26535,26536 < fold/IAUSGDM --- > fold's > fold/AUSGD 30272c26541 < foliate --- > folic 30281d26549 < folksong 30287,30288c26555 < follicular < follow/SDRZGBJ --- > follow/SDRZGJ 30299d26565 < fondu/M 30305c26571 < foobar/S --- > foobar 30313,30314c26579,26580 < foolhardy/PTR < foolish/TRYP --- > foolhardy/TPR > foolish/YP 30322c26588 < footbridge/MS --- > footbridge/SM 30334d26599 < footmarks 30337d26601 < footpads 30377d26640 < fordable/U 30387c26650 < foreclosure/SM --- > foreclosure/MS 30389d26651 < foredeck 30396,30397c26658,26660 < foregather/SGD < foregoing --- > foregather/GDS > forego/G > foregoes 30399c26662 < foreground/MDGS --- > foreground/GMDS 30421c26684 < foreordain/GDS --- > foreordain/GSD 30423d26685 < forepaws 30426c26688 < forequarter/SM --- > forequarter/MS 30431d26692 < foreseeability 30436c26697 < foreshadow/SGD --- > foreshadow/GDS 30438c26699 < foreshorten/SDG --- > foreshorten/DSG 30442c26703,26704 < forest/ACGDSM --- > forest's > forest/ACGDS 30448,30450d26709 < foreswear/GS < foreswore < foresworn 30470c26729 < forgetful/PY --- > forgetful/YP 30477c26736 < forgiven/U --- > forgiven 30490,30492c26749,26752 < forlorn/PTRY < form/CAIFDGSM < forma --- > forlorn/Y > form's > form/CAIFDGS > forma/K 30496c26756 < formalism/MS --- > formalism/M 30498d26757 < formalistic 30501c26760 < formalization/MS --- > formalization/M 30503d26761 < formant 30509c26767 < former/AIFMS --- > former/FIAM 30517a26776 > formulae 30537c26796 < forthright/PY --- > forthright/YP 30545c26804 < fortify/DRSZGNX --- > fortify/DRSNZGX 30550c26809 < fortuitous/PY --- > fortuitous/YP 30562a26822 > fossa 30564d26823 < fossiliferous 30575d26833 < foundational 30585,30587c26843 < fourpence < fourpenny < fourposter/MS --- > fourposter/SM 30613,30614c26869 < frack/DRGS < fracker/S --- > frack/SDRZG 30616c26871 < fraction/IASM --- > fraction/ISM 30618d26872 < fractionate/GND 30638c26892,26893 < franchise/EDSGM --- > franchise's > franchise/EDSG 30652a26908 > frappé/M 30661c26917,26918 < fraud/SM --- > fraud's > fraud/S 30666c26923,26924 < fray/CDGSM --- > fray's > fray/CDGS 30674c26932 < freckly/TR --- > freckly 30703c26961 < freeware/SM --- > freeware/M 30705c26963 < freewheel/DSG --- > freewheel/DGS 30708c26966,26967 < freeze/UAGSM --- > freeze's > freeze/UAGS 30710c26969 < freezing/M --- > freezing's 30718d26976 < freon/S 30736d26993 < fretboard 30751d27007 < frictionless 30754,30755c27010,27012 < friend/SM < friendless/P --- > friend's > friend/US > friendless 30757d27013 < friendlily 30759,30760c27015,27017 < friendly/UTPRM < friendship/SM --- > friendly's > friendly/UPTR > friendship/MS 30767c27024 < frighten/DZG --- > frighten/DG 30776c27033,27034 < fringe/IDSGM --- > fringe's > fringe/IDSG 30786c27044 < frivolous/YP --- > frivolous/PY 30788d27045 < friz/M 30791d27047 < frizzly/TR 30794c27050,27051 < frock/CUSM --- > frock's > frock/CUS 30796c27053 < frogging/DGS --- > frogging/S 30808c27065,27066 < front/FSDGM --- > front's > front/FSDG 30817,30818c27075 < frontispiece/SM < frontrunner/SM --- > frontispiece/MS 30821c27078,27079 < frost/CSDGM --- > frost's > frost/CSDG 30837,30838d27094 < frowning/Y < frowsty 30852,30854c27108 < fruitful/PY < fruitfuller < fruitfullest --- > fruitful/YP 30858c27112 < fruitless/YP --- > fruitless/PY 30864,30865c27118 < frustrate/GNDSX < frustrated/Y --- > frustrate/GNXDS 30869c27122 < fry/ZGDRSM --- > fry/GDSM 30872c27125 < ftp/ZGSR --- > ftp/ZGS 30875c27128 < fucker/SM! --- > fucker/M! 30880c27133,27134 < fuel/ADGSM --- > fuel's > fuel/ADGS 30889a27144 > fulfilling/U 30894d27148 < fullish 30896d27149 < fullstops 30900d27152 < fulness/M 30904d27155 < fumarole/S 30913d27163 < fuming/Y 30920c27170 < functionality --- > functionality/S 30922d27171 < functionless 30926c27175 < fundamentalist/MS --- > fundamentalist/SM 30928,30929d27176 < fundholders < fundholding 30961c27208,27209 < furl/UDGSM --- > furl's > furl/UDGS 30987c27235,27236 < fuse/CAIFGDSM --- > fuse's/A > fuse/CAIFGDS 30997c27246 < fussbudget/SM --- > fussbudget/MS 31017d27265 < fuze/MGDS 31025c27273,27274 < g/SNXB --- > fête/SM > g/SNXVB 31055c27304,27305 < gain/ADGSM --- > gain's > gain/ADGS 31067c27317,27318 < gale/ASM --- > gale's > gale/AS 31071,31072c27322,27323 < gallantry/SM < gallbladder/SM --- > gallantry/M > gallbladder/MS 31075c27326 < gallery/DSM --- > gallery/SM 31087d27337 < galoshe/M 31095d27344 < galvanometric 31101c27350 < game/MYZTGDRSP --- > game/MYTGDRSP 31103c27352 < gamekeeper/SM --- > gamekeeper/MS 31106d27354 < gamesmen 31111c27359 < gamify/NGDS --- > gamify/DSNG 31122c27370 < gang/MDYGS --- > gang/MDGS 31129d27376 < gangly/RT 31135d27381 < gangsterism 31141,31142d27386 < gaolbirds < gaolbreak/S 31145d27388 < gaping/Y 31173,31174c27416 < garnishment/MS < garote/DSMG --- > garnishment/SM 31182c27424 < garrulous/YP --- > garrulous/PY 31185c27427,27429 < gas/CSM --- > garçon/SM > gas's > gas/CS 31215c27459 < gateau/S --- > gateau 31224d27467 < gathered/I 31236c27479 < gaunt/RYPT --- > gaunt/RPT 31251,31252c27494 < gay/TSPMRY < gayety/M --- > gay/TSPMR 31267d27508 < gearstick 31272d27512 < geegaw/SM 31277d27516 < geez/RZ 31282d27520 < gelatine/M 31299d27536 < genderless 31302c27539 < genealogist/SM --- > genealogist/MS 31306c27543 < generalissimo/SM --- > generalissimo/MS 31310c27547 < generalize/GBDS --- > generalize/GDS 31313c27550,27551 < generation/ASMC --- > generation's/A > generation/CSM 31319c27557 < generous/UY --- > generous/PY 31325c27563 < geneticist/SM --- > geneticist/MS 31328a27567 > geniculate 31342,31343c27581 < genomic/S < genotype/S --- > genomics 31346c27584 < genteel/RYTP --- > genteel/YP 31352c27590 < gentlefolk/SM --- > gentlefolk/MS 31368a27607 > geocache/DSG 31371d27609 < geochemical 31376a27615 > geoengineering 31388d27626 < geomagnetically 31390c27628 < geometer/S --- > geometer 31394d27631 < geomorphology 31400d27636 < geoscientific 31403c27639 < geosyncline/SM --- > geosyncline/MS 31418d27653 < germinated/U 31420d27654 < gerontocracy 31422c27656 < gerontologist/SM --- > gerontologist/MS 31424c27658 < gerrymander/SMDG --- > gerrymander/GMDS 31426c27660 < gerund/VMS --- > gerund/MS 31432c27666 < gesticulate/XDSGN --- > gesticulate/DSGNX 31437c27671 < get/SM --- > get/S 31439,31440d27672 < gettable < getter 31453d27684 < ghostlike 31461c27692 < ghoulish/PY --- > ghoulish/YP 31465d27695 < giantkiller 31478c27708 < gigabit/MS --- > gigabit/SM 31481c27711 < gigajoule/MS --- > gigajoule/SM 31485,31486c27715 < gigavolt < gigawatt/MS --- > gigawatt/SM 31509c27738 < gimpy/RT --- > gimpy 31517,31518c27746 < gingko/M < ginkgo/M --- > ginkgo/SM 31524d27751 < gipsy/SM 31530c27757 < girlfriend/SM --- > girlfriend/MS 31540d27766 < gismo/SM 31544c27770 < give/MZGJRS --- > give/ZGJRS 31558,31560c27784 < glaciological < glaciologist/S < glaciology --- > glacé/SDG 31571d27794 < gladly/TR 31573c27796 < gladsome/RT --- > gladsome 31578a27802 > glamour/GMDS 31594d27817 < glassless 31599d27821 < glazed/U 31609a27832,27833 > glenohumeral > glenoid 31646c27870 < glockenspiel/MS --- > glockenspiel/SM 31652c27876 < gloppy/TR --- > gloppy 31654c27878 < glorify/GNDS --- > glorify/GDSN 31669a27894 > glucagon 31680d27904 < gluon 31682d27905 < glutamate 31694d27916 < glycine 31696d27917 < glycol 31698d27918 < glyphs 31710,31711d27929 < gnostic < gnosticism 31713c27931 < go/SJMRHZG --- > go/JMRHZG 31717c27935 < goalkeeper/SM --- > goalkeeper/MS 31724,31725c27942 < goalscoring < goaltender/SM --- > goaltender/MS 31735d27951 < gobbledegook/M 31745,31746c27961,27962 < godchildren < goddam --- > godchildren/M > goddam/D 31749c27965 < goddaughter/SM --- > goddaughter/MS 31772,31773c27988,27989 < gold/MNRTS < goldbrick/SZGMDR --- > gold/MNS > goldbrick/ZGSMDR 31794c28010 < gonk/DGS --- > gonk/S 31818a28035 > google/DSMG 31834c28051,28052 < gorge/EDSGM --- > gorge's > gorge/EDSG 31879c28097 < governorship/MS --- > governorship/M 31890,31891d28107 < gracefuller < gracefullest 31893c28109 < graceless/YP --- > graceless/PY 31898c28114 < grad/MRZSBJ --- > grad/MRZSB 31900,31901c28116,28118 < gradation/CSM < grade/CADSGM --- > gradation/CM > grade's > grade/CADSG 31907d28123 < gradualist 31909d28124 < graduand/S 31917c28132 < grail/S --- > grail 31924a28140 > grammatically/K 31930,31931c28146 < grandad/S < grandaddy/S --- > grandad/MS 31935c28150 < grandchildren --- > grandchildren/M 31938c28153 < granddaughter/MS --- > granddaughter/SM 31942c28157 < grandfather/SMDYG --- > grandfather/GMDYS 31948d28162 < grandmaster/S 31956c28170 < grandstand/SMDG --- > grandstand/SGMD 31959c28173 < granite/MS --- > granite/M 31967d28180 < grantor/MS 31975c28188 < grapefruit/SM --- > grapefruit/MS 31982c28195 < graphologist/SM --- > graphologist/MS 31987c28200 < grasp/SMDRBG --- > grasp/SMDBG 31989c28202 < grasshopper/SM --- > grasshopper/MS 31995,31996d28207 < gratefuller < gratefullest 31999d28209 < graticule 32001c28211 < gratify/XNGDS --- > gratify/GNXDS 32012c28222 < gravedigger/MS --- > gravedigger/SM 32020c28230 < gravimeter/SM --- > gravimeter/MS 32024,32026c28234,28235 < gravitational/Y < graviton/S < gravity/SM --- > gravitational > gravity/M 32036d28244 < greaseproof 32056,32057c28264 < greengrocer/MS < greengrocery --- > greengrocer/SM 32079,32080c28286,28288 < grey/MDRTGSP < greybeard/SM --- > grey/MDRTGS > greybeard's > greybeards 32082,32083c28290 < greyish < greyness/M --- > greyness's 32086d28292 < gridded 32095c28301 < grievous/YP --- > grievous/PY 32112c28318 < grindstone/SM --- > grindstone/MS 32115d28320 < grinner 32126d28330 < gristly/RT 32137c28341 < groan/SZGMDR --- > groan/SGMD 32157c28361 < grope/DRSJMZG --- > grope/DRSMZG 32159d28362 < groping/Y 32164c28367 < grotesque/SMYP --- > grotesque/SPMY 32177d28379 < grounded/U 32212d28413 < groyne/S 32240d28440 < gryphon/SM 32245a28446 > guaranies 32251c28452 < guarded/YP --- > guarded/Y 32262c28463 < gudgeon --- > guerilla/SM 32265d28465 < guessable/U 32270c28470 < guestbook/MS --- > guestbook/SM 32287c28487 < guileless/PY --- > guileless/YP 32306d28505 < gulley/MS 32324d28522 < gumtree/S 32333c28531 < gunky/TR --- > gunky 32375c28573 < guttersnipe/SM --- > guttersnipe/MS 32377c28575 < guttural/MYS --- > guttural/MS 32395c28593 < gynecologist/MS --- > gynecologist/SM 32409d28606 < gyromagnetic 32416c28613 < haberdasher/MS --- > haberdasher/SM 32419c28616,28617 < habit/ISBM --- > habit's > habit/ISB 32427a28626 > habitué/SM 32429c28628 < hack/BMDRZGS --- > hack/MDRZGS 32432,32434c28631 < hackish/SP < hackishness/S < hackitude/S --- > hackish 32437a28635 > hacktivist/S 32441,32443d28638 < hadj/M < hadjes < hadji/SM 32445d28639 < hadron/S 32470d28663 < haircare 32474c28667 < hairdresser/MS --- > hairdresser/SM 32476c28669 < hairdrier/S --- > hairdrier/MS 32488c28681 < hairsplitter/MS --- > hairsplitter/SM 32491,32493c28684,28686 < hairspring/SM < hairstyle/MGS < hairstylist/MS --- > hairspring/MS > hairstyle/MS > hairstylist/SM 32506,32507c28699 < halfbreed < halfhearted/YP --- > halfhearted/PY 32511d28702 < halfpennyworth 32517d28707 < halide/S 32521,32522d28710 < halleluiah/M < halleluiahs 32525d28712 < halliard/MS 32527d28713 < hallo/M 32531c28717 < hallucinate/DSXGN --- > hallucinate/GNXDS 32535c28721 < hallucinogenic/MS --- > hallucinogenic/SM 32539,32540c28725 < halogenated < halon/S --- > halon 32563c28748 < hamstring/SGM --- > hamstring/GSM 32565c28750,28751 < hand/UDGSM --- > hand's > hand/UDGS 32569d28754 < handbasin 32585c28770 < handicapper/SM --- > handicapper/MS 32591c28776 < handkerchief/SM --- > handkerchief/MS 32641c28826 < happenstance/MS --- > happenstance/SM 32670,32671c28855 < hardline/ZR < hardliner/M --- > hardliner/MS 32690,32691c28874 < hark/DNXGS < harken/DG --- > hark/DGS 32695c28878 < harm/MDRGS --- > harm/MDGS 32712c28895,28896 < harness/UDSGM --- > harness's > harness/UDSG 32717,32718c28901,28902 < harpsichord/SM < harpsichordist/MS --- > harpsichord/MS > harpsichordist/SM 32733d28916 < hasheesh/M 32735c28918 < hashtag/S --- > hashtag/SM 32784d28966 < havering 32796d28977 < hayfield 32804d28984 < haywain 32814a28995 > hazmat 32850d29030 < headmastership 32853d29032 < headnote 32857c29036 < headquarter/SGD --- > headquarter/SDG 32865c29044 < headshrinker/MS --- > headshrinker/SM 32870d29048 < headstock 32874c29052 < headwaiter/MS --- > headwaiter/SM 32884c29062 < healthcare/M --- > healthcare 32889d29066 < healths 32898c29075,29076 < hearse/ASM --- > hearse's > hearse/AS 32902c29080 < heartbreak/MSG --- > heartbreak/SMG 32910c29088 < hearthstone/MS --- > hearthstone/SM 32914c29092 < heartless/YP --- > heartless/PY 32924c29102,29103 < heat/ADGSM --- > heat's > heat/ADGS 32928c29107 < heath/MNRXZ --- > heath/MNRX 32934,32935d29112 < heathery < heathland 32952c29129 < heavyweight/SM --- > heavyweight/MS 32961d29137 < hectoliters 33001c29177 < helicopter/SMDG --- > helicopter/SGMD 33003,33004d29178 < heliography < heliosphere 33010c29184 < hell/MS --- > hell/M 33014d29187 < hellfire 33033c29206 < helpline/S --- > helpline/SM 33035d29207 < helpmeet/SM 33041c29213 < hematologist/SM --- > hematologist/MS 33054c29226 < hemophiliac/SM --- > hemophiliac/MS 33067d29238 < henge 33070c29241 < hentai/! --- > hentai 33074a29246 > hepatocyte/S 33079d29250 < heptane 33081d29251 < her/M 33090d29259 < herbalism 33116d29284 < hereunder 33120d29287 < heritability 33125d29291 < hermeneutic/S 33164d29329 < heterozygous 33176c29341,29342 < hexane/SM --- > hexane's > hexanes 33187c29353 < hibernator/SM --- > hibernator/MS 33188a29355,29356 > hiccough/DG > hiccoughs 33194c29362 < hidden/U --- > hidden 33208d29375 < hieratic 33210c29377 < hieroglyphic/SM --- > hieroglyphic/MS 33219d29385 < highfaluting 33222,33223d29387 < highish < highjack/SGMD 33229,33230d29392 < highpoint < highrise/MS 33241d29402 < hijinks 33254d29414 < hillwalking 33257c29417 < him/SM --- > him/S 33266c29426,29427 < hinge/UDSGM --- > hinge's > hinge/UDSG 33269c29430 < hinterland/MS --- > hinterland/SM 33279c29440 < hippie/SM --- > hippie/M 33284a29446 > hippy/SM 33286c29448,29450 < hire/AGDSM --- > hiragana > hire's > hire/AGDS 33288d29451 < hirer 33291c29454 < hiss/MDSGJ --- > hiss/MDSG 33295d29457 < histological 33301d29462 < historicist 33304d29464 < historiographical 33311c29471,29472 < hitch/UDSGM --- > hitch's > hitch/UDSG 33317d29477 < hittable 33325,33327c29485 < hoagie/M < hoagy/SM < hoar --- > hoagie/MS 33350a29509 > hoboes 33365d29523 < hogger 33379c29537 < hold/MRBJSZG --- > hold/MRJSZG 33427d29584 < homeomorphism/S 33447a29605 > homewrecker/SM 33451a29610 > homie/RSMT 33455a29615 > hominoid/S 33459d29618 < homogenates 33464d29622 < homogenous 33467d29624 < homological 33469,33471d29625 < homologue < homology/S < homomorphism/S 33473d29626 < homophobes 33477,33478c29630 < homophony < homosexual/SMY --- > homosexual/SM 33480,33483d29631 < homotopy < homozygous < homunculus < homy/RPT 33493c29641 < honeycomb/GMDS --- > honeycomb/MDSG 33496c29644 < honeymoon/MDRSZG --- > honeymoon/ZGMDRS 33510d29657 < honored/U 33515a29663 > hoodie/MS 33521,33522c29669,29670 < hook/UDSGM < hooka/SM --- > hook's > hook/UDSG 33526d29673 < hookey/M 33534c29681 < hooray/MDSG --- > hooray/MS 33544d29690 < hoped/U 33547c29693 < hopeless/PY --- > hopeless/YP 33552c29698 < hopscotch/GMDS --- > hopscotch/MDSG 33557,33558c29703,29704 < horizontal/MYS < hormonal/Y --- > horizontal/SMY > hormonal 33561d29706 < hornbeam 33583c29728,29729 < horse/UDSGM --- > horse's > horse/UDSG 33621a29768 > hospholipase 33627,33628c29774,29775 < hospitalization/MS < hospitalize/GDS --- > hospitalization/SM > hospitalize/DSG 33644d29790 < hotchpotch 33654a29801 > hotkey/S 33662d29808 < hotspot/MS 33665a29812 > hottie/S 33667,33668d29813 < houmous < houmus 33673c29818,29819 < house/ADSGM --- > house's > house/ADSG 33682,33683c29828 < housebuilding < houseclean/DGS --- > houseclean/DSG 33690c29835 < househusband/MS --- > househusband/SM 33701d29845 < housemoving 33708c29852 < housewarming/MS --- > housewarming/SM 33715c29859 < hover/SGDR --- > hover/SGD 33716a29861,29862 > how'd > how're 33758d29903 < hullo/M 33766c29911 < humanitarian/SM --- > humanitarian/MS 33794c29939 < humiliate/XDSGN --- > humiliate/DSGNX 33798d29942 < hummable 33807a29952 > humoresque 33809c29954 < humorless/PY --- > humorless/YP 33817d29961 < humungous 33825c29969 < hundredweight/MS --- > hundredweight/SM 33847,33848c29991,29993 < hurrah/M < hurray/GSMD --- > hurrah/GMD > hurrahs > hurray 33873,33874d30017 < hutzpa/M < hutzpah/M 33888c30031,30032 < hydrate/CGNDSM --- > hydrate's > hydrate/CGNDS 33893,33894d30036 < hydrazine < hydride 33896c30038 < hydrocarbon/SM --- > hydrocarbon/MS 33898,33900d30039 < hydrocephaly/M < hydrochloric < hydrochloride 33902d30040 < hydrodynamical 33907d30044 < hydrofluoric 33910c30047 < hydrogenate/CDSGN --- > hydrogenate/CGDS 33913d30049 < hydrological 33915a30052 > hydrolyses 33918,33919d30054 < hydromagnetic < hydromechanics 33924,33925c30059,30060 < hydrophone/MS < hydroplane/MGDS --- > hydrophone/SM > hydroplane/GDSM 33930d30064 < hydrostatic/S 33932d30065 < hydrothermal 33941d30073 < hygroscopic 33954d30085 < hyperboloid/S 33956,33957d30086 < hypercube/S < hyperfine 33960c30089 < hyperlink/SM --- > hyperlink/GSMD 33963c30092 < hyperplane/S --- > hyperparathyroidism 33967d30095 < hypersonic 33969d30096 < hypersphere 33971c30098 < hypertensive/MS --- > hypertensive/SM 33975c30102 < hypertrophy/GDSM --- > hypertrophy/DSMG 33980d30106 < hyphenated/U 33993d30118 < hypocaust 33995c30120 < hypochondriac/MS --- > hypochondriac/SM 33999c30124 < hypodermic/SM --- > hypodermic/MS 34002c30127 < hypotenuse/SM --- > hypotenuse/MS 34008c30133 < hypothesize/GDRS --- > hypothesize/DSG 34012d30136 < hypoxia 34020a30145 > iPad/M 34028d30152 < iatrogenic 34034c30158,30159 < ice/CDSGM --- > ice's > ice/CDSG 34039c30164 < icebreaker/MS --- > icebreaker/SM 34043,34045d30167 < icepack < icepick/S < ichneumon 34056c30178 < iconoclast/MS --- > iconoclast/SM 34058d30179 < iconographic 34060,34062d30180 < icosahedra < icosahedral < icosahedron 34072c30190 < idealization/SM --- > idealization/MS 34078d30195 < identifiably 34086d30202 < ideographic 34089c30205 < ideologist/MS --- > ideologist/SM 34094d30209 < idiolect 34116d30230 < idyl/MS 34127d30240 < ignitible 34136c30249 < ignore/GDSB --- > ignore/GDS 34140d30252 < ikon/MS 34160d30271 < illiquid 34166,34167c30277 < illuminant < illuminate/XDSGN --- > illuminate/GNXDS 34175,34176c30285 < illustrate/GNVDSX < illustrated/U --- > illustrate/GNVXDS 34182d30290 < ilmenite 34186a30295 > imaginal 34188c30297 < imagination/SM --- > imagination/MS 34191d30299 < imagined/U 34199,34201d30306 < imbed/S < imbedded < imbedding 34227c30332 < immediate/YP --- > immediate/PY 34230c30335 < immense/RYTP --- > immense/Y 34236c30341 < immigrate/DSGNX --- > immigrate/DSGN 34240d30344 < immiscible 34242d30345 < immobilisers 34255c30358 < immortalize/GDS --- > immortalize/DSG 34259d30361 < immoveable 34261,34262c30363,30364 < immunity/SM < immunization/MS --- > immunity/M > immunization/SM 34264d30365 < immunoassay 34266a30368 > immunoglobulin/S 34268c30370 < immunological/Y --- > immunological 34277d30378 < impaction 34280c30381 < impairment/SM --- > impairment/MS 34282c30383 < impale/DRSGL --- > impale/DSGL 34296c30397 < impassive/PY --- > impassive/YP 34315c30416 < impediment/MS --- > impediment/SM 34327c30428 < imperative/MYS --- > imperative/SMY 34333,34334c30434,30435 < imperfect/SPMY < imperfection/SM --- > imperfect/SMYP > imperfection/MS 34354,34355c30455 < impersonality < impersonate/XDSGN --- > impersonate/GNXDS 34357c30457 < impersonator/MS --- > impersonator/SM 34384c30484 < implement/BZGMDRS --- > implement/GBMDRS 34387,34388c30487 < implemented/UA < implementing/A --- > implemented/U 34393d30491 < implied/Y 34403c30501 < imponderable/SM --- > imponderable/MS 34407c30505 < importation/SM --- > importation/MS 34409d30506 < importing/A 34413d30509 < imposable 34418c30514 < imposition/SM --- > imposition/MS 34430c30526 < impoverish/LGDS --- > impoverish/DSLG 34436c30532 < impracticality/SM --- > impracticality/M 34452c30548 < impression/MSB --- > impression/BSM 34457c30553 < impressive/YP --- > impressive/PY 34459c30555 < imprimatur/MS --- > imprimatur/SM 34462,34463c30558,30559 < imprison/SDGL < imprisonment/MS --- > imprison/SDLG > imprisonment/SM 34470c30566 < improve/GBDRSL --- > improve/GBDSL 34472c30568 < improvement/SM --- > improvement/MS 34477d30572 < improvisatory 34485c30580 < impugn/ZGBSDR --- > impugn/ZGSDR 34496a30592 > inaccuracy/S 34498d30593 < inactivity 34509d30603 < inapplicability 34515c30609 < inaugurate/GNDSX --- > inaugurate/XGNDS 34518,34519c30612,30613 < inbound/s < inbox/M --- > inbound > inbox/MS 34525d30618 < incant 34527,34530c30620,30621 < incantatory < incapable < incapacitate/DSGN < incarcerate/GNXDS --- > incapacitate/GDS > incarcerate/XDSGN 34532c30623 < incarnadine/GDS --- > incarnadine/DSG 34537,34538c30628,30630 < incentive/ESM < incentivize/SDG --- > incentive's > incentive/ES > incentivize/DSG 34541c30633 < incest/MS --- > incest/M 34552c30644 < incinerator/SM --- > incinerator/MS 34557c30649 < incisive/YP --- > incisive/PY 34566c30658,30659 < incline/EGDSM --- > incline's > incline/EGDS 34572d30664 < incoherency 34577c30669,30670 < incompetent/SM --- > incompatibility/S > incompetent/MS 34586c30679 < incontinent/Y --- > incontinent 34588,34590c30681,30682 < inconvenience/DG < incorporable < incorporate/AGNDS --- > inconvenience/GD > incorporate/ADSGN 34595c30687 < incorrigibleness --- > incorrigible/P 34598c30690 < increment/SMDG --- > increment/SMD 34600c30692,30693 < incrementation --- > incrementalism > incrementalist/SM 34604c30697 < incrustation/MS --- > incrustation/SM 34626,34627d30718 < indecent/T < indeclinable 34632a30724 > indefinably 34636c30728 < indemnify/XGNDS --- > indemnify/GDSXN 34638c30730 < indentation/SM --- > indentation/MS 34649d30740 < indicant/S 34654d30744 < indices 34658d30747 < indifference/M 34673d30761 < indispose/D 34675a30764 > indistinguishably 34680c30769 < individualist/SM --- > individualist/MS 34685c30774 < individualize/DSG --- > individualize/GDS 34689c30778 < indoctrinate/DSXGN --- > indoctrinate/GNDS 34691d30779 < indoctrinator/S 34696d30783 < indorse/GDS 34702c30789 < inducible --- > induct/DGV 34707d30793 < inductor/S 34709,34710c30795,30796 < indulge/DRSG < indulgence/MS --- > indulge/DSG > indulgence/SM 34714c30800 < industrialist/MS --- > industrialist/SM 34716c30802 < industrialize/GDS --- > industrialize/DSG 34727c30813 < ineffectual/P --- > inefficiency/S 34729a30816 > ineligibly 34735c30822 < ineradicably --- > inequality/S 34747d30833 < inexactitude/S 34756d30841 < inexpressibility 34765c30850 < infanticide/SM --- > infanticide/MS 34774,34775c30859 < infeasibility < infect/AESDVG --- > infect/AESDG 34782c30866 < inferential/Y --- > inferential 34790c30874 < infestation/SM --- > infestation/MS 34793d30876 < infiltrate/X 34795c30878 < infinite/MYV --- > infinite/MV 34798c30881 < infinitive/SM --- > infinitive/MS 34816,34817c30899,30900 < inflict/SDRGV < infliction/MS --- > inflict/SDGV > infliction/M 34818a30902 > inflow/SM 34823d30906 < influx/MS 34825c30908,30909 < infomercial/MS --- > infomercial/SM > inform/Z 34828d30911 < informatics 34831c30914 < informative/UY --- > informative/PY 34833d30915 < informatory 34840c30922 < infrastructure/MS --- > infrastructure/SM 34856d30937 < ingoing 34865d30945 < ingression 34866a30947 > ingénue/SM 34872c30953 < inhalation/SM --- > inhalation/MS 34886,34887d30966 < inhomogeneity/S < inhomogeneous 34895,34898c30974,30977 < initialization/S < initialize/ADG < initialized/U < initializes --- > initialism > initialization > initialize/DSG > initialized/AU 34911c30990 < injurious/Y --- > injurious 34915c30994 < inkjet/MS --- > inkjet/SM 34937c31016 < innocent/MRYST --- > innocent/MYS 34944a31024 > innuendoes 34956c31036 < inquisition/SM --- > inquisition/MS 34960,34961c31040,31041 < inquisitor/MS < inquisitorial/Y --- > inquisitor/SM > inquisitorial 34964d31043 < insanity/S 34967,34968c31046,31048 < inscriber/SM < inscription/SM --- > inscribe/ZGDR > inscriber/M > inscription/MS 34975c31055 < insecticide/SM --- > insecticide/MS 34979c31059 < inseminate/GNDS --- > inseminate/DSGN 34984,34985c31064,31066 < inseparable/SM < insert/AGSDM --- > inseparable/MS > insert's > insert/AGSD 34992c31073 < insidious/PY --- > insidious/YP 34996d31076 < insigne/M 34998,34999c31078 < insinuate/GNVXDS < insinuating/Y --- > insinuate/GNVDSX 35023,35024c31102,31103 < inspectorate/SM < inspiration/SM --- > inspectorate/MS > inspiration/MS 35030,35034c31109,31111 < instal/S < install/UBZRSDG < installation/SM < installer/UM < installment/MS --- > installation/MS > installer/UMS > installment/SM 35038c31115,31116 < instantiate/GNDSX --- > instantiate/DSG > instar 35043,35044c31121 < instigator/SM < instil/S --- > instigator/MS 35049c31126 < institute/MZGNXDRS --- > institute/XMZGNDRS 35053d31129 < institutionalism 35055,35056c31131,31132 < institutionalize/GDS < institutor/SM --- > institutionalize/DSG > institutor/MS 35060c31136 < instruction/SM --- > instruction/MS 35064,35066c31140,31142 < instrument/GMDS < instrumental/SMY < instrumentalist/MS --- > instrument/MDSG > instrumental/MYS > instrumentalist/SM 35075d31150 < insulated/U 35079c31154 < insult/SMDRG --- > insult/SMDG 35091,35092c31166,31167 < insurrection/MS < insurrectionist/MS --- > insurrection/SM > insurrectionist/SM 35097,35098d31171 < integrability < integrable 35100,35104c31173,31175 < integrand/S < integrate/EAVNGSD < integration/AEM < integrations < integrator/S --- > integrate/AEVNGSD > integration/EAM > integrator 35108c31179 < intellectual/SMY --- > intellectual/MYS 35110d31180 < intellectuality 35112c31182 < intelligence/MS --- > intelligence/M 35122c31192 < intensify/ZGDRSN --- > intensify/DRSZGN 35124c31194 < intensive/PMYS --- > intensive/MYPS 35127c31197 < intention/MDS --- > intention/MS 35129d31198 < intentionality 35134c31203 < interactive/PY --- > interactive/Y 35136d31204 < interbank 35138c31206 < interbreed/SG --- > interbreed/GS 35143,35144c31211,31212 < intercession/MS < intercessor/SM --- > intercession/SM > intercessor/MS 35153c31221 < intercommunicate/GNDS --- > intercommunicate/DSGN 35155,35156c31223 < interconnect/GSD < interconnected/P --- > interconnect/GDS 35159d31225 < interconversion 35165d31230 < interdependency 35171c31236 < interested/UEY --- > interested/U 35175,35179c31240,31241 < interfere/GDRS < interference/MS < interferometer/S < interferometric < interferometry --- > interfere/GDS > interference/M 35183d31244 < interglacial 35188,35190c31249,31250 < interject/DGS < interjection/MS < interjectional --- > interject/GDS > interjection/SM 35192,35193c31252,31253 < interlard/GDS < interleave/GDS --- > interlard/DGS > interleave/DSG 35195c31255 < interline/JGDS --- > interline/GDSJ 35197d31256 < interlingual 35199c31258 < interlink/GDS --- > interlink/DSG 35201c31260 < interlocutor/MS --- > interlocutor/SM 35206,35207c31265,31266 < intermarriage/MS < intermarry/DSG --- > intermarriage/SM > intermarry/GDS 35210,35212c31269,31271 < intermediate/SMYPGD < intermediation/SE < intermediator/SM --- > intermediate/XMYGNPDS > intermediation/ES > intermediator/MS 35219c31278 < intermission/MS --- > intermission/SM 35222,35223d31280 < intermolecular < intern/GDL 35226c31283 < internalize/DSG --- > internalize/GDS 35229c31286 < internationalist/MS --- > internationalist/SM 35231,35232c31288,31289 < internationalize/GDS < interne/MGDS --- > internationalize/DSG > interne/GDL 35234a31292 > interneship/S 35237c31295 < internment/MS --- > internment/M 35239,35240d31296 < internuclear < interocular 35242,35244c31298 < interoperability < interoperable < interpenetrate/GNDS --- > interpenetrate/DSGN 35247,35248c31301,31302 < interplay/MS < interpolate/BXGNDS --- > interplay/M > interpolate/XDSGN 35253,35254c31307 < interpretable/U < interpretation/ASM --- > interpretation/AMS 35258d31310 < interpretive/Y 35261,35263c31313,31314 < interregnum/MS < interrelate/XGNDS < interrelated/P --- > interregnum/SM > interrelate/XDSGN 35267c31318 < interrogate/GNVDSX --- > interrogate/DSGNVX 35274d31324 < interruptibility 35280c31330 < intersession/MS --- > intersession/SM 35290,35291c31340 < interstitial/Y < intertidal --- > interstitial 35299c31348 < interview/MDRZGS --- > interview/ZGMDRS 35304c31353 < interweave/SG --- > interweave/GS 35311d31359 < intifada 35318d31365 < intimidatory 35320,35322c31367,31368 < intonational < intoxicant/MS < intoxicate/GNDS --- > intoxicant/SM > intoxicate/DSGN 35324c31370 < intracellular --- > intracranial 35327c31373 < intranet/S --- > intranet/MS 35329c31375 < intransigent/SMY --- > intransigent/MYS 35344c31390,31391 < introduction/ASM --- > introduction/AM > introductions 35347c31394 < introspect/DGVS --- > introspect/GVDS 35359,35360c31406 < intuitionist < intuitive/YP --- > intuitive/PY 35371c31417 < invariance --- > invariant 35374c31420 < invective/SM --- > invective/M 35380d31425 < invented/U 35385c31430 < inventory/GDSM --- > inventory/DSMG 35387,35388c31432 < invert/SMDRZG < invertible --- > invert/SMDG 35390c31434 < investigate/DSXGNV --- > investigate/GNVDSX 35392c31436 < investigator/MS --- > investigator/SM 35395c31439 < investment/EAM --- > investment/AEM 35399c31443 < invidious/PY --- > invidious/YP 35411,35412c31455,31456 < invitation/MS < invitational/MS --- > invitation/SM > invitational/SM 35417c31461 < invoke/DRSZGB --- > invoke/DSG 35420d31463 < involute/XN 35423d31465 < involved/U 35434d31475 < ionized/C 35443c31484 < irate/RYTP --- > irate/YP 35467c31508 < ironwork/MS --- > ironwork/M 35472c31513 < irrationality/SM --- > irrationality/M 35481d31521 < irreducibility 35489,35490c31529,31530 < irrelevance/SM < irrelevancy/SM --- > irrelevance/MS > irrelevancy/MS 35491a31532 > irreligion 35508,35509c31549 < irresolvable < irrespective/Y --- > irrespective 35517d31556 < irreversibility 35530d31568 < irritated/Y 35551,35552c31589 < isolationist/MS < isolator/S --- > isolationist/SM 35560,35561d31596 < isomorphism/S < isoperimetrical 35563d31597 < isostatic 35565,35566d31598 < isothermal/Y < isotonic 35570,35572d31601 < isotropically < isotropy < issuable 35575d31603 < issued/U 35595d31622 < iterative/Y 35622c31649 < jackrabbit/SM --- > jackrabbit/MS 35625d31651 < jacuzzi 35633c31659 < jaggies/S --- > jaggies 35640d31665 < jailor/SM 35641a31667 > jalapeño/MS 35648,35649c31674,31675 < jammed/U < jamming/U --- > jammed > jamming 35653d31678 < jangly 35661a31687 > jardinière/SM 35670d31695 < jaundiced/U 35679c31704 < jawbreaker/SM --- > jawbreaker/MS 35697d31721 < jehad/SM 35711c31735 < jeopardize/DSG --- > jeopardize/GDS 35720a31745 > jerrican/S 35724d31748 < jessamine/MS 35738,35739c31762 < jewelery/S < jewellery/M --- > jewellery 35748c31771,31772 < jig/ASM --- > jig's > jig/AS 35750c31774,31775 < jigger/ASDGM --- > jigger's > jigger/ASDG 35753c31778 < jiggly/RT --- > jiggly 35755a31781 > jihadist/SM 35760,35761c31786 < jingly/TR < jingo --- > jingly 35768c31793 < jinricksha/MS --- > jinricksha/SM 35770d31794 < jinriksha/MS 35773d31796 < jitter/S 35780d31802 < jiujitsu/M 35812c31834,31835 < join/AFDSGM --- > join's > join/AFDSG 35815c31838,31839 < joint/EGSDM --- > joint's > joint/EGSD 35817d31840 < jointures 35823c31846,31847 < jokily --- > jokier > jokiest 35825d31848 < joky/RT 35843c31866 < jouncy/TR --- > jouncy 35880,35881c31903,31906 < judge/ADSGM < judgement/MS --- > judge's > judge/ADSG > judgement/SM > judgemental 35889c31914 < judicious/IPY --- > judicious/IYP 35908d31932 < jujutsu/M 35926d31949 < juniority 35942d31964 < jurisprudential 35951,35953c31973 < jussive < just/UYPT < juster --- > just/RYPT 35955d31974 < justifiability 35959,35961c31978,31979 < justificatory < justified/AU < justify/NGDSX --- > justified/U > justify/XGDSN 35969c31987 < juxtaposition/MS --- > juxtaposition/SM 35973a31992,31993 > kabbala > kabbalah 35980d31999 < kaftan/MS 35984c32003 < kaleidoscope/SM --- > kaleidoscope/MS 35987a32007 > kana 35988a32009 > kanji 35999a32021 > katakana 36019c32041 < kelp/MZ --- > kelp/M 36028a32051 > keratitis 36032d32054 < kerned 36034d32055 < kerning 36036d32056 < kerosine/M 36042d32061 < kettleful 36043a32063 > keybinding/S 36046c32066 < keyboardist/MS --- > keyboardist/SM 36049c32069 < keylogging/MS --- > keylogging/SM 36055d32074 < keyring 36061d32079 < khalif/S 36084,36086c32102 < kiddy/SM < kidnap/ZSR < kidnaper/M --- > kidnap/S 36102d32117 < kilobits 36107d32121 < kilojoules 36115c32129 < kin/SM --- > kin/M 36117c32131,32132 < kind/UPRYTM --- > kind's > kind/UPRYT 36119,36120c32134 < kindergarten/MRSZ < kindergartener/M --- > kindergarten/MS 36121a32136 > kindergärtner/SM 36142c32157 < kingfisher/MS --- > kingfisher/SM 36162d32176 < kirk/MS 36166d32179 < kissagram/S 36173c32186 < kitchenette/SM --- > kitchenette/MS 36183d32195 < kittiwakes 36188a32201 > kleptocracy 36190c32203 < kleptomaniac/MS --- > kleptomaniac/SM 36192c32205 < kluge/DSG --- > kluge/DS 36200c32213 < knackwurst/SM --- > knackwurst/MS 36234c32247 < knock/JSZGMDR --- > knock/SZGMDR 36248,36249c32261 < knowing/UTYS < knowinger --- > knowing/UYS 36266d32277 < kookie 36276,36277c32287 < kraut/MS! < kriegspiel --- > kraut/SM! 36283a32294,32295 > króna/M > krónur 36288d32299 < kulaks 36292d32302 < kyle/S 36296c32306,32307 < label/ASDGM --- > label's > label/ASDG 36299d32309 < labellings/A 36315c32325,32326 < lace/UGDSM --- > lace's > lace/UGDS 36360d32370 < lagnappe/MS 36393d32402 < lamented/U 36403c32412 < lamplight/ZMR --- > lamplight/MRZ 36406d32414 < lampoonery 36418,36420c32426,32427 < landforms < landholder/MS < landholding/SM --- > landholder/SM > landholding/MS 36424c32431 < landlines --- > landline/MS 36457a32465,32467 > laparoscopic > laparoscopy > laparotomy 36481d32490 < largesse/M 36509c32518,32519 < latch/UDSGM --- > latch's > latch/UDSG 36513c32523 < latency/SM --- > latency/M 36517d32526 < lateralization 36550c32559 < launderette/MS --- > launderette/SM 36552,36553c32561 < laundrette/SM < laundromat/SM --- > laundromat/MS 36563c32571 < lava/MS --- > lava/M 36565d32572 < lavalier/MS 36614d32620 < lazuli 36631c32637 < leafy/PRT --- > leafy/RT 36648c32654 < learning/M --- > learning's 36654c32660,32661 < leash/UDSGM --- > leash's > leash/UDSG 36656d32662 < leastways 36668d32673 < lebensraum 36676c32681 < lector/MS --- > lector/SM 36679c32684 < lectureship/MS --- > lectureship/SM 36687d32691 < leering/Y 36692d32695 < leftie/M 36702c32705 < legalese/MS --- > legalese/M 36711c32714 < legation/ACM --- > legation's/AC 36732c32735 < legislator/SM --- > legislator/MS 36736,36737c32739,32740 < legitimate/DSYGN < legitimatize/DSG --- > legitimate/DSYG > legitimatize/GDS 36744d32746 < legstraps 36770d32771 < lengthways 36777,36778c32778,32779 < lens/MSG < lent/N --- > lens/MS > lent 36784d32784 < leopardskin 36787c32787 < lepidopterist/SM --- > lepidopterist/MS 36802d32801 < letch/S 36805d32803 < lethality 36825c32823 < level/PSZTGMDRY --- > level/PSZGMDRY 36831c32829,32830 < leverage/DSMG --- > leverage's > leverage/CDSG 36840d32838 < lexeme/S 36842,36843c32840,32841 < lexical/Y < lexicographer/SM --- > lexical > lexicographer/MS 36845c32843 < lexicographical/Y --- > lexicographical 36850c32848,32849 < liability/ASM --- > liabilities > liability/AM 36865c32864 < liberalize/DSG --- > liberalize/GDS 36869d32867 < liberationists 36871,36873c32869 < libero < libertarian/MS < libertarianism --- > libertarian/SM 36888c32884 < licentiate/MS --- > licentiate/SM 36891,36892c32887 < lichee/MS < lichen/MDS --- > lichen/MS 36895d32889 < lickerish 36909c32903 < lieutenant/SM --- > lieutenant/MS 36914d32907 < lifeboatmen 36918c32911 < lifeless/PY --- > lifeless/YP 36928d32920 < lifetaking 36935d32926 < ligand/S 36939c32930,32931 < light/CASTGDM --- > light's/C > light/CASTGD 36946c32938 < lighthearted/PY --- > lighthearted/YP 36949c32941 < lighting/M --- > lighting's 36959a32952 > likable/P 36961,36963c32954,32957 < like/MYTGPDRSBJ < likeability < likeable/U --- > like/EMGDST > likeability/M > likeable/P > likeableness/M 36970a32965 > liker 36979,36980c32974 < limber/UDSTG < limberer --- > limber/UDSG 36986d32979 < limekiln 36992c32985,32986 < limit/CSZGDRM --- > limit's > limit/CSZGDR 36996c32990 < limiter/M --- > limiter's 37015d33008 < linctus 37023,37024c33016 < linearized < linebacker/SM --- > linebacker/MS 37044c33036 < linguini/M --- > linguini/SM 37051c33043 < link/MDRBSZG --- > link/MDRSG 37060c33052,33053 < lint/CDSGM --- > lint's > lint/CDG 37061a33055 > lints 37069d33062 < lipase 37073c33066 < lippy/TR --- > lippy 37089d33081 < liquify/DSG 37091,37092d33082 < liquorice/MS < liquorish 37098,37099c33088 < lissom/P < lissome/P --- > lissome 37115,37116d33103 < literalism < literalistic 37127c33114 < lithograph/ZGMDR --- > lithograph/MDRZG 37133,37134d33119 < lithological < lithology 37150a33136 > littérateur/SM 37157,37158c33143 < liveable < livelihood/MS --- > livelihood/SM 37163c33148,33149 < liver/MS --- > liver's > liver/S 37172c33158 < liveware/S --- > liveware 37180,37181c33166,33168 < lo/H < load/AUGSDM --- > lo > load's > load/AUGSD 37184,37186c33171 < loading/MS < loadstar/MS < loadstone/SM --- > loading's 37189c33174 < loam/MS --- > loam/M 37191c33176 < loan/MDRSBZG --- > loan/MDRSZG 37199c33184 < loathsome/YP --- > loathsome/PY 37210,37211c33195 < lobotomist < lobotomize/GDS --- > lobotomize/DSG 37217c33201 < localization/MS --- > localization/M 37219,37222c33203,33204 < locatable/A < locate/EAGNVDS < location/ESMA < locational --- > locate/AESDNGX > location/EAM 37224,37225c33206 < loch/M < lochs --- > locavore/SM 37228d33208 < locked/A 37248c33228 < lodge/DRSLJMZG --- > lodge/DRSJMZG 37256c33236 < log/KSM --- > log/SM 37260d33239 < logarithmically 37271a33251 > login/S 37276a33257,33258 > logoff/S > logon/S 37277a33260 > logout/S 37285a33269 > lolcat/SM 37300c33284,33285 < long/KDSTGM --- > long's > long/KDSTG 37317d33301 < longsword 37321d33304 < longwise 37328a33312 > lookup 37331c33315 < looney/M --- > loonie/M 37347d33330 < lopper/S 37351c33334 < loquacious/YP --- > loquacious/PY 37363,37364c33346 < lorryload/S < lose/ZGRSBJ --- > lose/ZGRSJ 37367a33350 > lossless 37377d33359 < loudly/TR 37381c33363 < loudspeaker/SM --- > loudspeaker/MS 37387c33369,33370 < louse/CDSGM --- > louse's > louse/CDSG 37397d33379 < loveable 37409d33390 < lovestruck 37453c33434 < lucrative/PY --- > lucrative/YP 37470c33451 < lugubrious/PY --- > lugubrious/YP 37486,37487d33466 < lumen < luminance 37491c33470 < luminosity/SM --- > luminosity/M 37505,37506c33484 < luncheonette/MS < lunchpack --- > luncheonette/SM 37509d33486 < lune 37519d33495 < lurex 37540,37541d33515 < luv/S < luvvie/S 37564c33538 < lymphocyte/MS --- > lymphocyte/SM 37570d33543 < lynchpin/SM 37578c33551,33552 < lysine --- > lysosomal > lysosomes 37604c33578 < mack/S --- > mack/MS 37608a33583 > macramé/M 37616,37617d33590 < macromolecular < macromolecules 37619c33592 < macrophage/S --- > macrophages 37621d33593 < macroscopically 37632c33604 < mademoiselle/SM --- > mademoiselle/MS 37637a33610,33612 > madrasa/S > madrassah > madrassahs 37648c33623 < mage/SM --- > mage/MS 37651c33626 < maggoty/RT --- > maggoty 37661,37662c33636 < magma/SM < magmatic --- > magma/M 37664d33637 < magnanimosity 37678,37680d33650 < magnetodynamics < magnetohydrodynamical < magnetohydrodynamics 37683d33652 < magnetron 37687d33655 < magnified/U 37689c33657 < magnify/NZGDRSX --- > magnify/ZGXDRSN 37695a33664 > magus/M 37711,37712c33680,33681 < maidservant/MS < mail/BJMDRSZG --- > maidservant/SM > mail/JMDRSZG 37724d33692 < mainbrace 37730c33698 < mainspring/SM --- > mainspring/MS 37732,37733c33700,33701 < mainstream/SGMD < maintain/ZGDRBS --- > mainstream/SMDG > maintain/ZGBDRS 37735,37736d33702 < maintainable/U < maintained/U 37739d33704 < maiolica/M 37748a33714,33715 > majoritarian/SM > majoritarianism 37750c33717,33718 < make/UAGSM --- > make's/A > make/UAGS 37759d33726 < maladaptive 37773c33740 < malcontent/SM --- > malcontent/MS 37775,37776c33742,33743 < malediction/MS < malefaction/SM --- > malediction/SM > malefaction/M 37785c33752 < malformation/MS --- > malformation/SM 37787c33754 < malfunction/GSMD --- > malfunction/MDSG 37791c33758 < malign/DSZG --- > malign/DSG 37804d33770 < malnourishment 37815c33781 < malware/MS --- > malware/SM 37820,37821c33786 < mamma/SM < mammae --- > mamma/M 37832c33797,33798 < man/USYMF --- > man's/F > man/UFY 37840,37841c33806 < managerial/Y < managership --- > managerial 37844d33808 < manciple 37855d33818 < mandril/SM 37859c33822 < maneuver/BJMDGS --- > maneuver/MDGSBJ 37862c33825 < manga --- > manga/M 37865d33827 < manged/S 37886c33848 < manifestation/MS --- > manifestation/SM 37891d33852 < manilla/M 37894c33855 < manipulate/GNVXDS --- > manipulate/XGNVDS 37897c33858 < manipulator/SM --- > manipulator/MS 37902c33863 < manly/UTR --- > manly/URT 37908,37910c33869 < mannerist < mannerly/P < mannikin/SM --- > mannerly/U 37914d33872 < manoeuvrings 37919a33878,33879 > manqué > mans 37927c33887 < mantelpiece/MS --- > mantelpiece/SM 37934,37935c33894,33895 < mantle/EGDSM < mantlepiece/S --- > mantle's > mantle/EGDS 37937d33896 < mantrap/S 37939c33898 < manufacture/MZGDRS --- > manufacture/DRSMZG 37947c33906 < manuscript/SM --- > manuscript/MS 37949c33908,33910 < map/ASM --- > manège/M > map's > map/AS 37952,37953c33913 < mappable < mapped/UA --- > mapped/A 37960c33920 < maraschino/SM --- > maraschino/MS 37978d33937 < marginality 37980c33939 < marginalize/DSG --- > marginalize/GDS 37984d33942 < marihuana/M 37994c33952 < marionette/SM --- > marionette/MS 38017c33975 < marl/MS --- > marl/M 38019,38020c33977 < marlinespike/MS < marlinspike/SM --- > marlinespike/SM 38043d33999 < marshaller 38045,38046c34001,34002 < marshmallow/MS < marshy/PRT --- > marshmallow/SM > marshy/RT 38049a34006 > martensite 38069c34026,34028 < mask/UDSGM --- > mashup/MS > mask's > mask/UDSG 38091c34050,34051 < master/ADGSM --- > master's > master/ADGS 38095,38097c34055,34056 < mastermind/MDSG < masterpiece/SM < mastership --- > mastermind/SGMD > masterpiece/MS 38112c34071 < mat/SZGMDRJ --- > mat/SZGMDR 38114,38115c34073 < match/AGMS < matchable/U --- > match/AMS 38119c34077 < matcher --- > matching 38122c34080 < matchmaker/SM --- > matchmaker/MS 38124d34081 < matchplay 38133d34089 < materiality 38135,38137c34091 < materialize/CDS < materialized/A < materializing --- > materialize/DSG 38149a34104 > matinée/SM 38157c34112 < matriculate/GNDS --- > matriculate/DSGN 38159c34114 < matrimonial/Y --- > matrimonial 38166d34120 < mattins/M 38173c34127 < matzo/SM --- > matzo/SMH 38176a34131 > matériel/M 38185d34139 < mavin/SM 38196d34149 < maximality 38198c34151 < maximize/GDRS --- > maximize/GDS 38216d34168 < mazourka/SM 38217a34170 > mañana/M 38219c34172 < me/DS --- > me/DSH 38222d34174 < meadowland 38226d34177 < meagreness 38236c34187 < meanie/MS --- > meanie/M 38238c34189 < meaningful/YP --- > meaningful/PY 38240c34191 < meaningless/PY --- > meaningless/YP 38250c34201 < measurable/U --- > measurable 38252c34203,34204 < measure/ADSGM --- > measure's > measure/ADSG 38255c34207 < measurement/SM --- > measurement/MS 38257d34208 < meataxe 38258a34210 > meathead/MS 38270d34221 < mechanist 38274,38275c34225 < mechanize/DSBG < mechanized/U --- > mechanize/DSG 38300c34250 < medievalist/SM --- > medievalist/MS 38308a34259,34260 > medusa > medusae 38313c34265 < meet/MRJSG --- > meet/MJSG 38321a34274 > megachurch/MS 38323c34276,34277 < megadeath/SM --- > megadeath/M > megadeaths 38325c34279 < megajoule/SM --- > megajoule/M 38332d34285 < megaparsec 38334c34287 < megapixel/MS --- > megapixel/SM 38337a34291 > meh 38343c34297 < melancholy/SM --- > melancholy/M 38347d34300 < melatonin 38352c34305 < mellifluous/YP --- > mellifluous/PY 38366c34319,34320 < melt/ADSGM --- > melt's > melt/ADSG 38368,38369c34322,34323 < melter < member/EASM --- > member's > member/EAS 38386d34339 < memorized/U 38394d34346 < menarche 38431c34383 < mention/BGSMD --- > mention/GSMD 38441c34393 < merchandise/DRSMZG --- > merchandise/MZGDRS 38444,38446c34396 < merchandize/DSG < merchant/MSB < merchantability --- > merchant/MBS 38450c34400 < merciless/YP --- > merciless/PY 38456,38457c34406,34407 < mere/MYTRS < meretricious/PY --- > mere/MYTS > meretricious/YP 38463d34412 < meridional 38471,38472c34420 < meritocrats < meritorious/YP --- > meritorious/PY 38477d34424 < meromorphic 38498c34445 < mesosphere/MS --- > mesosphere/SM 38500,38501d34446 < mesozoic < mesquit/MS 38529,38530d34473 < metalinguistic < metalized 38541c34484 < metamorphose/DSG --- > metamorphose/GDS 38548,38549d34490 < metastability < metastable 38552c34493 < metastasize/GDS --- > metastasize/DSG 38554c34495 < metatarsal/SM --- > metatarsal/MS 38559d34499 < metathesizes 38573,38574d34512 < meth < methadon/M 38580d34517 < methionine 38585a34523 > methotrexate 38590,38591d34527 < methylated < methylene 38595d34530 < metonymy 38603d34537 < metronomic 38622d34555 < micelles 38626d34558 < microanalyses 38630c34562 < microbiologist/SM --- > microbiologist/MS 38636c34568 < microcomputer/SM --- > microcomputer/MS 38639d34570 < microdensitometer 38644d34574 < microfarad 38648,38655c34578,34582 < microfloppies/S < micrograms < micrograph < microgravity < microgroove/MS < microhydrodynamics < microlight/SM < micromanage/GLDS --- > microfloppies > microgroove/SM > microlight/MS > microloan/MS > micromanage/GDSL 38657c34584 < micrometeorite/MS --- > micrometeorite/SM 38662,38663c34589 < microprocessor/SM < microprogram --- > microprocessor/MS 38667d34592 < microscopist 38669c34594 < microsecond/SM --- > microsecond/MS 38682c34607 < middleweight/SM --- > middleweight/MS 38691c34616 < midnight/SM --- > midnight/M 38699c34624 < midsize/D --- > midsize 38707d34631 < midwicket 38710a34635 > midwived 38711a34637 > midwiving 38716c34642 < might/SM --- > might/M 38726c34652 < migrator/SM --- > migrator/MS 38735d34660 < mildewy 38739d34663 < mileometer/S 38742a34667 > milf/MS 38769d34693 < millenarian 38771,38773c34695,34696 < millennial < millennium/SM < millepede/MS --- > millennial/MS > millennium/MS 38785c34708 < millionaire/MS --- > millionaire/SM 38790c34713 < millisecond/MS --- > millisecond/SM 38795c34718 < millwright/MS --- > millwright/SM 38800c34723 < mimeograph/MDG --- > mimeograph/GMD 38815c34738,34739 < mind/ADRSZGM --- > mind's > mind/ADRSZG 38827d34750 < mineralization 38829c34752 < mineralogist/SM --- > mineralogist/MS 38831d34753 < mineshaft 38833,38834c34755 < minesweeper/MS < mineworkers --- > minesweeper/SM 38839c34760 < miniaturist/SM --- > miniaturist/MS 38841c34762 < miniaturize/DSG --- > miniaturize/GDS 38847,38848c34768,34769 < minicomputer/MS < minifloppies/S --- > minicomputer/SM > minifloppies 38853,38854d34773 < minimalistic < minimality 38856c34775 < minimize/DRSG --- > minimize/DSG 38860d34778 < miniscule/MS 38864,38865c34782,34783 < ministerial/Y < ministrant/SM --- > ministerial > ministrant/MS 38870,38871c34788 < minke < minnesinger/SM --- > minnesinger/MS 38875d34791 < minotaur/S 38896c34812 < miraculous/YP --- > miraculous/Y 38906c34822 < misadventure/SM --- > misadventure/MS 38910c34826,34827 < misanalysed --- > misandrist/MS > misandry 38914c34831 < misanthropist/SM --- > misanthropist/MS 38918c34835 < misapprehend/SDG --- > misapprehend/GSD 38920c34837 < misappropriate/DSXGN --- > misappropriate/XDSGN 38926c34843 < miscalculate/GNXDS --- > miscalculate/DSXGN 38929c34846 < miscarriage/SM --- > miscarriage/MS 38933d34849 < miscellanea 38942d34857 < misclassified 38944,38945c34859 < miscomprehended < misconceive/DSG --- > misconceive/GDS 38948,38951c34862,34863 < misconfiguration < misconstruction/SM < misconstrue/DSG < miscopying --- > misconstruction/MS > misconstrue/GDS 38962,38963c34874,34875 < misdirect/GSD < misdirection/SM --- > misdirect/SDG > misdirection/M 38975d34886 < misfield 38983c34894 < misgovern/SDLG --- > misgovern/SDGL 39000,39002c34911,34913 < misjudge/DSG < misjudgement/MS < misjudgment/MS --- > misjudge/LDSG > misjudgement/SM > misjudgment/SM 39014c34925 < misogamist/SM --- > misogamist/MS 39020c34931 < misplace/GDSL --- > misplace/GLDS 39023d34933 < mispositioned 39026c34936 < mispronounce/GDS --- > mispronounce/DSG 39032,39035c34942,34944 < misremember/DG < misreport/MDSG < misrepresent/SDG < misrepresentation/SM --- > misreport/MDGS > misrepresent/GDS > misrepresentation/MS 39037c34946,34947 < miss/EDSGVM --- > miss's > miss/EDSGV 39038a34949 > missed/U 39043d34953 < missilry/M 39050c34960 < misspell/GDSJ --- > misspell/GDJS 39056,39057c34966,34967 < misstate/LGDS < misstatement/MS --- > misstate/GDSL > misstatement/SM 39060c34970,34971 < mist/CDRSZGM --- > mist's > mist/CDRSZG 39064c34975 < mister/M --- > mister's 39072,39074d34982 < mistranslates < mistranslating < mistranslation/S 39082,39083c34990,34991 < mistype/JGDS < misunderstand/GSJ --- > mistype/GS > misunderstand/SGJ 39086c34994 < misuse/DRSMG --- > misuse/DSMG 39089c34997 < mitigate/DSGN --- > mitigate/XDSGN 39091,39092c34999 < mitigation/MS < mitigatory --- > mitigation/M 39094a35002 > mitochondrion 39115c35023,35024 < mob/CSM --- > mob's > mob/CS 39119,39120c35028 < mobility/SM < mobilizable --- > mobility/M 39132,39133c35040 < mockingbird/MS < mockup/MS --- > mockingbird/SM 39150c35057 < modern/MRYPTS --- > modern/MYPS 39155c35062 < modernization/SM --- > modernization/M 39159c35066 < modest/RYT --- > modest/Y 39162c35069 < modifiable/U --- > modifiable 39166c35073 < modify/NDRSZGX --- > modify/DRSXZGN 39170,39172d35076 < modularity < modularization < modularize/DG 39178d35081 < moduli 39181,39182c35084 < moggie < moggy/S --- > moggy 39197d35098 < molarity/S 39212c35113 < molestation/SM --- > molestation/M 39217c35118 < mollify/NDSG --- > mollify/DSNG 39221c35122 < molluskan/SM --- > molluskan/S 39223c35124 < mollycoddle/MGDS --- > mollycoddle/DSMG 39233c35134 < momentous/YP --- > momentous/PY 39236,39237d35136 < momma/SM < mommie/M 39239d35137 < monadic 39244c35142 < monarchist/SM --- > monarchist/MS 39255c35153 < monetarist/SM --- > monetarist/MS 39261d35158 < moneychangers 39264,39265c35161 < moneylender/MS < moneyless --- > moneylender/SM 39274,39275d35169 < monicker/MS < monied 39282d35175 < monitored/U 39286c35179 < monkeyshine/MS --- > monkeyshine/SM 39291c35184 < monochrome/SM --- > monochrome/MS 39294c35187 < monocotyledon/MS --- > monocotyledon/SM 39297d35189 < monoculture 39309d35200 < monolayers 39314d35204 < monolog/SM 39317c35207 < monologuist/MS --- > monologuist/SM 39322,39324d35211 < monomeric < monomial/S < monomolecular 39327d35213 < monophthongs 39329d35214 < monopole/S 39337d35221 < monostable 39346,39347c35230 < monotonicity < monotonous/YP --- > monotonous/PY 39381d35263 < moonrise 39394c35276 < moot/DRSG --- > moot/DSG 39399a35282,35283 > mopier > mopiest 39404d35287 < mopy/RT 39430,39431c35313 < moribund/Y < moribundity --- > moribund 39446,39449c35328,35329 < morphism/S < morphogenesis < morphological/Y < morphology/SM --- > morphological > morphology/M 39456,39458c35336,35338 < mortarboard/MS < mortgage/AGDSM < mortgageable --- > mortarboard/SM > mortgage's > mortgage/AGDS 39460d35339 < mortgager/MS 39462d35340 < mortice/DSMG 39479c35357,35358 < mote/KCXSVNM --- > mote's > mote/KCXSVN 39486c35365 < motherfucker/SM! --- > motherfucker/MS! 39503c35382 < motivation/MS --- > motivation/SM 39526c35405 < motorsport/MS --- > motorsport/SM 39532,39533d35410 < moulder/DGS < moult/SGMD 39535c35412 < mount/AEDMGS --- > mount/EASGMD 39538c35415 < mountaineer/GMDS --- > mountaineer/SMDG 39542c35419 < mountaintop/MS --- > mountaintop/SM 39544c35421 < mounted/UC --- > mounted/U 39546,39547c35423 < mounties < mounting/MS --- > mounting/SM 39548a35425 > mourned/U 39551,39552d35427 < mournfuller < mournfullest 39564d35438 < moustachioed 39569d35442 < mouthorgan 39584,39585c35457 < moving/U < movingly --- > moving/Y 39597c35469 < much/MP --- > much/M 39604d35475 < mucosa 39615d35485 < mudflow/S 39617d35486 < mudlarks 39637a35507 > muggle/MS 39650c35520 < muleskinner/SM --- > muleskinner/MS 39661a35532 > multi 39663,39664c35534 < multichannel < multicolor/D --- > multicolored 39674,39675d35543 < multifunction < multifunctional 39677c35545 < multilayer --- > multilayered 39682,39685c35550,35551 < multimeter < multimillion < multimillionaire/MS < multinational/MS --- > multimillionaire/SM > multinational/SM 39687c35553 < multiphase --- > multiplayer/M 39691,39692c35557 < multiplexor/MS < multiplicand/SM --- > multiplicand/MS 39697c35562 < multiply/NXZGDRS --- > multiply/NZGDRSX 39700d35564 < multiprogramming 39705c35569 < multitask/SG --- > multitask/GS 39709d35572 < multivalued 39711c35574,35576 < multivitamin/SM --- > multiverse/SM > multivitamin/MS > multiyear 39713c35578 < mumble/JMZGDRS --- > mumble/MZGDRS 39719c35584 < mummify/NGDS --- > mummify/GNDS 39723c35588 < munch/ZGDRS --- > munch/GDS 39733d35597 < muons 39780c35644 < muskellunge/SM --- > muskellunge/MS 39815d35678 < mutilated/U 39833d35695 < muzzled/U 39836d35697 < mySimon 39841,39842c35702 < mynah/M < mynahs --- > mynah/MS 39843a35704 > myocardium 39853c35714 < mysterious/YP --- > mysterious/PY 39866,39867c35727,35728 < mythologist/MS < mythologize/GDS --- > mythologist/SM > mythologize/DSG 39870a35732,35733 > métier/MS > mêlée/MS 39888c35751 < nagware/S --- > nagware 39897c35760,35761 < naked/TPRY --- > naiveté/M > naked/PY 39899c35763,35764 < name/AGDSM --- > name's > name/AGDS 39908,39910c35773 < namespace/MS < naming/S < nan/S --- > namespace/SM 39914d35776 < nanometer/S 39916c35778 < nanotechnology/S --- > nanotechnology/SM 39941c35803 < nark/MDSG --- > nark 39946d35807 < narratology 39967c35828 < nationalist/MS --- > nationalist/SM 39971,39973c35832,35833 < nationalization/SM < nationalize/CGDS < nationalized/A --- > nationalization/MS > nationalize/CDSG 39976c35836 < native/MSY --- > native/MYS 39983c35843,35844 < natural/UPYM --- > natural's > natural/UPY 39985c35846 < naturalist/MS --- > naturalist/SM 39988c35849 < naturalize/GDS --- > naturalize/DSG 39991c35852,35853 < nature/CSM --- > nature's > nature/CS 40001c35863 < nauseous/YP --- > nauseous/PY 40009c35871 < navigable/U --- > navigable 40019c35881 < neanderthal/SM --- > neanderthal/MS 40023d35884 < nearly/TR 40024a35886 > nearshore 40026c35888 < nearsighted/PY --- > nearsighted/YP 40035,40036c35897 < nebulosity < nebulous/YP --- > nebulous/PY 40040c35901 < necessitate/GDS --- > necessitate/DSG 40051c35912 < necromancer/MS --- > necromancer/SM 40053d35913 < necromantic 40057d35916 < necropsy 40069d35927 < needlecraft 40071c35929 < needless/PY --- > needless/YP 40078c35936 < nefarious/PY --- > nefarious/YP 40088c35946 < neglectful/PY --- > neglectful/YP 40090d35947 < neglige/SM 40094d35950 < negligibility 40120a35977 > neocon/S 40128c35985 < neophilia/S --- > neophilia 40144,40145c36001,36003 < nerve/UDSGM < nerveless/PY --- > nerve's > nerve/UDSG > nerveless/YP 40151c36009 < nest/BMDSG --- > nest/MDSG 40155a36014 > netbook/MS 40160c36019,36020 < nett/DRZG --- > netted > netter/S 40173d36032 < neurobiology 40175c36034 < neurologist/MS --- > neurologist/SM 40179,40180c36038,36040 < neurophysiology/M < neuroscience/MS --- > neurophysiology's > neuroscience's > neurosciences 40212c36072 < newish --- > newfound 40226c36086 < newsletter/SM --- > newsletter/MS 40233a36094 > newspeak 40244c36105 < newsworthy/PRT --- > newsworthy/P 40260c36121 < nickelodeon/MS --- > nickelodeon/SM 40263d36123 < nicknack/SM 40269d36128 < niftily 40270a36130 > nigga/S 40272a36133 > niggaz 40287,40288c36148,36149 < nightie/SM < nightingale/MS --- > nightie/M > nightingale/SM 40317d36177 < ninepence 40348,40349d36207 < nitric < nitride/S 40358d36215 < nitrous 40391c36248 < noisemaker/SM --- > noisemaker/MS 40400,40401c36257,36258 < nominate/ACGNVDS < nomination/CSMA --- > nominate/CASDXVNG > nomination/ACM 40418c36275 < nonagenarian/SM --- > nonagenarian/MS 40424c36281 < nonappearance/SM --- > nonappearance/MS 40442c36299 < nonclerical/SM --- > nonclerical/MS 40447c36304 < noncombatant/SM --- > noncombatant/MS 40449c36306 < noncommercial/SM --- > noncommercial/MS 40458c36315 < nonconductor/SM --- > nonconductor/MS 40461c36318 < nonconformist/SM --- > nonconformist/MS 40475c36332 < noncriminal/MS --- > noncriminal/SM 40487c36344 < nondescript/Y --- > nondescript 40495c36352 < nondrinker/SM --- > nondrinker/MS 40506c36363 < nonequivalent/SM --- > nonequivalent/MS 40516c36373 < nonexplosive/SM --- > nonexplosive/MS 40545c36402 < nonintellectual/SM --- > nonintellectual/MS 40551a36409 > nonissue 40581,40582c36439 < nonparallel/SM < nonparametric --- > nonparallel/MS 40586c36443 < nonpartisan/MS --- > nonpartisan/SM 40588c36445 < nonpayment/MS --- > nonpayment/SM 40605,40606c36462,36463 < nonprofessional/MS < nonprofit/SBM --- > nonprofessional/SM > nonprofit/SMB 40614c36471 < nonreciprocal/MS --- > nonreciprocal/SM 40625c36482 < nonresident/SM --- > nonresident/MS 40631c36488 < nonreturnable/SM --- > nonreturnable/MS 40642c36499 < nonsense/MS --- > nonsense/M 40653c36510 < nonspecialist/SM --- > nonspecialist/MS 40656c36513 < nonspiritual/MS --- > nonspiritual/SM 40659c36516 < nonstarter/SM --- > nonstarter/MS 40666c36523 < nonsupport/MG --- > nonsupport/GM 40705c36562 < noon/MS --- > noon/M 40713,40716c36570,36571 < noradrenalin < noradrenaline < norm/MDS < normal/MYS --- > norm/MS > normal/MY 40719,40720c36574,36575 < normalization/MS < normalize/DRSBZG --- > normalization/M > normalize/DSG 40733d36587 < northmen 40765d36618 < notational/Y 40767c36620,36621 < note/FCSDGM --- > note's > note/FCSDG 40784c36638 < notify/NXDRSZG --- > notify/NDRSXZG 40791a36646 > nought/MS 40793d36647 < nounal 40802,40803c36656 < novelistic < novelization/SM --- > novelization/MS 40817c36670 < noxious/YP --- > noxious 40826d36678 < nuclease 40828d36679 < nucleated/A 40835c36686,36687 < nucleotide/S --- > nucleoside > nucleotide 40851c36703,36704 < number/ASDGM --- > number's > number/ASDG 40853d36705 < numbering/S 40855,40857d36706 < numberplate < numbers/S < numbing/Y 40868,40869c36717 < numerological < numerologist/SM --- > numerologist/MS 40875c36723 < numismatist/MS --- > numismatist/SM 40882c36730 < nurseling/MS --- > nurselings 40893d36740 < nutation 40906c36753 < nutritionist/MS --- > nutritionist/SM 40918,40919c36765 < nybble/DSG < nyetwork/S --- > nybble/S 40925d36770 < nympholepsy 40927c36772 < nymphomaniac/MS --- > nymphomaniac/SM 40928a36774 > née 40964c36810 < obfuscate/GNDSX --- > obfuscate/GNXDS 40966d36811 < obfuscatory 40972,40974c36817,36819 < objectify/GDSN < objection/BSM < objectionable/P --- > objectify/NGDS > objection/SMB > objectionable/U 40976c36821 < objective/PSMY --- > objective/SMYP 40979d36823 < objectless 40990,40992c36834,36835 < obliging/U < obligingly < oblique/DSMYP --- > obliging/Y > oblique/SMYP 40995c36838 < obliterate/GNDS --- > obliterate/DSGN 40998c36841 < oblivious/PY --- > oblivious/YP 41009,41011c36852,36853 < obscurantist/MS < obscuration < obscure/DRSLPYTG --- > obscurantist/SM > obscure/DRSYTG 41017,41018d36858 < observability < observable/S 41020c36860 < observance/SM --- > observance/MS 41022,41023c36862,36863 < observation/MS < observational/Y --- > observation/SM > observational 41031c36871 < obsessive/SMYP --- > obsessive/PSMY 41041c36881 < obstetrician/MS --- > obstetrician/SM 41045c36885 < obstreperous/PY --- > obstreperous/YP 41049c36889 < obstruction/MS --- > obstruction/SM 41051c36891 < obstructionist/SM --- > obstructionist/MS 41059c36899 < obtrusive/UYP --- > obtrusive/UPY 41072d36911 < occipital 41076c36915 < occult/MS --- > occult/M 41079c36918 < occupancy/SM --- > occupancy/M 41092c36931 < oceanfront/MS --- > oceanfront/SM 41100c36939 < och/ZR --- > och/R 41105,41106d36943 < octahedral < octahedron 41109d36945 < octant 41113,41114c36949 < octette/MS < octogenarian/MS --- > octogenarian/SM 41144d36978 < offcuts 41148c36982,36983 < offensive/IYPM --- > offensive's > offensive/IPY 41155c36990 < offhanded/YP --- > offhanded/PY 41158c36993 < officeholder/MS --- > officeholder/SM 41160,41161c36995 < officership/S < official/MYSP --- > official/MYS 41168c37002 < officious/YP --- > officious/PY 41178c37012 < offshore --- > offshore/G 41184c37018 < oft/TNR --- > oft 41193d37026 < ogrish 41196d37028 < ohmic 41210d37041 < oilseed 41217c37048 < okay/MSG --- > okay/MDSG 41220d37050 < olde 41228d37057 < olefin 41238c37067 < oligonucleotide --- > oligonucleotide/S 41241c37070 < olivine --- > olé/M 41246a37076 > omelette/MS 41256d37085 < omnidirectional 41269c37098 < oncologist/MS --- > oncologist/SM 41284d37112 < only/T 41298c37126 < ontological/Y --- > ontological 41301c37129 < onward/S --- > onward 41306d37133 < oolitic 41317a37145 > opcode/S 41340c37168 < ophthalmic/S --- > ophthalmic 41347d37174 < opioid 41354c37181 < opportunist/MS --- > opportunist/SM 41358c37185 < oppose/DSGRB --- > oppose/DRSBG 41362d37188 < oppositional 41364,41365c37190,37191 < oppression/SM < oppressive/PY --- > oppression/M > oppressive/YP 41377d37202 < optimality 41383,41384c37208 < optimize/DRSZG < optimized/U --- > optimize/DRSG 41388,41389d37211 < optionality < optoelectronic 41403d37224 < orangutang/MS 41414a37236 > orc/S 41418c37240 < orchestrate/XGNDS --- > orchestrate/DSXGN 41420d37241 < orchestrator 41426d37246 < ordered/U 41428d37247 < orderless 41433d37251 < ordinands 41436c37254 < ordinary/RSMPT --- > ordinary/SMP 41445d37262 < organdie/M 41453d37269 < organizable 41465,41466c37281,37282 < orient/AEDGSM < orientable --- > orient's > orient/AEDGS 41470,41471d37285 < orientated/A < orientates/A 41483c37297 < originator/MS --- > originator/SM 41495c37309 < ornithologist/SM --- > ornithologist/MS 41508c37322 < orthogonal/Y --- > orthogonal 41511c37325 < orthographical/Y --- > orthographically 41513d37326 < orthonormal 41517d37329 < orthorhombic 41519c37331 < oscillate/XGNDS --- > oscillate/GNDSX 41521c37333 < oscillator/MS --- > oscillator/SM 41532c37344 < ossify/GNDS --- > ossify/NGDS 41566c37378 < outbalance/GDS --- > outbalance/DSG 41581c37393 < outcropping/MS --- > outcropping/SM 41585c37397 < outdistance/DSG --- > outdistance/GDS 41626c37438 < outlandish/YP --- > outlandish/PY 41630d37441 < outlawry 41633d37443 < outlier/S 41638c37448 < outmaneuver/SGD --- > outmaneuver/GDS 41643,41644c37453,37454 < outpatient/SM < outperform/DSG --- > outpatient/MS > outperform/GSD 41666a37477 > outré 41675c37486 < outsize/MDS --- > outsize/MS 41683c37494 < outspoken/PY --- > outspoken/YP 41689c37500 < outstretch/GDS --- > outstretch/DSG 41727d37537 < overallocation 41736c37546 < overbalance/DSMG --- > overbalance/MGDS 41751c37561 < overburden/SDG --- > overburden/GSD 41755c37565 < overcapitalize/GDS --- > overcapitalize/DSG 41759,41761c37569,37571 < overcharge/MGDS < overclock/SDG < overcloud/SDG --- > overcharge/DSMG > overclock/GD > overcloud/SGD 41764,41765c37574 < overcommitment/S < overcompensate/GNDS --- > overcompensate/DSGN 41767,41768d37575 < overcomplexity < overcomplicated 41774c37581 < overcrowd/GSD --- > overcrowd/SDG 41778,41779c37585 < overdetermined < overdevelop/SGD --- > overdevelop/SDG 41799c37605 < overemphasize/DSG --- > overemphasize/GDS 41801c37607 < overestimate/DSMGN --- > overestimate/MGNDS 41803,41805c37609,37611 < overexcite/GDS < overexercise/DSG < overexert/GSD --- > overexcite/DSG > overexercise/GDS > overexert/SDG 41809c37615 < overextend/GDS --- > overextend/DGS 41813d37618 < overfishing 41838d37642 < overincredulous 41842d37645 < overinflated 41863,41864c37666 < overmaster/SGD < overmatching --- > overmaster/SDG 41874c37676 < overpay/LGS --- > overpay/GS 41878,41879c37680 < overpopulous < overpower/GSD --- > overpower/SDG 41883d37683 < overpressure 41885,41886c37685,37686 < overprint/GSMD < overproduce/DSG --- > overprint/SMDG > overproduce/GDS 41892c37692 < overreach/DSG --- > overreach/GDS 41896d37695 < overrepresented 41904d37702 < oversampled 41915d37712 < oversensitivity 41917c37714,37715 < overshadow/GDS --- > overshadow/DSG > overshare/DSG 41919c37717 < overshoot/SG --- > overshoot/GS 41924,41926c37722,37724 < oversimplify/NXDSG < oversize < oversleep/SG --- > oversimplify/DSNGX > oversize/D > oversleep/GS 41931c37729 < overspend/GS --- > overspend/SG 41933d37730 < overspill/GSM 41936,41937c37733,37734 < overstate/LDSG < overstatement/SM --- > overstate/DSLG > overstatement/MS 41944,41945c37741 < overstress/D < overstretch/DSG --- > overstretch/GDS 41951c37747 < oversupply/DSG --- > oversupply/GDS 41953,41954c37749,37750 < overt/YP < overtake/ZGRS --- > overt/Y > overtake/GS 41956a37753,37754 > overthink/SG > overthought 41958c37756 < overthrow/GSM --- > overthrow/SMG 41960d37757 < overtightened 41973c37770 < overwhelm/GSD --- > overwhelm/SGD 41996d37792 < owned/U 41998,42001c37794,37795 < ownership/SM < ox/MNS < oxalate < oxalic --- > ownership/M > ox/MN 42030d37823 < pacemen 42032c37825 < pacesetter/MS --- > pacesetter/SM 42035c37828 < pachysandra/SM --- > pachysandra/MS 42044,42046c37837,37840 < pack/UADSGM < packable < package/AGDSM --- > pack's > pack/AUGSD > package's > package/AGDS 42051,42053c37845,37846 < packhorse < packing/M < packinghouse/MS --- > packing's > packinghouse/SM 42068d37860 < paeony 42075d37866 < pageful 42089c37880 < painkiller/SM --- > painkiller/MS 42112,42114d37902 < palaeolithic < palaeontologist/S < palaeontology 42124a37913,37914 > palazzi > palazzo 42128,42129c37918 < paleographer/SM < paleographic --- > paleographer/MS 42132,42133c37921 < paleontological < paleontologist/MS --- > paleontologist/SM 42138c37926 < palimpsest/SM --- > palimpsest/MS 42150c37938 < palliative/MS --- > palliative/SM 42166c37954 < palpitate/GNDSX --- > palpitate/XGNDS 42171d37958 < paludal 42175,42176c37962,37963 < pamphleteer/SM < pan/SMD --- > pamphleteer/MS > pan/SM 42184a37972 > pancreatitis 42190c37978 < pane/MS --- > pane/KM 42194a37983 > panes 42196d37984 < pangolin 42202,42204c37990 < panicky/TR < panier/MS < panjandrum --- > panicky 42222,42223d38007 < pantiled < pantiles 42225,42226d38008 < pantograph < pantographs 42229c38011 < pantomimist/MS --- > pantomimist/SM 42236d38017 < panzer 42253c38034 < paperhanger/MS --- > paperhanger/SM 42273d38053 < paraboloid/S 42276c38056 < parachutist/SM --- > parachutist/MS 42292d38071 < paralinguistic 42296,42299c38075,38077 < parallelepiped < parallelism/SM < parallelization/SM < parallelize/SGD --- > parallelism/MS > parallelization/MS > parallelize/GDS 42304d38081 < paralytically 42307,42308d38083 < paramagnetic < paramagnetism 42312c38087 < paramedical/SM --- > paramedical/MS 42315,42317d38089 < parametrically < parametrization < parametrize/DS 42328c38100 < paraphrase/MGDS --- > paraphrase/DSMG 42330c38102 < paraplegic/MS --- > paraplegic/SM 42332c38104 < parapsychologist/SM --- > parapsychologist/MS 42334a38107 > parasailing 42340,42341d38112 < parasitologist < parasitology 42364d38134 < parenteral 42367c38137 < parenthesize/GDS --- > parenthesize/DSG 42379c38149 < parimutuel/SM --- > parimutuel/MS 42382c38152 < parishioner/SM --- > parishioner/MS 42395c38165 < parliamentarian/MS --- > parliamentarian/SM 42398d38167 < parlormaid 42404,42405d38172 < parochiality < parodied/U 42420c38187 < parse/DRSJZG --- > parse/DRSG 42428c38195,38196 < part/CDSGM --- > part's > part/CDSG 42436,42437c38204,38205 < participant/MS < participate/GNVDS --- > participant/SM > participate/DSGN 42439c38207 < participator/SM --- > participator/MS 42442c38210 < participle/SM --- > participle/MS 42446d38213 < particularism 42450c38217 < particulate/MS --- > particulate/SM 42454c38221,38222 < partition/ADGMS --- > partition/GMDS > partitions/A 42455a38224 > partizan/SM 42471c38240 < passageway/SM --- > passageway/MS 42483,42484c38252 < passionateness < passionflower/MS --- > passionflower/SM 42486d38253 < passivated 42489,42490d38255 < passivisation < passivise/DSG 42495,42496c38260 < passmark < passover --- > passphrase/S 42498a38263 > passé 42503d38267 < pasted/U 42507c38271 < pasteurize/DRSZG --- > pasteurize/ZGDRS 42515d38278 < pastis 42518d38280 < pastoralism 42526c38288 < pat/SZMR --- > pat/SM 42528d38289 < patchable 42537c38298 < patent/GMDYBS --- > patent/GMDYS 42544c38305 < paternoster/SM --- > paternoster/MS 42551d38311 < pathogenesis 42554,42555c38314,38315 < pathologist/MS < pathology/SM --- > pathologist/SM > pathology/M 42571c38331 < patriarchate/SM --- > patriarchate/MS 42592d38351 < patronization 42601d38359 < patten/S 42604d38361 < patternless 42623c38380 < pawnbroker/SM --- > pawnbroker/MS 42627c38384,38385 < pay/ASGBLM --- > pay's > pay/ASGBL 42643c38401,38402 < payware/S --- > paywall/SM > payware 42651,42652d38409 < peacefuller < peacefullest 42654c38411 < peacekeeper/MS --- > peacekeeper/SM 42656c38413 < peacemaker/SM --- > peacemaker/MS 42665c38422 < peaky/P --- > peaky 42671d38427 < peartrees 42674c38430 < peashooter/MS --- > peashooter/SM 42678c38434 < pebbly/TR --- > pebbly 42689c38445 < peculate/GNXDS --- > peculate/GNDS 42691c38447 < peculator/M --- > peculator/SM 42695d38450 < pedagog/SM 42713c38468 < pedestrianize/DSG --- > pedestrianize/GDS 42722,42723d38476 < pedlar/MS < pedology 42767d38519 < pellmell 42790c38542 < penetrate/XDSGNV --- > penetrate/DSGNVX 42807d38558 < penlite/MS 42817c38568 < pennyweight/SM --- > pennyweight/MS 42830,42832c38581,38582 < pentameter/MS < pentasyllabic < pentathlete/SM --- > pentameter/SM > pentathlete/MS 42834,42835d38583 < pentatonic < pentecostal 42838c38586 < penultimate/SMY --- > penultimate/SM 42841c38589 < penurious/YP --- > penurious/PY 42849d38596 < peperoni 42853c38600 < peppermint/MS --- > peppermint/SM 42863c38610 < perambulate/DSGNX --- > perambulate/XGNDS 42865c38612 < perambulator/SM --- > perambulator/MS 42872d38618 < perceptibility 42875c38621 < perception/MS --- > perception/SM 42877c38623 < perceptive/YP --- > perceptive/PY 42879d38624 < percepts 42883d38627 < perchlorate 42889d38632 < percuss/GVDS 42891,42892c38634,38635 < percussionist/SM < percussive/Y --- > percussionist/MS > percussive 42895c38638 < peregrinate/GNXDS --- > peregrinate/DSXGN 42899c38642 < peremptory/P --- > peremptory 42908c38651 < perfectionist/MS --- > perfectionist/SM 42912c38655 < perforate/GNDSX --- > perforate/GNXDS 42915c38658 < perform/BSDRZG --- > perform/SDRZG 42916a38660 > performative 42924d38667 < perfused 42928d38670 < periastron 42929a38672,38673 > pericardial > pericarditis 42932d38675 < periglacial 42948,42949c38691,38692 < peripatetic/SM < peripheral/SMY --- > peripatetic/MS > peripheral/MYS 42975c38718 < permalink/MS --- > permalink/SM 42979d38721 < permanganate 42984d38725 < permissibility 42987c38728 < permission/SM --- > permission/MS 42994,42995c38735 < permittivity < permutation/MS --- > permutation/SM 42997c38737 < pernicious/PY --- > pernicious/YP 42999d38738 < pernickety 43001d38739 < peroxidase 43003c38741 < perpendicular/MYS --- > perpendicular/SMY 43005c38743 < perpetrate/GNDS --- > perpetrate/DSGN 43007c38745 < perpetrator/SM --- > perpetrator/MS 43009c38747 < perpetuate/GNDS --- > perpetuate/DSGN 43016,43017c38754 < perry < persecute/GNDSX --- > persecute/GNXDS 43022d38758 < persevering/Y 43030c38766 < persona/M --- > persona/SM 43036,43038c38772 < personalization/C < personalize/CGDS < personalized/U --- > personalize/CDSG 43041c38775 < personify/XDSGN --- > personify/GDSNX 43043c38777 < perspective/SM --- > perspective/MS 43048c38782 < perspicuous/Y --- > perspicuous 43055c38789 < persuasive/YP --- > persuasive/PY 43065c38799 < perturbation/MS --- > perturbation/SM 43086c38820 < pessimal/SDYG --- > pessimal 43106d38839 < pethidine 43110c38843 < petitioner/MS --- > petitioner/M 43113c38846 < petrify/NDSG --- > petrify/DSG 43115,43117c38848 < petrodollar/SM < petrographic < petrographical --- > petrodollar/MS 43121d38851 < petrological 43134c38864 < pettish/YP --- > pettish/Y 43160d38889 < phantasy/GDSM 43167c38896 < pharmaceutical/MS --- > pharmaceutical/SM 43169c38898 < pharmacist/SM --- > pharmacist/MS 43171c38900 < pharmacologist/MS --- > pharmacologist/SM 43174c38903 < pharmacopoeia/SM --- > pharmacopoeia/MS 43186,43188c38915 < phenol/MS < phenolic < phenolphthalein --- > phenol/M 43192c38919 < phenomenological/Y --- > phenomenological 43195,43196c38922 < phenotype/S < phenylalanine --- > phenotype 43201c38927 < philander/DRSZG --- > philander/ZGDRS 43206c38932 < philanthropist/SM --- > philanthropist/MS 43209c38935 < philatelist/SM --- > philatelist/MS 43213c38939 < philistine/SM --- > philistine/MS 43219c38945 < philosopher/SM --- > philosopher/MS 43222c38948 < philosophize/ZGDRS --- > philosophize/DRSZG 43226d38951 < philtre/MS 43230,43232c38955,38956 < phlebotomist/SM < phlebotomize/SGD < phlebotomy --- > phlebotomist/MS > phlebotomize/GDS 43237d38960 < phlogiston 43252d38974 < phoneticist 43254c38976,38977 < phoney/GMDS --- > phoneyed > phoneying 43263c38986 < phonologist/SM --- > phonologist/MS 43265d38987 < phonon 43268d38989 < phosphatase 43269a38991 > phosphodiesterase 43277a39000 > photobomb/DGS 43279,43280d39001 < photochemical/Y < photochemistry 43285c39006 < photoengrave/ZGDRSJ --- > photoengrave/DRSJZG 43298,43300c39019 < photojournalist/MS < photolysis < photolytic --- > photojournalist/SM 43302,43305d39020 < photometric < photometrically < photometry < photomultiplier 43307d39021 < photoreceptor 43309d39022 < photosphere 43317c39030,39031 < photosynthetically --- > phototropic > phototropism 43320d39033 < photovoltaic 43322c39035,39036 < phrase/AGDSM --- > phrase's > phrase/AGDS 43326,43327c39040 < phreaking/S < phrenological/Y --- > phreaking 43332d39044 < phylogenetic 43349c39061 < physiologist/SM --- > physiologist/MS 43351c39063 < physiotherapist/SM --- > physiotherapist/MS 43354d39065 < phytoplankton 43358d39068 < pianistic 43368a39079 > picante 43374d39084 < pickaback 43376d39085 < pickaxe/M 43382c39091 < pickpocket/SMG --- > pickpocket/SM 43384c39093 < picky/TRP --- > picky/PTR 43389d39097 < picoseconds 43391d39098 < pictogram 43393d39099 < pictographic 43397c39103 < picturesque/YP --- > picturesque/PY 43406,43407c39112 < piecewise < piecework/ZMR --- > piecework/MRZ 43408a39114 > piecrust/SM 43411c39117 < pierce/JZGDRS --- > pierce/JGDS 43418c39124 < pigeonhole/MGDS --- > pigeonhole/DSMG 43431d39136 < pigmy/SM 43436c39141 < pigtail/MDS --- > pigtail/MS 43439a39145 > pikestaves 43441d39146 < pilaff/MS 43443d39147 < pilau/SM 43453c39157 < pill/MS --- > pill/MDSG 43476,43477c39180,39181 < pincer/MDS < pinch/GMDRS --- > pincer/MS > pinch/GMDS 43479,43480c39183,39184 < pine/AGDSM < pineal --- > pine's > pine/AGDS 43496c39200 < pinnacle/DSM --- > pinnacle/SM 43502d39205 < pinocle/M 43539a39243 > pirozhki/M 43566d39269 < piths 43571,43572d39273 < pitifuller < pitifullest 43587,43588c39288 < pixie/M < pixy/SM --- > pixie/MS 43594a39295,39296 > piñata/MS > piñon/SM 43605c39307,39308 < place/EAGLDSM --- > place's > place/AESDLG 43608c39311 < placeholder/SM --- > placeholder/MS 43611d39313 < placemen 43620,43622c39322,39324 < plagiarism/MS < plagiarist/MS < plagiarize/ZGDRS --- > plagiarism/SM > plagiarist/SM > plagiarize/DRSZG 43645c39347,39348 < plane/CGDSM --- > plane's > plane/CGDS 43649c39352 < planetarium/MS --- > planetarium/SM 43651,43652d39353 < planetesimals < planetoids 43664c39365 < plantation/SM --- > plantation/MS 43670,43671c39371 < plasma/SM < plasmid/S --- > plasma/M 43675d39374 < plasterwork 43677d39375 < plasticine 43679c39377,39378 < plasticize/DSZG --- > plasticize/DSG > plastique 43697a39397 > platys 43703d39402 < playability/U 43720d39418 < playings 43756c39454 < plenteous/Y --- > plenteous 43764d39461 < pleural 43787c39484 < plotted/A --- > plotted 43791c39488 < plow/ZGMDS --- > plow/GMDS 43795,43796c39492,39494 < ploy/SM < pluck/MDRSG --- > ploy's > ploy/S > pluck/MDSG 43800,43802c39498,39501 < plug/USM < plugged/UA < plugging/UA --- > plug's > plug/US > plugged/U > plugging/U 43804c39503 < plugin/MS --- > plugin/SM 43808d39506 < plumbago 43812a39511,39512 > plummer > plummest 43840c39540 < ply/AZGDSM --- > ply/AGDSM 43843c39543 < pneumatic/S --- > pneumatic 43844a39545,39547 > pneumococcal > pneumococci > pneumococcus 43857c39560 < podcast --- > podcast/SM 43860d39562 < podgy 43872d39573 < pogo 43877d39577 < poikilothermic 43882c39582 < pointed/PY --- > pointed/Y 43886c39586 < pointless/YP --- > pointless/PY 43901c39601 < polarization/CMS --- > polarization/CM 43911d39610 < poleward/S 43918c39617 < policyholder/SM --- > policyholder/MS 43922c39621 < polish/ZGMDRSJ --- > polish/ZGMDRS 43931c39630 < politician/MS --- > politician/SM 43939c39638 < poll/XGMDNS --- > poll/GMDNS 43945c39644 < pollinator/MS --- > pollinator/SM 43948c39647 < pollock/MS --- > pollock/M 43951c39650 < pollute/ZGNDRSX --- > pollute/ZGNDRS 43961a39661,39662 > polyacrylamide > polyamory/S 43964,43967d39664 < polyatomic < polycarbonate < polychromatic < polychrome 43969,43970d39665 < polycrystalline < polycyclic 43986d39680 < polymerase/S 43991d39684 < polymorphism/S 43993,43994c39686,39687 < polynomial/SMY < polynucleotide/MS --- > polynomial/MS > polynucleotide/SM 43996c39689 < polypeptide/MS --- > polypeptide's 44000c39693 < polysaccharides --- > polys 44005c39698 < polytechnic/SM --- > polytechnic/MS 44010d39702 < polytopes 44012c39704 < polyurethane/SM --- > polyurethane/MS 44024d39715 < pompon/SM 44029d39719 < poncey 44035c39725 < ponderous/PY --- > ponderous/YP 44043c39733 < pontificate/MGNDSX --- > pontificate/DSMG 44072d39761 < poppadum/S 44082c39771 < popularization/SM --- > popularization/M 44085d39773 < populated/U 44116c39804,39805 < port/CAEGDSM --- > port's/A > port/CAEGDS 44126,44127c39815 < porterage < porterhouse/MS --- > porterhouse/SM 44133a39822 > portière/MS 44136c39825 < portmanteau/SM --- > portmanteau/MS 44138c39827 < portraitist/MS --- > portraitist/SM 44143c39832,39833 < pose/CAKEGDSM --- > pose's/A > pose/CAKEGDS 44148,44154c39838,39842 < position/ACKESM < positionable < positional/KC < positionally < positioned/KA < positioning/AK < positive/PMYTRS --- > position/CKEMS > positional/K > positioned/K > positioning/K > positive/MYPS 44158d39845 < positivity 44164c39851 < possessive/SPMY --- > possessive/SMYP 44168c39855 < possible/RSMT --- > possible/SM 44177a39865 > postcolonial 44180c39868 < postdoc --- > postdoc/MS 44185,44186c39873 < postfixes < postgraduate/MS --- > postgraduate/SM 44213c39900 < postponement/MS --- > postponement/SM 44240c39927 < potentiometer/S --- > potentiate/GDS 44267c39954,39955 < pound/KDSGM --- > pound's > pound/KDSG 44270c39958 < pour/GDSBJ --- > pour/GDSJ 44280c39968 < powerful/YP --- > powerful/Y 44282c39970 < powerless/YP --- > powerless/PY 44286d39973 < poxy 44291c39978 < practicability/SM --- > practicability/M 44298,44299c39985 < practitioner/MS < praesidium/S --- > practitioner/SM 44305c39991 < pragmatist/SM --- > pragmatist/MS 44328d40013 < prayerbook 44330c40015 < preach/DRSZGJL --- > preach/DRSZGL 44334,44335c40019 < preadolescence/MS < preallocate --- > preadolescence/SM 44337,44338d40020 < preamp < preamplifier 44342,44343d40023 < preauthorize < prebendary 44346c40026 < precarious/YP --- > precarious/PY 44352c40032 < precedence/MS --- > precedence/M 44356,44357d40035 < precess/GD < precession 44360c40038 < precious/PY --- > precious/YP 44363,44364c40041,40042 < precipitant/SM < precipitate/DSXMYGN --- > precipitant/MS > precipitate/XMYGNDS 44368c40046 < precise/XDRSYTGNP --- > precise/DRSYTGNP 44371d40048 < preclinical 44374c40051 < precocious/PY --- > precocious/YP 44377c40054 < precognition/SM --- > precognition/M 44380,44383c40057,40059 < precomputed < preconceive/DSG < preconception/MS < precondition/GSMD --- > preconceive/GDS > preconception/SM > precondition/MDGS 44387c40063 < predate/XDSGN --- > predate/DSG 44392,44394c40068,40069 < predecessor/MS < predeclared < predefine/DG --- > predecessor/SM > predefined 44399c40074 < predetermine/DRSZG --- > predetermine/ZGDRS 44410,44411c40085 < predicted/U < prediction/MS --- > prediction/SM 44413c40087 < predigest/DSG --- > predigest/GDS 44416c40090 < predisposition/SM --- > predisposition/MS 44419c40093 < predominate/DSYG --- > predominate/YGDS 44433c40107 < prefabricate/GNDS --- > prefabricate/DSGN 44453a40128 > prehistorian/S 44457c40132,40133 < prejudge/GDS --- > prehuman > prejudge/LGDS 44459c40135 < prejudgment/MS --- > prejudgment/SM 44470d40145 < preloaded 44473,44474c40148 < premature/YP < prematurity --- > premature/Y 44477c40151 < premeditate/GNDS --- > premeditate/DSGN 44483c40157 < premiership/SM --- > premiership/MS 44485d40158 < premiss/SM 44489c40162 < premonition/SM --- > premonition/MS 44491a40165 > prenup/SM 44493c40167 < preoccupation/MS --- > preoccupation/SM 44496c40170 < preordain/DSG --- > preordain/GDS 44501,44502c40175 < preparation/MS < preparative --- > preparation/SM 44504c40177 < prepare/ZGDRS --- > prepare/GDS 44509d40181 < preplanned 44513c40185 < preposition/MS --- > preposition/SM 44523d40194 < preprocessed 44525c40196 < prepubescent/MS --- > prepubescent/SM 44528,44529c40199,40200 < prerecord/SGD < preregister/DGS --- > prerecord/GSD > preregister/SGD 44531c40202 < prerequisite/SM --- > prerequisite/MS 44538c40209 < preschool/SMRZ --- > preschool/SZMR 44546,44547d40216 < prescriptivism < prescriptivist 44549d40217 < preselect/SD 44554d40221 < presentational/A 44556c40223 < presentiment/MS --- > presentiment/SM 44566c40233 < preshrink/SG --- > preshrink/GS 44575c40242,40243 < press/ACGSDM --- > press's > press/ACGSD 44584,44586c40252,40253 < pressurize/CDSG < pressurized/U < pressurizer/MS --- > pressurize/CGDS > pressurizer/SM 44588,44589d40254 < prestidigitator < prestidigitatorial 44596,44597c40261,40262 < presumptive/Y < presumptuous/PY --- > presumptive > presumptuous/YP 44605d40269 < pretending/U 44616,44617d40279 < pretreated < pretreatment/S 44626,44627c40288,40289 < prevalent/Y < prevaricate/GNXDS --- > prevalent > prevaricate/DSGNX 44632,44634c40294,40295 < preventative/SM < preventible < prevention/SM --- > preventative/MS > prevention/M 44639d40299 < prevue/SM 44644c40304,40305 < price/AGDSM --- > price's > price/AGDS 44646a40308,40309 > pricier > priciest 44652d40314 < pricy/RT 44658c40320 < priesthood/MS --- > priesthood/SM 44660c40322 < priestly/PRT --- > priestly/RTP 44662c40324 < priggish/YP --- > priggish/P 44664c40326 < prim/YP --- > prim/ZGDRYP 44666d40327 < primaeval 44671c40332 < prime/MZGDRSP --- > prime/MS 44675c40336 < primitive/PSMY --- > primitive/SPMY 44680c40341 < primogenitor/MS --- > primogenitor/SM 44697d40357 < printed/U 44722c40382 < privatization/MS --- > privatization/SM 44731c40391 < prizefight/MRSZG --- > prizefight/ZGSMR 44734c40394 < prizewinner/SM --- > prizewinner/MS 44737c40397 < probabilist --- > proactive/Y 44739d40398 < probabilistically 44743c40402 < probate/MNV --- > probate/MN 44751c40410 < problematic/U --- > problematic 44756c40415 < procedural/Y --- > procedural 44761,44762c40420,40421 < process/AGDSM < processable --- > process's > process/AGDS 44764,44765c40423,40424 < procession/DG < processional/SM --- > procession/GD > processional/MS 44767d40425 < proclaim/Z 44770c40428 < procrastinate/GNXDS --- > procrastinate/DSGN 44772c40430 < procrastinator/SM --- > procrastinator/MS 44774,44775d40431 < procreational < procreatory 44777,44778c40433 < proctorial < procurement/SM --- > procurement/M 44784c40439,40440 < produce/AZGDRSM --- > produce's > produce/AZGDRS 44787d40442 < product/M 44789c40444 < productive/UAY --- > productive/UY 44793c40448 < profanation/SM --- > profanation/MS 44798,44799c40453,40454 < profession/MS < professional/SMY --- > profession/SM > professional/MYS 44805c40460 < professorship/MS --- > professorship/SM 44807c40462 < proficiency/SM --- > proficiency/M 44809d40463 < profiler/SM 44814c40468 < profiteer/MDSG --- > profiteer/MDGS 44816c40470 < profiterole/MS --- > profiterole/SM 44820,44821c40474 < proforma/S < profound/PRYT --- > profound/RYTP 44828a40482 > progestin/S 44833c40487 < prognosticate/XDSGN --- > prognosticate/XGNDS 44836,44838c40490,40493 < program/ZGMDRS < programer/M < programmable/SM --- > program/CAS > programed > programing > programmable/MS 44840,44841c40495 < programmatically < programmed/CA --- > programmed/AC 44843c40497 < programming/MS --- > programming/SM 44845,44846c40499,40500 < progression/SM < progressive/SMYP --- > progression/MS > progressive/PMYS 44853,44854c40507 < project/GVMDS < projected/A --- > project/GMDS 44857,44858c40510 < projectionist/MS < projective/Y --- > projectionist/SM 44859a40512 > prokaryotic 44869d40521 < prologize 44871d40522 < prologuize 44874c40525 < promenade/MZGDRS --- > promenade/MGDS 44876c40527 < prominence/MS --- > prominence/M 44885c40536 < promote/BDRZG --- > promote/DRZG 44894c40545 < promulgate/XGNDS --- > promulgate/GNDS 44898c40549 < pronator/MS --- > pronator/SM 44906,44907c40557 < pronounced/Y < pronouncement/MS --- > pronouncement/SM 44911c40561 < proofread/SZGR --- > proofread/SRZG 44915,44916c40565,40566 < propagandist/SM < propagandize/DSG --- > propagandist/MS > propagandize/GDS 44920d40569 < propane/M 44924d40572 < propellent/MS 44947c40595 < proportional/EY --- > proportional/YS 44949d40596 < proportionals 44956c40603 < proprietor/MS --- > proprietor/SM 44958c40605 < proprietorship/MS --- > proprietorship/SM 44961d40607 < proprioceptive 44965d40610 < propylene 44972a40618 > proscribe/DG 44974,44976c40620,40621 < proscriptive < prose/MS < prosecute/DSGNBX --- > prose/M > prosecute/DSXGN 44978c40623 < prosecutor/SM --- > prosecutor/MS 44981c40626 < proselytize/ZGDRS --- > proselytize/DRSZG 44983d40627 < prosodic 44987c40631 < prospector/MS --- > prospector/SM 45002c40646 < protagonist/MS --- > protagonist/SM 45004d40647 < protease 45010c40653 < protective/YP --- > protective/PY 45013c40656 < protectorate/SM --- > protectorate/MS 45018,45019c40661 < protestantism < protestation/SM --- > protestation/MS 45021d40662 < protists 45026c40667 < prototype/MGDS --- > prototype/MGS 45031d40671 < protozoon/M 45036d40675 < protrusive 45038a40678,40679 > protégé/MS > protégée/S 45040c40681 < prov/ZNRB --- > prov/NB 45042d40682 < provable/EU 45051c40691 < provide/BDRSZG --- > provide/DRSZG 45063c40703 < provocative/YP --- > provocative/PY 45076c40716 < proximate/Y --- > proximate 45090d40729 < prussic 45092c40731 < pryer/MS --- > précis/MDG 45095d40733 < psalter 45103,45104d40740 < pseudopod < pseudopodia 45124a40761 > psychoanalyses 45126c40763 < psychoanalyst/MS --- > psychoanalyst/SM 45129c40766 < psychoanalyze/GDS --- > psychoanalyze/DSG 45131c40768 < psychodrama/SM --- > psychodrama/MS 45135,45136d40771 < psycholinguistic/S < psycholinguists 45138c40773 < psychologist/SM --- > psychologist/MS 45147a40783 > psychopharmacology 45150d40785 < psychosocial 45160,45161c40795 < pterodactyl/SM < pterosaurs --- > pterodactyl/MS 45173c40807 < publication/AMS --- > publication/ASM 45177d40810 < publicized/U 45180c40813 < publishable/U --- > publishable 45211c40844 < pugnacious/PY --- > pugnacious/YP 45214d40846 < puissant 45227d40858 < pullup/SM 45248c40879 < punch/MDRSBZG --- > punch/MDRSZG 45250d40880 < punchbowl 45256c40886 < punctilious/YP --- > punctilious/PY 45260c40890 < punctuate/XGNDS --- > punctuate/GNDS 45262d40891 < punctuational 45272c40901 < punishment/SM --- > punishment/MS 45275d40903 < punkin/SM 45289d40916 < pupillage 45312c40939 < purify/DRSZGN --- > purify/NDRSZG 45320c40947 < purity/SM --- > purity/M 45328,45329c40955,40956 < purpose/DSMYGV < purposeful/PY --- > purpose/DSMYG > purposeful/YP 45331c40958 < purposeless/YP --- > purposeless/PY 45347c40974 < push/BZGMDRS --- > push/ZGMDRS 45367c40994 < putative/Y --- > putative 45376d41002 < putridity 45389d41014 < puzzling/Y 45390a41016,41017 > pwn/SGD > pyelonephritis 45400d41026 < pyridine 45404,45405d41029 < pyrolysis < pyrolyze 45407c41031 < pyromaniac/MS --- > pyromaniac/SM 45411d41034 < pyroxene/S 45422d41044 < quackish 45424c41046 < quadrangle/MS --- > quadrangle/SM 45429,45430c41051 < quadratically < quadrature/S --- > quadrature 45432c41053 < quadrennium/SM --- > quadrennium/MS 45434,45435c41055,41056 < quadrilateral/MS < quadrille/MNSX --- > quadrilateral/SM > quadrille/XMNS 45437d41057 < quadripartite 45441d41060 < quadrophonic 45445,45446c41064,41065 < quadruplet/SM < quadruplicate/DSMGN --- > quadruplet/MS > quadruplicate/MGNDS 45448,45449d41066 < quadruply < quadrupole 45452d41068 < quahaug/SM 45458c41074 < quaky/TR --- > quaky 45462c41078 < qualify/EXGNDS --- > qualify/EGXNDS 45470c41086 < quantifiable/U --- > quantifiable 45472d41087 < quantified/U 45477,45478d41091 < quantization < quantize/D 45487d41099 < quarrymen 45490c41102 < quarterback/SGMD --- > quarterback/GMDS 45498,45500d41109 < quartette/MS < quartic/S < quartile/S 45503d41111 < quartzite 45507,45509d41114 < quasilinear < quaternary < quaternion/S 45527d41131 < quern 45531c41135,41136 < ques/S --- > ques > quesadilla/MS 45535c41140 < question/BJSMDRZG --- > question/SMDRZGBJ 45541,45542c41146,41148 < questionnaire/MS < queue/MDSG --- > questionnaire/SM > queue's > queue/CDSG 45556d41161 < quiesce/D 45572d41176 < quincentenary 45576d41179 < quinquennial 45579c41182 < quintessence/MS --- > quintessence/SM 45582,45584d41184 < quintette/MS < quintic < quintillion 45586c41186 < quintuplet/SM --- > quintuplet/MS 45589d41188 < quipper 45592c41191,41192 < quire/IASM --- > quire's > quire/IAS 45605d41204 < quivering/Y 45614a41214 > quo/H 45620c41220 < quot/RB --- > quot/B 45624,45625c41224,41225 < quote/UDSGM < quoth --- > quote's > quote/UDSG 45642c41242 < racecourse/MS --- > racecourse/SM 45659c41259 < racketeer/GSMD --- > racketeer/SMDG 45662c41262 < racoon/MS --- > racoon 45664c41264 < racquetball/MS --- > racquetball/SM 45668,45670c41268 < radarscope/MS < radder < raddest --- > radarscope/SM 45673d41270 < radian/S 45676c41273 < radiate/DSGNVX --- > radiate/DSGNX 45678d41274 < radiative/Y 45689d41284 < radioastronomical 45691d41285 < radiogalaxy/S 45695,45696c41289 < radioisotope/SM < radiological --- > radioisotope/MS 45701c41294 < radiometer/SM --- > radiometer/MS 45704d41296 < radionuclide 45707c41299,41300 < radiosonde/MS --- > radiosonde/SM > radiosurgery 45711,45712c41304,41305 < radiotelephone/SM < radiotherapist/SM --- > radiotelephone/MS > radiotherapist/MS 45717d41309 < radix 45746c41338,41339 < rail/CGDSM --- > rail's > rail/CGDS 45759d41351 < raincloud/S 45763,45764d41354 < rainforest/S < rainless 45769d41358 < rainswept 45775d41363 < raj 45789d41376 < ramequin/SM 45792c41379 < ramify/DSGXN --- > ramify/DSXNG 45796c41383 < ramp/MDS --- > ramp/GMS 45814c41401 < rand/MS --- > rand/M 45823c41410,41411 < range/CGDSM --- > range's > range/CGDS 45860c41448 < rapscallion/SM --- > rapscallion/MS 45868c41456 < rarefaction/SM --- > rarefaction/M 45876c41464 < rasp/GMDRS --- > rasp/GMDS 45881c41469 < rasterize/SGDR --- > rasterize/DRSG 45886,45887c41474 < rate/BJXMZGNDRS < rateable --- > rate/JXMZGNDRS 45892c41479 < rathskeller/MS --- > rathskeller/SM 45895c41482 < ratify/DRSZGNX --- > ratify/NDRSZG 45904c41491 < rationalist/MS --- > rationalist/SM 45906c41493 < rationality/SM --- > rationality/M 45908c41495 < rationalize/GDS --- > rationalize/DSG 45910d41496 < ratlin/SM 45917c41503 < rattlebrain/MDS --- > rattlebrain/SMD 45919c41505 < rattlesnake/MS --- > rattlesnake/SM 45921c41507 < rattly/RT --- > rattly 45933c41519,41520 < ravel/UDSGM --- > ravel's > ravel/UDSG 45938c41525 < raving/MY --- > raving/M 45951c41538 < razor/MSG --- > razor/MS 45953,45954d41539 < razorbills < razorblades 45956d41540 < razzamatazz 45963d41546 < reached/U 45965d41547 < reacquisition 45968a41551 > reactivity/M 45987d41569 < realizable/U 46008d41589 < reasoned/U 46011c41592 < reasonless --- > reassemble/DSG 46022d41602 < rebook 46031d41610 < recalibrate/GN 46041d41619 < received/U 46045,46046c41623 < recension < recent/YTP --- > recent/RYTP 46048c41625 < receptacle/MS --- > receptacle/SM 46050,46051c41627,41628 < receptionist/MS < receptive/YP --- > receptionist/SM > receptive/PY 46056c41633 < recessional/MS --- > recessional/SM 46059d41635 < recharge/R 46060a41637 > recherché 46065,46066c41642,41643 < reciprocal/MYS < reciprocate/DSGN --- > reciprocal/SMY > reciprocate/GNDS 46070,46071c41647,41648 < recitalist/SM < recitative/SM --- > recitalist/MS > recitative/MS 46075c41652 < reckon/SJDRG --- > reckon/SJDG 46077,46078c41654 < reclaim/BR < reclamation/MS --- > reclamation/M 46082d41657 < recognition/S 46084,46086c41659,41660 < recognizably/U < recognizance/S < recognize/BDRSZG --- > recognizably > recognize/DRSGB 46088d41661 < recombinant 46090d41662 < recommended/U 46094,46095c41666 < reconcile/GLDSB < reconciled/U --- > reconcile/GDSB 46098,46099c41669,41671 < reconnaissance/SM < reconnection --- > reconfiguration > reconfigure/D > reconnaissance/MS 46103,46106d41674 < recontribute < reconversion < recopy/DSG < record/RBJZ 46108,46111c41676,41677 < recorder/M < recording/M < recordists < recount/SGMD --- > recorder/MS > recording/MS 46113d41678 < recouple 46119c41684 < recriminate/GNXDS --- > recriminate/DSGNX 46128d41692 < recrystallization 46135c41699 < rectify/NDRSZGX --- > rectify/XNDRSZG 46143c41707 < recuperate/DSGNV --- > recuperate/GNVDS 46147a41712 > recurrent/Y 46149,46153c41714,41716 < recurse/DGSV < recursion/S < recuse/DGS < recyclable/MS < recycle/BZ --- > recurse/XNV > recuse/DSG > recyclable/SM 46169d41731 < redeclaration 46171d41732 < redeemed/U 46173d41733 < redelivery 46176d41735 < redeposition 46180,46182c41739 < redisplay < redistribute/V < redistrict/DG --- > redistrict/GD 46194d41750 < redshift/S 46197d41752 < reduced/U 46199d41753 < reducibility 46203,46204c41757 < reductionism < reductionist/S --- > reductionist 46215c41768,41769 < reel/UGDSM --- > reel's > reel/UGDS 46219d41772 < refactor/SMDG 46225d41777 < refereed/U 46227,46230c41779,41780 < reference/MGDRS < referenced/U < referencing/U < referendum/SM --- > reference/MGDS > referendum/MS 46232c41782 < referential/Y --- > referential 46239c41789,41790 < refill/BJM --- > refile/DSG > refill/BM 46241c41792 < refinement/MS --- > refinement/SM 46248,46253c41799,41800 < reflectance < reflected/U < reflection/SM < reflectional < reflective/PY < reflectivity --- > reflection/MS > reflective/Y 46255,46256c41802 < reflexive/PSMY < reflexivity --- > reflexive/SMY 46258d41803 < reflooring 46260c41805 < reform/MB --- > reform/MZ 46266c41811 < refortify/DSG --- > refortify/GDS 46268c41813 < refractors --- > refraction/M 46271,46272c41816 < refresh/ZGBLDRS < refreshed/U --- > refresh/ZGLDRS 46279d41822 < refrigerated/U 46289d41831 < refuseniks 46298d41839 < regarded/U 46305c41846,41847 < regenerate/VX --- > regenerate/V > regex/M 46319d41860 < registrable 46346c41887 < regurgitate/GNDS --- > regurgitate/DSGN 46351c41892 < rehabilitate/DSGNV --- > rehabilitate/GNVDS 46359d41899 < rehydrate 46361c41901 < reimburse/BLDSG --- > reimburse/BDSGL 46363d41902 < reimplementation 46366,46368c41905,41907 < reinforce/GDSL < reinforcement/MS < reinitialization --- > reinforce/LGDS > reinforcement/SM > reinitialize 46372d41910 < reinvestigation 46379c41917 < rejuvenate/DSXGN --- > rejuvenate/DSGN 46381d41918 < rejuvenatory 46387,46388c41924,41925 < relational/Y < relationship/SM --- > relational > relationship/MS 46393d41929 < relativistically 46395d41930 < relator 46400d41934 < relaxing/Y 46402c41936 < releasable/U --- > release/B 46417d41950 < relict 46426,46427c41959 < relink/GD < relinquish/GLDS --- > relinquish/LDSG 46430a41963,41964 > relist/SGD > relocate/B 46436c41970 < remainder/MDSG --- > remainder/GMDS 46447c41981 < remembrance/SM --- > remembrance/MS 46450c41984 < reminiscence/SM --- > reminiscence/MS 46462,46463c41996,41997 < remonstrant/MS < remonstrate/XGNDS --- > remonstrant/SM > remonstrate/DSG 46470d42003 < remould/SDG 46472c42005 < remunerate/DSGNVX --- > remunerate/GNVXDS 46477d42009 < renationalisation 46490,46491c42022 < renormalization < renounce/DSLG --- > renounce/LDSG 46501a42033 > reorg/DSG 46504,46505c42036,42037 < repairable/U < repairer/MS --- > repair/BZR > repairer/M 46508d42039 < repaper 46510c42041 < reparation/SM --- > reparation/MS 46513c42044 < repatriate/DSXMGN --- > repatriate/XDSMGN 46516d42046 < repeatability/U 46523d42052 < repellant/SM 46526c42055 < repelling/Y --- > repelling 46529c42058 < repentant/UY --- > repentant/Y 46534c42063 < repetitious/PY --- > repetitious/YP 46538c42067 < rephotograph/GD --- > rephotograph/DG 46541c42070 < replenish/DSGL --- > replenish/LGDS 46547,46548c42076 < replicable < replicate/DSG --- > replicate/DSGNX 46551,46553d42078 < replug < reply/XRN < report/MRBZ 46559c42084 < reprehend/DSG --- > reprehend/DGS 46564,46566c42089,42091 < represent/DGSB < representable/U < representative/PSM --- > represent/GDS > representational > representative/MS 46568,46569c42093,42094 < repression/SM < repressive/YP --- > repression/MS > repressive/PY 46574,46575c42099,42100 < reproach/BGMDS < reproachful/PY --- > reproach/GMDSB > reproachful/Y 46577,46581c42102 < reproducibility < reproducible/U < reproducibly < reprogram/S < reprogrammable --- > reproductive 46593,46594c42114,42115 < repulsion/SM < repulsive/PY --- > repulsion/M > repulsive/YP 46603d42123 < requested/U 46606,46607c42126,42127 < requirement/SM < requisite/MNXS --- > requirement/MS > requisite/XMNS 46615,46617d42134 < reredos < reregistration < rerouteing 46619d42135 < res/C 46626,46627c42142 < reselect < reselection --- > resell/SG 46629c42144 < resend/G --- > resend 46633c42148 < resentment/SM --- > resentment/MS 46635c42150 < reservation/SM --- > reservation/MS 46642d42156 < reshow/G 46649d42162 < residuary 46652,46653c42165 < resignal < resignation/MS --- > resignation/SM 46659,46661c42171,42172 < resiny < resist/SMDRZGV < resistance/MS --- > resist/SMDRZG > resistance/SM 46664,46665d42174 < resistive/Y < resistivity 46667a42177 > resit/S 46671c42181 < resolute/XPYTNR --- > resolute/PY 46673,46675c42183 < resolvability < resolvable/U < resolve/M --- > resolve/RBM 46677d42184 < resolvent 46688d42194 < respecify 46703,46704c42209,42210 < respond/SZGDR < respondent/MS --- > respond/SGD > respondent/SM 46709c42215 < responsive/UPY --- > responsive/UYP 46712d42217 < restart/B 46715d42219 < restauranteur/SM 46724c42228 < restless/YP --- > restless/PY 46726,46727c42230,42231 < restoration/MS < restorative/MS --- > restoration/SM > restorative/SM 46734c42238 < restrictive/PY --- > restrictive/YP 46738,46739c42242 < restructuring/MS < resubstitute --- > restructuring/SM 46743c42246 < resumption/SM --- > resumption/MS 46747,46748c42250,42251 < resurrect/SGD < resurrection/SM --- > resurrect/GSD > resurrection/MS 46752d42254 < resynchronization 46766,46767c42268,42269 < retention/MS < retentive/PY --- > retention/M > retentive/YP 46769d42270 < retentivity 46774d42274 < reticular 46776,46778c42276 < reticulation/SM < reticule/S < reticulum --- > reticulation/MS 46781d42278 < retinitis 46792c42289 < retrenchment/SM --- > retrenchment/MS 46805c42302 < retrogress/DSGV --- > retrogress/GVDS 46807,46808c42304,42305 < retrorocket/SM < retrospect/GVSMD --- > retrorocket/MS > retrospect/MDSGV 46813,46814c42310 < retuning < returnable/MS --- > returnable/SM 46816c42312 < rev/VM --- > rev/ZVM 46818,46819c42314 < revanchist < reveal/BGJSD --- > reveal/GJSD 46824,46825c42319 < revelation/MS < revelatory --- > revelation/SM 46830,46831c42324,42325 < reverberant < reverberate/DSXGN --- > reverb > reverberate/DSGNX 46841c42335 < reverse/YR --- > reverse/Y 46847d42340 < revery/SM 46852,46856c42345,42346 < revise/BXRZN < revised/U < reviser/M < revision/M < revisionary --- > reviser/MS > revision/SM 46858c42348 < revisionist/MS --- > revisionist/SM 46862c42352 < revive/DRSG --- > revive/DSG 46865c42355 < revoke/DRSBZG --- > revoke/DSG 46886c42376 < rewrite/M --- > rewrite/MGS 46889c42379 < rhapsodize/DSG --- > rhapsodize/GDS 46893,46894d42382 < rheological < rheology 46899c42387 < rhetorician/MS --- > rhetorician/SM 46906c42394 < rheumatologist/SM --- > rheumatologist/MS 46908c42396 < rheumy/TR --- > rheumy 46912a42401,42402 > rhinoplasty > rhinovirus/MS 46935d42424 < ribcage 46937,46938d42425 < ribonucleic < ribosomes 46947d42433 < ricksha/MS 46951c42437 < rid/SR --- > rid/S 46956c42442 < ride/CZGSM --- > ride/MZGRS 46962c42448 < ridgy/RT --- > ridgy 46964c42450 < ridiculous/PY --- > ridiculous/YP 46978c42464 < rigamarole/MS --- > rigamarole/SM 46997,46998c42483 < rigidify/S < rigidity/SM --- > rigidity/M 47015d42499 < ringing/Y 47019c42503 < ringmaster/SM --- > ringmaster/MS 47021c42505 < ringtone/MS --- > ringtone/SM 47037,47038c42521 < ripost/SGMD < riposte/MS --- > riposte/MGDS 47043c42526 < ripply/TR --- > ripply 47045d42527 < ripstop 47058a42541 > risqué 47080d42562 < riveting/Y 47092c42574 < roadrunner/MS --- > roadrunner/SM 47095d42576 < roadsigns 47097d42577 < roadsweepers 47116c42596,42597 < robe/EGDSM --- > robe's > robe/EGDS 47117a42599 > robocall/SGD 47143c42625,42626 < rogue/KSM --- > rogue's > rogue/KS 47153d42635 < rolled/A 47168,47169c42650,42651 < romanticist/MS < romanticize/GDS --- > romanticist/SM > romanticize/DSG 47174d42655 < rontgen/S 47178d42658 < roofgarden 47196c42676 < rootkit/MS --- > rootkit/SM 47199d42678 < rootstock 47202d42680 < ropey 47216c42694 < roster/SMG --- > roster/SM 47222d42699 < rotatable 47224c42701 < rotate/DSGNBX --- > rotate/DSGNX 47226,47227c42703 < rotational/Y < rotators --- > rotational 47232c42708 < rotogravure/SM --- > rotogravure/MS 47251,47252c42727,42728 < roughhouse/DSMG < roughneck/MDSG --- > roughhouse/MGDS > roughneck/GMDS 47261c42737 < roundhouse/MS --- > roundhouse/SM 47264d42739 < roundtable/SM 47271c42746,42748 < route/ADSGM --- > route's > route/ADSG > routeing 47275a42753 > roué/MS 47302c42780 < rubberneck/SZGMDR --- > rubberneck/MDRSZG 47304c42782 < rubbery/TR --- > rubbery 47321c42799 < ruction/S --- > ructions 47337d42814 < ruffly/TR 47342a42820 > rugrat/SM 47344c42822 < ruination/SM --- > ruination/M 47347d42824 < rulebook/S 47364c42841 < rumormonger/MS --- > rumormonger/SM 47367d42843 < rumply/RT 47378d42853 < runnable 47391c42866 < rural/Y --- > rural 47395c42870 < rushy/RT --- > rushy 47413c42888 < ruthless/PY --- > ruthless/YP 47420,47421c42895 < sabbath < sabbatical/MS --- > sabbatical/SM 47430d42903 < saccharides 47441d42913 < sacral 47452c42924 < sacroiliac/SM --- > sacroiliac/MS 47460c42932,42933 < saddle/UDSGM --- > saddle's > saddle/UDSG 47472c42945 < sadomasochist/SM --- > sadomasochist/MS 47475,47477c42948,42950 < safe/UYTPRM < safeguard/GSMD < safekeeping/SM --- > safe/MYTPRS > safeguard/SMDG > safekeeping/M 47479d42951 < safes 47512c42984 < sake/MS --- > sake/M 47516c42988 < salacious/YP --- > salacious/PY 47524c42996 < saleability --- > saleable/U 47526c42998 < salesclerk/MS --- > salesclerk/SM 47533c43005 < salesperson/SM --- > salesperson/MS 47537d43008 < salicylic 47544c43015 < salivate/XGNDS --- > salivate/GNDS 47555c43026,43027 < salt/CTGDSM --- > salt's > salt/CTGDS 47563c43035 < saltshaker/MS --- > saltshaker/SM 47567d43038 < salubrity 47570c43041 < salutatorian/SM --- > salutatorian/MS 47593c43064 < sanctify/NGDS --- > sanctify/GDSN 47606a43078 > sandbagger/SM 47610c43082 < sandblast/MDRSZG --- > sandblast/ZGMDRS 47613c43085 < sandcastle/SM --- > sandcastle/MS 47621c43093 < sandpaper/MDGS --- > sandpaper/GMDS 47624c43096 < sandstone/SM --- > sandstone/M 47639c43111 < sanitize/ZGDRS --- > sanitize/GDS 47656c43128 < saprophyte/MS --- > saprophyte/SM 47661d43132 < sarape/SM 47671d43141 < saree/MS 47677c43147 < sarsaparilla/SM --- > sarsaparilla/MS 47698c43168 < satin/MS --- > satin/M 47710d43179 < satisfiable/U 47720c43189 < saturated/UC --- > saturated/U 47722d43190 < saturnalia 47742d43209 < sauterne/SM 47743a43211 > sauté/MDSG 47748,47749d43215 < savannah/M < savannahs 47754d43219 < saveloy 47772d43236 < sawtooth 47777,47778c43241,43243 < saxophonist/MS < say/USGM --- > saxophonist/SM > say's > say/USG 47793,47795d43257 < scagging < scalability < scalable 47799,47800c43261,43262 < scale/ACSDGM < scaled/U --- > scale's > scale/CGDS 47806c43268 < scallywag/S --- > scallywag/MS 47812a43275 > scammer/S 47817c43280 < scan/ASM --- > scan/MS 47819c43282 < scandalize/GDS --- > scandalize/DSG 47823c43286 < scanned/A --- > scanned 47825c43288 < scanning/A --- > scanning 47834,47836c43297,43298 < scape < scapegoat/SMDG < scapegrace/SM --- > scapegoat/SGMD > scapegrace/MS 47847,47848c43309 < scaremonger/MSG < scarey --- > scaremonger/SMG 47851c43312 < scarify/DSGN --- > scarify/NDSG 47863,47864d43323 < scathe/DG < scathed/U 47869,47870c43328,43329 < scatter/ZGJSMDR < scatterbrain/MDS --- > scatter/GJSMD > scatterbrain/SMD 47871a43331 > scattershot 47886,47887c43346 < scepter/MDS < sceptically --- > scepter/MS 47890c43349,43350 < schedule/ADSGM --- > schedule's > schedule/ADSG 47908,47909c43368 < schizophrenic/MS < schizophrenically --- > schizophrenic/SM 47914c43373 < schlocky/RT --- > schlocky 47916,47917c43375 < schmaltzy/RT < schmalz/M --- > schmaltzy/TR 47923c43381 < schnaps/M --- > schnaps 47939c43397 < schoolchildren --- > schoolchildren/M 47942,47943c43400 < schoolfellow/MS < schoolfriend --- > schoolfellow/SM 47945c43402 < schoolhouse/MS --- > schoolhouse/SM 47950c43407 < schoolmaster/SM --- > schoolmaster/MS 47954c43411 < schoolteacher/SM --- > schoolteacher/MS 47958,47959c43415 < schrod/SM < schtick --- > schrod/S 47961c43417 < schussboomer/SM --- > schussboomer/MS 47972c43428 < scintillate/XDSGN --- > scintillate/DSGN 47974d43429 < scintillator/S 47983c43438 < scold/MDRSGJ --- > scold/MDSGJ 47986d43440 < scollop/SMDG 47989c43443 < scoop/MDRSG --- > scoop/MDSG 48017c43471 < scoutmaster/SM --- > scoutmaster/MS 48026c43480,43481 < scramble/UGDSM --- > scramble's > scramble/UGDS 48041c43496 < scratch/GJMDS --- > scratch/GMDS 48047c43502 < scratchy/RPT --- > scratchy/PRT 48049c43504 < scrawly/TR --- > scrawly 48062,48064c43517,43519 < screensaver/MS < screenshot/MS < screenwriter/MS --- > screensaver/SM > screenshot/SM > screenwriter/SM 48066c43521,43522 < screw/UDSGM --- > screw's > screw/UDSG 48068c43524 < screwdriver/SM --- > screwdriver/MS 48073c43529 < scribble/JMZGDRS --- > scribble/MZGDRS 48075c43531,43532 < scribe/IKCGSDM --- > scribe's > scribe/CKIS 48083d43539 < scriptorium 48086,48087c43542 < scriptwriter/MS < scriptwriting --- > scriptwriter/SM 48093,48095c43548 < scrogged < scrogging < scroll/GSBMD --- > scroll/GSMD 48115c43568 < scrummage/GS --- > scrummage/S 48126c43579 < scrupulous/UYP --- > scrupulous/UPY 48129,48130c43582,43583 < scrutinize/DSG < scrutiny/SM --- > scrutinize/GDS > scrutiny/M 48153c43606 < scurfy/TR --- > scurfy 48155c43608 < scurrilous/YP --- > scurrilous/PY 48157c43610 < scurry/GDSMJ --- > scurry/GDSM 48179c43632,43633 < seal/AUSDGM --- > seal's > seal/AUSDG 48184d43637 < seamail 48187a43641 > seamount/MS 48195c43649 < searchable --- > searchable/U 48198c43652 < searchlight/SM --- > searchlight/MS 48213,48214c43667,43668 < seat/UGDSM < seated/A --- > seat's > seat/UGDS 48223c43677 < seaworthy/TRP --- > seaworthy/P 48232c43686 < secession/MS --- > secession/M 48244c43698 < secret/STGVMDRY --- > secret/SGVMDY 48251c43705 < secretive/YP --- > secretive/PY 48264,48265d43717 < sectoral < sectored 48281,48282c43733,43734 < sedge/MS < sedgy/RT --- > sedge/M > sedgy 48291c43743 < seductive/PY --- > seductive/YP 48296c43748,43749 < seed/AGDSM --- > seed's > seed/AGDS 48313c43766 < seen --- > seen/U 48322d43774 < segmental 48328,48329c43780,43781 < segregationist/SM < segue/MDS --- > segregationist/MS > segue/MGDS 48338d43789 < seismogram 48346c43797 < seismologist/SM --- > seismologist/MS 48348d43798 < seismometer/S 48352,48354c43802 < select/CSGDV < selectable < selected/UA --- > select/CSGVD 48365,48367c43813,43814 < selenology < self/MG < selfie/S --- > self/GM > selfie/SM 48372c43819 < selfless/YP --- > selfless/PY 48375c43822 < sell/AZGRSM --- > sell/ZGMRS 48376a43824 > selloff/MS 48385c43833 < semanticist/SM --- > semanticist/MS 48400c43848 < semiconductor/SM --- > semiconductor/MS 48405c43853 < semifinalist/SM --- > semifinalist/MS 48414d43861 < semioticians 48420c43867 < semiprofessional/MS --- > semiprofessional/SM 48427c43874 < semitrailer/SM --- > semitrailer/MS 48434d43880 < sempiternal 48456d43901 < sensationalistic 48463c43908 < sensible/PRT --- > sensible/P 48466c43911 < sensitive/SPMY --- > sensitive/SMYP 48472d43916 < sensitizers 48475,48476c43919,43920 < sensual/FY < sensualist/MS --- > sensual/Y > sensualist/SM 48482d43925 < sentential 48499c43942 < separate/PXMYGNVDS --- > separate/XMYGNVDSP 48507a43951 > septal 48509d43952 < septette/SM 48521d43963 < sequent/F 48523,48524c43965,43966 < sequester/GSD < sequestrate/XDSGN --- > sequester/SDG > sequestrate/XGNDS 48526a43969 > sequinned 48533,48534c43976 < seraphically < seraphim/M --- > seraphim 48537,48538c43979,43980 < serenade/MGDRS < serendipitous/Y --- > serenade/MGDS > serendipitous 48548c43990 < serialization/MS --- > serialization/SM 48551c43993 < serif/MDS --- > serif/MS 48569c44011,44012 < serve/FACGDSM --- > serve's/AF > serve/FACGDS 48574,48575c44017,44018 < serviceable/U < serviced/U --- > serviceable > serviced 48582c44025 < servile/Y --- > servile 48584c44027,44028 < serving/MS --- > serving's > servings 48592d44035 < sessile 48599d44041 < settable/A 48603c44045,44046 < settle/AUGDSM --- > settle's > settle/AUGDS 48609,48610d44051 < sevenfold < sevenpence 48630c44071 < sewn --- > sewn/A 48638c44079 < sexologist/MS --- > sexologist/SM 48643c44084 < sextette/MS --- > sexting 48647c44088 < sexuality/SM --- > sexuality/M 48655c44096,44097 < shackle/UGDSM --- > shackle's > shackle/UGDS 48658,48659d44099 < shaded/U < shadeless 48665d44104 < shadowless 48676,48680c44115 < shaikh < shaikhs < shakable/U < shake/MZGRSB < shakeable/U --- > shake/MZGRS 48706c44141 < shameful/YP --- > shameful/PY 48710a44146 > shammies 48712d44147 < shammy/SM 48723c44158,44159 < shape/AGDSM --- > shape's > shape/AGDS 48725c44161 < shapeless/PY --- > shapeless/YP 48729d44164 < sharable/U 48737,48738c44172 < shared/U < shareholder/MS --- > shareholder/SM 48741c44175 < shareware/MS --- > shareware/M 48758d44191 < shattering/Y 48776c44209 < sheave/SM --- > sheave/DSMG 48786c44219 < sheepherder/SM --- > sheepherder/MS 48792c44225 < sheet/MDSG --- > sheet/MSG 48796a44230 > sheikh/M 48797a44232 > sheikhs 48803,48804c44238,44239 < shellack/JGMDS < shellacking/M --- > shellacked > shellacking/MS 48810c44245 < shemale/MS! --- > shemale/MS 48814d44248 < sherbert/SM 48826,48827c44260 < shielded/U < shift/ZGMDRS --- > shift/GMDS 48832a44266 > shiitake/S 48834,48835d44267 < shillalah/M < shillalahs 48858c44290,44291 < ship/ALSM --- > ship's > ship/ALS 48860,48861c44293 < shipborne < shipbuilder/MS --- > shipbuilder/SM 48868d44299 < shippable 48885c44316 < shirtsleeve/MS --- > shirtsleeve/SM 48887c44318 < shirtwaist/SM --- > shirtwaist/MS 48889c44320 < shit/MS! --- > shit/SM! 48892c44323,44325 < shitload/MS! --- > shitload's > shitload/! > shitloads 48895c44328 < shitty/TR! --- > shitty/RT! 48898d44330 < shivering/Y 48900,48904d44331 < shlemiel/MS < shlep/MS < shlepp/MDSG < shlock/M < shmaltz/M 48916d44342 < shoebox 48920d44345 < shoeless 48923c44348 < shoestring/MS --- > shoestring/SM 48940d44364 < shopkeeping 48952d44375 < shoreward 48958c44381 < shortchange/GDS --- > shortchange/DSG 48965c44388 < shorthand/MDS --- > shorthand/MD 48969c44392 < shortlist/DSG --- > shortlist/DGS 48987c44410 < shovel/MDRSG --- > shovel/MDSG 48996c44419 < showery/TR --- > showery 49011c44434 < showstopper/SM --- > showstopper/MS 49026c44449 < shriek/MDRSZG --- > shriek/MDSG 49036d44458 < shrinking/Y 49069c44491 < shuttlecock/MDGS --- > shuttlecock/GMDS 49075,49076d44496 < sibilance < sibilancy 49081a44502,44503 > sicced > siccing 49095c44517,44518 < side/AGDSM --- > side's > side/AGDS 49097d44519 < sideband/S 49121d44542 < sidewards 49123,49124c44544 < sidewinder/MS < sidewise --- > sidewinder/SM 49138d44557 < sighted/P 49140c44559 < sightless/Y --- > sightless 49146,49147c44565,44566 < sigmoid < sign/AFCGDSM --- > sign's/C > sign/AFCGDS 49163d44581 < significances 49166,49167c44584,44585 < signify/XNDRSG < signing/MCS --- > signify/XDSNG > signing/CSM 49184d44601 < silicious 49199d44615 < siltstone 49207c44623,44624 < silvery/RT --- > silvery > sim/S 49223,49224c44640,44641 < simplex/S < simplicity/SM --- > simplex > simplicity/M 49226,49227c44643 < simplified/U < simplify/XDRSNG --- > simplify/DSXNG 49247d44662 < sinecurist 49267,49269c44682 < singularization < sinister/Y < sinistral --- > sinister 49283,49284c44696 < sinusoid < sinusoidal/Y --- > sinusoidal 49298d44709 < sirup/SM 49307c44718 < sit/ASG --- > sit/S 49311,49312c44722,44723 < site/MJDS < sitemap/MS --- > site/MGDS > sitemap/SM 49318,49319d44728 < situationist < situp/SM 49323d44731 < sixpenny 49328c44736 < sixth/MY --- > sixth/M 49333c44741,44743 < size/AMGBDRS --- > size's > size/AGBDRS > sizeable 49338c44748 < skateboard/ZGSMDR --- > skateboard/MDRSZG 49351d44760 < skerries 49359c44768 < skew/MDRZGPS --- > skew/MDRZGS 49372,49373c44781,44783 < skilful/Y < skill/CSDM --- > skilfully > skill's > skill/CSD 49394d44803 < skinner/S 49460c44869 < slang/MG --- > slang/M 49467c44876 < slaphappy/RT --- > slaphappy 49479c44888 < slaughter/MDRJZGS --- > slaughter/MDRZGS 49481c44890 < slaughterhouse/SM --- > slaughterhouse/MS 49503c44912 < sledgehammer/SMDG --- > sledgehammer/GSMD 49520c44929 < sleety/RT --- > sleety 49526c44935 < slender/PRYT --- > slender/PRT 49534d44942 < sliced/U 49544d44951 < slighting/Y 49546d44952 < slily 49548c44954 < slime/SM --- > slime/M 49574c44980 < slipstream/MS --- > slipstream/SM 49579d44984 < slitted 49606c45011 < slothful/PY --- > slothful/YP 49618c45023 < slovenly/TPR --- > slovenly/PTR 49622d45026 < slowish 49633c45037 < sluggish/YP --- > sluggish/PY 49639a45044 > slumdog/SM 49659a45065,45066 > slyer > slyest 49669d45075 < smalltalk 49674c45080 < smartphone/MS --- > smartphone/SM 49675a45082 > smartwatch/MS 49684,49685c45091 < smegma < smell/SMDGB --- > smell/SMDG 49691,49692d45096 < smidgeon/SM < smidgin/MS 49694c45098 < smile/DRSMG --- > smile/DSMG 49696c45100 < smiling/UY --- > smiling/Y 49713c45117 < smokescreen/MS --- > smokescreen/SM 49723c45127 < smoothie/MS --- > smoothie/M 49726c45130 < smoothy --- > smoothy/SM 49730c45134 < smoulder/GSMD --- > smoulder/GMDS 49743a45148 > smörgåsbord/MS 49756c45161,45162 < snap/USM --- > snap's > snap/US 49772c45178,45179 < snarl/USDGM --- > snarl's > snarl/USDG 49843c45250,45251 < snowboard/MDRSZG --- > snowblower/MS > snowboard/ZGMDRS 49857,49858d45264 < snowplough < snowploughs 49873d45278 < snuffly/RT 49881c45286 < so/M --- > so 49891d45295 < soaring/Y 49913,49914d45316 < sociobiology < sociocultural 49917,49918d45318 < sociolinguistic/S < sociolinguists 49920c45320 < sociologist/MS --- > sociologist/SM 49939d45338 < sofabed/SM 49956d45354 < soh 49958a45357,45358 > soigné > soignée 49961a45362 > soirée/SM 49969c45370 < sold/UR --- > sold 49979c45380 < solemnify/GDS --- > solemnify/DSG 49985d45385 < solenoidal 49990c45390 < solicitous/YP --- > solicitous/PY 50002c45402 < soliloquize/GDS --- > soliloquize/DSG 50004,50005c45404 < solipsism/MS < solipsist/S --- > solipsism/M 50010c45409 < solitude/SM --- > solitude/M 50016c45415,45416 < solute/XNM --- > solute's > solute/AXN 50018c45418 < solution/EAM --- > solution's/AE 50020c45420 < solve/ARZBGSD --- > solve/EADSG 50024c45424 < solver/M --- > solver/SM 50028c45428,45429 < sombre --- > sombre/PY > sombreness/M 50036c45437 < somersault/MDSG --- > somersault/MDGS 50045c45446 < sommelier/SM --- > sommelier/MS 50060c45461 < songwriter/MS --- > songwriter/SM 50063d45463 < sonically 50066d45465 < sonofabitch/! 50068,50069c45467,45468 < sonority/SM < sonorous/PY --- > sonority/M > sonorous/YP 50073d45471 < soonish 50079c45477 < soothsayer/SM --- > soothsayer/MS 50114c45512 < sorrowful/PY --- > sorrowful/YP 50119d45516 < sortable 50128d45524 < soubriquet/SM 50129a45526 > soufflé/SM 50134c45531 < soul/MDS --- > soul/MS 50137a45535 > soulmate/S 50138a45537,45538 > soundalike/S > soundbar/S 50140c45540,45541 < soundboard/SM --- > soundboard/MS > soundcheck/S 50145c45546 < soundproof/DGS --- > soundproof/GDS 50146a45548 > soundscape/S 50150a45553 > soupçon/MS 50153d45555 < sourceless 50173c45575 < southwest/MRZ --- > southwest/ZMR 50181c45583,45584 < sow/ASGDM --- > sow's > sow/ASGD 50185d45587 < soya/M 50189c45591 < space/DRSMZGJ --- > space/DRSMZG 50191c45593 < spaceflight/SM --- > spaceflight/MS 50202a45605,45606 > spacier > spaciest 50205c45609 < spacious/PY --- > spacious/YP 50207d45610 < spacy/RTP 50215,50216c45618 < spam/S < spamblock/S --- > spam/MS 50222d45623 < spandrels 50226c45627 < spank/SMDRGJ --- > spank/SMDGJ 50228c45629 < spanned/U --- > spanned 50239d45639 < sparkling/Y 50264,50265c45664 < speak/SRZGBJ < speakable/U --- > speak/SRZGJ 50270a45670 > speargun 50274c45674 < special/SPMRY --- > special/SMY 50284,50285c45684 < specifiably < specific/PMS --- > specific/MS 50289c45688 < specified/UA --- > specified/U 50299c45698 < spectacular/SMY --- > spectacular/MYS 50305,50312c45704,45705 < spectrogram < spectrograph < spectrometer/SM < spectrometric < spectrometry < spectrophotometer < spectrophotometry < spectroscope/SM --- > spectrometer/MS > spectroscope/MS 50314d45706 < spectroscopically 50317,50318c45709 < specular < speculate/XDSGNV --- > speculate/DSXGNV 50322d45712 < speculum 50326c45716 < speechless/PY --- > speechless/YP 50344,50345c45734,45735 < spell/BJSMDRZG < spellbind/RZGS --- > spell/JSMDRZG > spellbind/ZGRS 50348c45738,45739 < spellchecker/S --- > spellcheck/DRZGS > spellchecker/M 50350d45740 < spelled 50365c45755 < spermicide/SM --- > spermicide/MS 50379c45769 < spick/S! --- > spick/S 50384c45774 < spidery/RT --- > spidery 50389d45778 < spik/S! 50393c45782 < spill/SMDRG --- > spill/SMDG 50402d45790 < spindrift 50419c45807,45808 < spire/IFASM --- > spire's > spire/IFAS 50421c45810,45811 < spirit/ISGDM --- > spirit's > spirit/ISGD 50431c45821 < spiry/RT --- > spiry 50460a45851 > splenectomy 50470,50471d45860 < splittable < splitter/S 50479c45868,45869 < spoil/CSDRZGM --- > spoil's > spoil/CSDRZG 50486d45875 < spokeshave/S 50490c45879 < spokesperson/SM --- > spokesperson/MS 50500c45889 < sponsorship/MS --- > sponsorship/M 50537c45926 < spotlight/SGMD --- > spotlight/GSMD 50552c45941,45942 < spray/ASDGM --- > spray's > spray/ASDG 50557c45947 < spreadsheet/SM --- > spreadsheet/MS 50563,50564c45953,45954 < sprightly/RPT < spring/GSMR --- > sprightly/RTP > spring/GSM 50590d45979 < spumone/M 50592c45981 < spumy/RT --- > spumy 50598c45987 < spurious/YP --- > spurious/PY 50610d45998 < spyhole 50619d46006 < squaddie/S 50624c46011 < squally/TR --- > squally 50657c46044 < squelchy/RT --- > squelchy 50663c46050 < squiggly/RT --- > squiggly 50671a46059 > sriracha 50679d46066 < stabilizability 50689c46076 < stack/SMDRG --- > stack/SMDG 50691c46078,46079 < staff/ASDGM --- > staff's > staff/ASDG 50694d46081 < staffroom 50713c46100 < stain/SMDRG --- > stain/SMDG 50721c46108 < stakeholder/SM --- > stakeholder/MS 50724c46111 < stalagmite/SM --- > stalagmite/MS 50731c46118,46119 < stall/SDGM --- > stall's > stall/ISDG 50740c46128 < stamp/SMDRJZG --- > stamp/SMDRZG 50749,50750c46137,46138 < standardization/SM < standardize/GDS --- > standardization/M > standardize/DSG 50761c46149 < standstill/SM --- > standstill/MS 50765d46152 < stapes 50773a46161 > starburst/S 50800a46189 > startup/MS 50803c46192 < starveling/SM --- > starveling/MS 50811c46200 < statehouse/SM --- > statehouse/MS 50829c46218 < statical/Y --- > statically 50837,50838c46226 < statistician/MS < stator/S --- > statistician/SM 50850c46238 < stave/DMG --- > stave/DSMG 50862c46250 < steal/SMRHG --- > steal/SMHG 50866c46254 < stealthy/TRP --- > stealthy/TPR 50870c46258 < steamfitter/MS --- > steamfitter/SM 50882,50883c46270 < steelwork/RSZ < steelworker/M --- > steelworker/SM 50890,50891c46277,46278 < steeplechase/MRS < steeplejack/MS --- > steeplechase/MS > steeplejack/SM 50902d46288 < stellated 50911c46297 < stenographer/MS --- > stenographer/SM 50914c46300,46301 < stent/MS --- > stenosis > stent/SM 50917c46304 < stepbrother/MS --- > stepbrother/SM 50919,50921c46306,46309 < stepchildren < stepdaughter/MS < stepfather/MS --- > stepchildren/M > stepdad/MS > stepdaughter/SM > stepfather/SM 50922a46311 > stepmom/MS 50927,50928c46316,46317 < steppingstone/MS < stepsister/SM --- > steppingstone/SM > stepsister/MS 50930,50931d46318 < stepwise < steradians 50933d46319 < stereographic 50937,50938d46322 < stereoscopically < stereoscopy 50940c46324 < stereotypical/Y --- > stereotypical 50943c46327 < sterilization/MS --- > sterilization/SM 50945d46328 < sterilized/U 50955c46338 < stethoscope/SM --- > stethoscope/MS 50968,50969c46351 < sticking/U < stickleback/MS --- > stickleback/SM 50985c46367 < stigmatize/DSG --- > stigmatize/GDS 50988c46370,46371 < still/ITGSDM --- > still's > still/ITGSD 50998d46380 < stimulated/U 51000,51001d46381 < stimulator < stimulatory 51022c46402 < stirred/U --- > stirred 51026c46406,46407 < stitch/ADSGM --- > stitch's > stitch/ADSG 51031c46412,46413 < stock/AGSDM --- > stock's > stock/AGSD 51041c46423 < stocking/SMD --- > stocking/SM 51066d46447 < stoma 51071d46451 < stomata 51073,51074c46453 < stone/DSMG < stoneless --- > stone/DRSMZG 51075a46455 > stoner/M 51080d46459 < stoney 51090c46469,46470 < stop/USM --- > stop's > stop/US 51094d46473 < stopoff 51104,51107c46483,46487 < store/ADSGM < storefront/SM < storehouse/SM < storekeeper/MS --- > store's > store/ADSG > storefront/MS > storehouse/MS > storekeeper/SM 51110c46490 < storm/ZGSMDR --- > storm/GSMD 51113d46492 < stormtroopers 51116c46495 < storyboard/SM --- > storyboard/MS 51118,51119c46497 < storyline < storyteller/SM --- > storyteller/MS 51136c46514 < straight/SXTPMNRY --- > straight/SPXTMNRY 51141c46519 < straightforward/SYP --- > straightforward/YPS 51143d46520 < straightjacket/SM 51146c46523,46524 < strain/FADSGM --- > strain's > strain/FADSG 51150c46528 < straitjacket/SMDG --- > straitjacket/SGMD 51159c46537 < strangulate/DSGN --- > strangulate/GNDS 51161c46539,46540 < strap/USM --- > strap's > strap/US 51170c46549 < strategist/MS --- > strategist/SM 51175,51177c46554 < stratigraphic < stratigraphical < stratosphere/MS --- > stratosphere/SM 51179d46555 < stratospherically 51190c46566 < streamline/GDS --- > streamline/DSG 51194,51195c46570,46571 < streetlight/MS < streetwalker/MS --- > streetlight/SM > streetwalker/SM 51198c46574 < strengthen/AGSD --- > strengthen/AGDS 51210c46586 < stressful/P --- > stressful 51212,51213d46587 < stretchability < stretchable/U 51216c46590 < stretchy/TRP --- > stretchy/TR 51228c46602 < stride/MGRS --- > stride/MGS 51234c46608 < strikebreaker/MS --- > strikebreaker/SM 51254c46628 < stripy/RT --- > stripy 51264d46637 < stromatolites 51266d46638 < strongbow 51269d46640 < strongish 51286c46657,46658 < structure/AGDSM --- > structure's > structure/AGDS 51288d46659 < structureless 51298d46668 < strutter 51305c46675 < stubbly/TR --- > stubbly 51320d46689 < studier/S 51322c46691 < studious/YP --- > studious/PY 51325,51326c46694,46696 < study/AGDSM < stuff/GSMDR --- > study's > study/AGDS > stuff/GSMD 51335d46704 < stumbling/Y 51349d46717 < stupefying/Y 51362c46730,46731 < style/ADSGM --- > style's > style/ADSG 51369d46737 < stylization 51372c46740 < stymie/M --- > stymie/MDS 51374d46741 < stymy/DSM 51376d46742 < styrene 51387c46753 < subbasement/MS --- > subbasement/SM 51392,51393c46758 < subclass/S < subclauses --- > subclass 51401,51403c46766,46767 < subcontractor/SM < subcultural < subculture/SM --- > subcontractor/MS > subculture/MS 51406,51408c46770,46771 < subdivision/MS < subducted < subduction --- > subdivision/SM > subdominant 51410d46772 < subdued/U 51415d46776 < subharmonic/S 51427,51428c46788 < subjunctive/MS < sublayer --- > subjunctive/SM 51438c46798 < sublunary --- > sublingual 51448c46808,46809 < submission/ASM --- > submission's/A > submission/MS 51452d46812 < submittable 51454c46814 < submitter/S --- > submitter 51457d46816 < suboptimal 51460c46819 < subordinate/MGNDS --- > subordinate/DSMGN 51464c46823 < subpena/GMDS --- > subparagraph 51466a46826 > subprime 51469c46829 < subroutine/MS --- > subroutine/SM 51471c46831 < subscriber/SM --- > subscriber/MS 51473c46833 < subscription/SM --- > subscription/MS 51485d46844 < subsidized/U 51492c46851 < subspace/S --- > subspace 51497c46856 < substantiate/XGNDS --- > substantiate/GNDSX 51503,51504c46862 < substitute/MGNBXDS < substituted/U --- > substitute/XMGNDS 51510a46869 > subsumption/S 51523c46882 < subtly/U --- > subtly 51526c46885 < subtract/GVSD --- > subtract/GSD 51528d46886 < subtractive/Y 51533,51534d46890 < subtype/S < subunit/S 51538d46893 < suburbanization 51550c46905 < succession/MS --- > succession/SM 51565c46920 < suck/MDRZGSB --- > suck/MDRZGS 51571d46925 < sud/S 51590d46943 < suffocating/Y 51594c46947 < suffragette/MS --- > suffragette/SM 51600c46953 < sugarcoat/DGS --- > sugarcoat/GDS 51604c46957 < suggest/ZGVSDR --- > suggest/GVSDR 51608c46961 < suggestive/PY --- > suggestive/YP 51610,51611c46963 < sugillate < suicidal/Y --- > suicidal 51614d46965 < suitabilities 51616d46966 < suitable/UP 51627a46978 > sulfonamides 51639,51640d46989 < sulphate/S < sulphide/S 51649,51651d46997 < sumach/M < summability < summable 51653c46999 < summarize/ZGDRS --- > summarize/GDS 51659c47005 < summerhouse/MS --- > summerhouse/SM 51661c47007 < summery/RT --- > summery 51665c47011 < summon/JDRSZG --- > summon/DRSZG 51685d47030 < suncream 51716d47060 < sunspots/S 51725c47069 < superabundance/SM --- > superabundance/MS 51738d47081 < supercomputing 51743,51745d47085 < supercooled < supercooling < superdense 51752,51754c47092,47093 < superfix < superfluity/SM < superfluous/PY --- > superfluity/M > superfluous/YP 51758d47096 < superheat/D 51761c47099 < superhighway/MS --- > superhighway/SM 51763c47101 < superimpose/DSG --- > superimpose/GDS 51765c47103 < superintend/SGD --- > superintend/DSG 51771c47109 < superlative/MYS --- > superlative/SMY 51773c47111 < supermarket/MS --- > supermarket/SM 51775c47113 < supermodel/S --- > supermodel/SM 51778,51779c47116 < supernatant < supernatural/YS --- > supernatural/SY 51783d47119 < superordinate 51785,51786c47121,47122 < superposition/SM < superpower/MS --- > superposition/M > superpower/SM 51792a47129 > supersize/GDS 51794d47130 < supersonically 51797c47133 < superstition/SM --- > superstition/MS 51799,51801c47135,47137 < superstore/SM < superstructure/SM < supertanker/SM --- > superstore/MS > superstructure/MS > supertanker/MS 51805c47141 < supervise/GNXDS --- > supervise/XGNDS 51808c47144 < supervisor/SM --- > supervisor/MS 51819c47155 < supplement/GMDS --- > supplement/MDGS 51829c47165 < supply/ZGXDRSMN --- > supply/ZGDRSMXN 51831,51832c47167 < supportability < supportable/IU --- > supportable/UI 51837c47172 < supposition/SM --- > supposition/MS 51839c47174 < suppress/GVDS --- > suppress/GDS 51841d47175 < suppressed/U 51844c47178 < suppressor/MS --- > suppressor/SM 51849c47183 < supremacist/SM --- > supremacist/MS 51851,51852c47185 < supremal < supreme/YTR --- > supreme/Y 51858d47190 < surd 51865,51868c47197,47199 < surface/AGDSM < surfaced/U < surfactant/S < surfboard/MDGS --- > surface's > surface/AGDS > surfboard/MDSG 51876d47206 < surlily 51890d47219 < surprised/U 51897,51899c47226,47227 < surreality < surrender/GMDS < surreptitious/YP --- > surrender/MDSG > surreptitious/PY 51910c47238,47239 < survey/ADGSM --- > survey's > survey/ADGS 51913,51914d47241 < survivability < survivable/U 51916c47243 < survivalist/MS --- > survivalist/SM 51935d47261 < sustainably 51952c47278 < swallow/GSMDR --- > swallow/GSMD 51957c47283 < swampland/MS --- > swampland/M 51969d47294 < swappable/U 51971d47295 < swapper/S 51997d47320 < sweatily 52000c47323 < sweatshirt/MS --- > sweatshirt/SM 52005c47328 < sweep/ZGSMRBJ --- > sweep/ZGSMRJ 52009d47331 < sweepstake/SM 52019c47341 < sweetheart/MS --- > sweetheart/SM 52024d47345 < sweetshop 52031a47353 > swerving/U 52053c47375 < swirly/RT --- > swirly 52055d47376 < swishy 52057,52059c47378,47380 < switchback/SM < switchblade/MS < switchboard/MS --- > switchback/MS > switchblade/SM > switchboard/SM 52061,52062d47381 < switchgear < switchover 52067,52069d47385 < swob/MS < swobbed < swobbing 52074,52076d47389 < swop/MS < swopped < swopping 52096,52097d47408 < sycophantically < syllabary 52100c47411 < syllabicate/DSGN --- > syllabicate/GNDS 52114d47424 < symbiont 52123d47432 < symbolist 52126c47435 < symmetric --- > symmetric/Y 52128,52129d47436 < symmetrization < symmetrizing 52138d47444 < symphonists 52144,52146c47450 < symptomless < syn < synagog/MS --- > syn/H 52152c47456 < synch/GMDS --- > synches 52154,52155c47458,47459 < synchronization/MS < synchronize/ADSG --- > synchronization/SM > synchronize/GDS 52157,52158d47460 < synchrony < synchrotron 52176,52177c47478 < synonymic < synonymous/Y --- > synonymous 52181d47481 < synopsizes 52182a47483 > synovial 52186c47487 < synthase/MS --- > synthase/SM 52192a47494 > synths 52199c47501 < sysop/MS --- > sysop/SM 52208a47511 > séance/SM 52226c47529 < tablespoonful/MS --- > tablespoonful/SM 52233d47535 < tabu/GMDS 52242c47544 < tachyon/S --- > tachyon 52264d47565 < tactual 52271c47572 < tagged/U --- > tagged 52284c47585 < tailless/P --- > tailless 52286c47587 < tailor/SGBMD --- > tailor/SGMD 52290d47590 < tailplane 52296d47595 < takeable 52308c47607 < talebearer/SM --- > talebearer/MS 52311d47609 < talentless 52315c47613 < talkative/YP --- > talkative/PY 52360c47658,47659 < tangle/UDSGM --- > tangle's > tangle/UDSG 52371c47670 < tannin/SM --- > tannin/M 52399c47698 < tarantella/SM --- > tarantella/MS 52432a47732 > taser/GMDS 52453c47753 < tatterdemalion/SM --- > tatterdemalion/MS 52476d47775 < taverna/S 52484d47782 < taxed/U 52488c47786 < taxidermist/MS --- > taxidermist/SM 52491d47788 < taxing/U 52511d47807 < teacloth 52517c47813 < tealeaves --- > tealight/MS 52526c47822 < tearful/PY --- > tearful/Y 52530,52531c47826 < tearjerker/SM < tearless --- > tearjerker/MS 52537d47831 < teashop/S 52540c47834 < teaspoonful/MS --- > teaspoonful/SM 52543,52544d47836 < teazel/S < teazle/S 52550c47842 < technician/MS --- > technician/SM 52553a47846 > technobabble 52560d47852 < technophiles 52562,52563d47853 < technophobia < technophobic 52566d47855 < tectonically 52577c47866 < teenage/DRZ --- > teenage/RZ 52579d47867 < teensy/RT 52586d47873 < teethmarks 52594,52595c47881,47882 < telecom/MS < telecommunication/SM --- > telecom/M > telecommunication/MS 52597c47884 < telecommute/DRSZG --- > telecommute/ZGDRS 52600d47886 < telecoms 52632c47918 < teleport/SGD --- > teleport/DSG 52634c47920 < teleprinter/SM --- > teleprinter/MS 52646c47932 < televangelist/SM --- > televangelist/MS 52649d47934 < televisual 52663c47948 < temper/ESMD --- > temper/MDG 52670,52672c47955 < temperature/MS < tempered/U < tempering --- > temperature/SM 52676c47959,47961 < template/SM --- > tempi > template's > template/S 52686c47971 < temptation/SM --- > temptation/MS 52703c47988 < tend/IEFDGS --- > tend/IFEDGS 52709,52710c47994,47995 < tenderfoot/SM < tenderhearted/YP --- > tenderfoot/MS > tenderhearted/PY 52725c48010 < tenon/SM --- > tenon/SMDG 52733,52734d48017 < tensional < tensioned 52753c48036 < terabit/MS --- > terabit/SM 52759c48042 < tercentennial/MS --- > tercentennial/SM 52766,52767c48049 < terminated/U < termination/CMS --- > termination/CSM 52776d48057 < terpsichorean 52780d48060 < terraform/D 52785c48065 < terrestrial/MYS --- > terrestrial/SMY 52795c48075 < territorial/SMY --- > territorial/MS 52806,52807c48086,48087 < tertiary/S < tessellate/XDSGN --- > tertiary > tessellate/DSXGN 52809,52812c48089,48091 < tesseral < test/AKFCDGSM < testability < testable/UF --- > test's/AFK > test/AKFCDGS > testable/CF 52819,52820d48097 < testbed/S < testcard 52823c48100 < tester/KMS --- > tester/KSM 52830c48107 < testimonial/SM --- > testimonial/MS 52836c48113 < testsuite/MS --- > testsuite/SM 52842d48118 < tethered/U 52844d48119 < tetrachloride 52847,52848c48122,48123 < tetrahedron/SM < tetrameter/MS --- > tetrahedron/MS > tetrameter/SM 52851c48126,48127 < textbox/SM --- > textbox/MS > texted 52852a48129 > texting 52854,52856c48131,48132 < textural/Y < texture/MDS < textured/U --- > textural > texture/MGDS 52865,52867c48141 < thankful/PY < thankfuller < thankfullest --- > thankful/YP 52871c48145 < thanksgiving/MS --- > thanksgiving/SM 52876d48149 < thaumaturge 52892d48164 < themas 52906d48177 < theologists 52911c48182 < theoretician/MS --- > theoretician/SM 52917c48188 < theosophist/MS --- > theosophist/SM 52934c48205 < theremin/MS --- > theremin/SM 52939d48209 < thereunder 52946,52948d48215 < thermistor/S < thermochemical < thermocouple/S 52950d48216 < thermodynamical/Y 52952,52954c48218 < thermoelectric < thermoluminescence < thermometer/SM --- > thermometer/MS 52957,52959c48221 < thermophile/S < thermophilic < thermoplastic/MS --- > thermoplastic/SM 52976d48237 < thiamin/M 52991c48252 < thievish/P --- > thievish 52996c48257 < thimbleful/MS --- > thimbleful/SM 53008c48269 < thinking/M --- > thinking's 53014d48274 < thinnish 53048c48308 < thoughtful/PY --- > thoughtful/YP 53073d48332 < threepenny 53099a48359 > thrombolytic 53104c48364,48365 < throne/CDSM --- > throne's > throne/S 53111c48372 < throughway/SM --- > throughway/MS 53117d48377 < throwout 53123c48383 < thrust/ZGSMR --- > thrust/GSM 53140,53142c48400,48402 < thunderbolt/MS < thunderclap/MS < thundercloud/SM --- > thunderbolt/SM > thunderclap/SM > thundercloud/MS 53144,53145c48404 < thunderflashes < thunderhead/MS --- > thunderhead/SM 53148c48407 < thunderstorm/MS --- > thunderstorm/SM 53160d48418 < thyristor/S 53176c48434 < ticklish/PY --- > ticklish/YP 53188d48445 < tideless 53196c48453,48454 < tie/AUSDM --- > tie's > tie/AUSD 53214d48471 < tike/MS 53217c48474 < tile/MZGJDRS --- > tile/MZGDRS 53220c48477,48478 < till/EDRZGSM --- > till's > till/EDRZGS 53225c48483 < timber/SMD --- > timber/SMDG 53227c48485 < timberline/SM --- > timberline/MS 53231d48488 < timebase 53243c48500 < timeserver/MS --- > timeserver/SM 53246,53247d48502 < timestamped < timestamps 53250c48505 < timezone/S --- > timezone 53255c48510 < timorous/YP --- > timorous/PY 53271d48525 < tingly/RT 53276d48529 < tinkly 53278d48530 < tinnily 53289c48541 < tintinnabulation/SM --- > tintinnabulation/MS 53294d48545 < tipi/MS 53310c48561,48563 < tire/AGDSM --- > tiramisu/MS > tire's > tire/AGDS 53313c48566 < tireless/PY --- > tireless/YP 53317d48569 < tiro/M 53319c48571 < tit/SZMR --- > tit/SM 53322d48573 < titanically 53324d48574 < titbit/SM 53336,53338c48586,48587 < titled/UA < titleholder/SM < titling/A --- > titled/U > titleholder/MS 53342,53343d48590 < titrated < titration 53345c48592,48593 < tittivate/DSG --- > tittivate/DSGN > tittivation/M 53355,53356d48602 < toadded < toadding 53362c48608 < toastmaster/MS --- > toastmaster/SM 53366c48612 < tobacconist/MS --- > tobacconist/SM 53378d48623 < toeclip/S 53385d48629 < toffy/SM 53389d48632 < toge 53439c48682,48683 < tone/IZGDRSM --- > tone's > tone/IZGDRS 53458,53459c48702,48704 < tool/ADGSM < toolbar/MS --- > tool's > tool/ADGS > toolbar/SM 53463d48707 < toolmaking 53471,53472c48715 < toothmarks < toothpaste/MS --- > toothpaste/SM 53481c48724 < topdressing/MS --- > topdressing/SM 53494c48737 < topographer/MS --- > topographer/SM 53499,53500c48742 < topologist/S < topology/S --- > topology 53516d48757 < torchlit 53519,53521c48760 < tori < torment/SMDRZG < tormenter/M --- > torment/SMDG 53527,53528d48765 < toroid < toroidal 53537c48774 < torrid/RYPT --- > torrid/YP 53540,53541c48777 < tors/S < torsion/SM --- > torsion/M 53544c48780,48781 < tort/FEASM --- > tort's > tort/EFAS 53546c48783 < tortellini/SM --- > tortellini/M 53549c48786 < tortoiseshell/MS --- > tortoiseshell/SM 53560c48797 < tot/SGMDR --- > tot/SGMD 53562c48799 < totalitarian/MS --- > totalitarian/SM 53565,53566c48802 < totalizator/MS < totalizing --- > totalizator/SM 53584c48820 < touchscreen/SM --- > touchscreen/MS 53586a48823 > touché 53595d48831 < tourer/S 53601c48837 < tournament/MS --- > tournament/SM 53639,53640d48874 < toymaker < toyshop 53641a48876,48878 > trabecula > trabecular > trabecule 53643d48879 < traceability 53645d48880 < traceless 53655c48890 < trackback/MS --- > trackback/SM 53657d48891 < trackbed 53661,53662c48895,48896 < trackway/S < tract/CEKFASM --- > tract's > tract/CEKFAS 53666c48900 < traction/EFACKM --- > traction/FEACKM 53670,53671c48904 < trademark/SMDG < tradeoff/MS --- > trademark/SGMD 53693c48926 < tragical/Y --- > tragically 53700c48933 < train/ZGSMDRBJ --- > train/ZGSMDRB 53726,53727c48959 < trampoline/DSMG < trampolinist --- > trampoline/MGDS 53733c48965 < tranquilize/DRSZG --- > tranquilize/ZGDRS 53735,53736c48967 < tranquillize/DRSZG < tranquillizer/M --- > tranquillity/M 53740d48970 < transactional 53744c48974 < transcend/SGD --- > transcend/GSD 53747c48977 < transcendental/SY --- > transcendental/Y 53749c48979 < transcendentalist/MS --- > transcendentalist/SM 53754,53757c48984,48985 < transcription/MS < transcriptional < transducer/SM < transduction --- > transcription/SM > transducer/MS 53760,53762c48988,48989 < transfect/DSMG < transfer/MSB < transferability --- > transfect/SGD > transfer/MBS 53764d48990 < transferee/S 53770c48996 < transfinite/Y --- > transfinite 53772,53775c48998,48999 < transform/SMDRZGB < transformation/MS < transformational < transformed/U --- > transform/BSZGMDR > transformation/SM 53777c49001 < transfuse/DSGNX --- > transfuse/DSXGN 53779c49003 < transgender/MDS --- > transgender/SD 53781c49005 < transgene/MS --- > transgene/S 53783,53784c49007,49008 < transgress/GVDS < transgression/MS --- > transgress/GDS > transgression/SM 53786d49009 < transhipment 53790c49013 < transistor/MS --- > transistor/SM 53793c49016 < transition/MDGS --- > transition/GSMD 53795c49018 < transitive/IMYS --- > transitive/ISMY 53801c49024 < translate/BXDSGN --- > translate/DSGNBX 53804,53806c49027,49028 < translational < translator/MS < transliterate/GNXDS --- > translator/SM > transliterate/DSGNX 53807a49030 > translocation 53811c49034 < transmigrate/DSGN --- > transmigrate/GNDS 53814,53816c49037,49039 < transmission/ASM < transmissive < transmit/AS --- > transmission's/A > transmission/MS > transmit/S 53820,53822c49043,49045 < transmitted/A < transmitter/MS < transmitting/A --- > transmitted > transmitter/SM > transmitting 53824,53827c49047,49050 < transmogrify/NGDS < transmutation/MS < transmute/DSBG < transnational/SM --- > transmogrify/DSNG > transmutation/SM > transmute/BDSG > transnational/MS 53830d49052 < transonic 53836c49058 < transplant/GMDS --- > transplant/MDGS 53840,53842c49062 < transport/SZGBMDR < transportability < transportable/U --- > transport/BSZGMDR 53846,53848c49066,49067 < transposition/SM < transputer/S < transsexual/MS --- > transposition/MS > transsexual/SM 53850c49069 < transship/LS --- > transship/SL 53855c49074 < transverse/SMY --- > transverse/MYS 53864c49083 < trappable/U --- > trappable 53891c49110 < treacherous/YP --- > treacherous/PY 53897d49115 < treader 53905d49122 < treasurership 53908c49125 < treatable/U --- > treatable 53927,53928c49144 < tremble/DSJMG < trembling/Y --- > tremble/DSMG 53934c49150,49151 < trench/AIGSDM --- > trench's > trench/ADSG 53946,53947c49163 < trepanned < trepidation/SM --- > trepidation/M 53955d49170 < triadic 53960,53961d49174 < trialled < trialling 53963d49175 < triangulable 53965c49177 < triangulate/XDSGN --- > triangulate/GNDS 53969,53970c49181 < triatomic < tribal/Y --- > tribal 53977c49188 < tribulation/MS --- > tribulation/SM 53981c49192,49193 < tribute/FSM --- > tribute's > tribute/FS 53983c49195 < tricentennial/SM --- > tricentennial/MS 54002,54003c49214 < trifecta/S < triffid/S --- > trifecta/SM 54009,54010c49220 < triggest < triglyceride/SM --- > triglyceride/MS 54014d49223 < trigram/S 54018d49226 < trilingual 54035d49242 < trimodal 54044d49250 < triplane 54048c49254 < triplicate/MGNDS --- > triplicate/MGDS 54051c49257 < tripos/S --- > tripos 54061d49266 < trisector 54079c49284 < trivialization/SM --- > trivialization/M 54085c49290 < trodden/AU --- > trodden/A 54091d49295 < trollish 54093d49296 < trolly/SM 54098,54099d49300 < tronned < tronning 54109,54111c49310 < tropopause < troposphere/MS < tropospheric --- > troposphere/SM 54120,54121c49319,49320 < troublemaker/SM < troubleshoot/ZGDRS --- > troublemaker/MS > troubleshoot/DRZGS 54162c49361 < truncate/GNXDS --- > truncate/GNDS 54168d49366 < trunnion/S 54170,54171c49368 < trust/IESGDM < trusted/U --- > trust/ESGMD 54176c49373 < trustingly --- > trusting/Y 54178c49375 < trustworthy/PTR --- > trustworthy/TPR 54181c49378 < truthful/UPY --- > truthful/UYP 54182a49380 > truthiness 54184c49382,49383 < try/AGDSM --- > try's > try/AGDS 54188,54190c49387 < tsarina/MS < tsarism < tsarist/S --- > tsarists 54197d49393 < tubae 54243,54244c49439 < tumulus < tun/SZGMDRBJ --- > tun/SZGMDR 54258c49453,49454 < tuppence/S --- > tuple/S > tuppence 54275c49471 < turducken --- > turducken/SM 54278c49474 < turfy/RT --- > turfy 54289d49484 < turned/U 54334c49529 < twee/DP --- > twee 54350a49546 > twerk/SDG 54353,54354c49549,49550 < twiddle/MGDRS < twiddly/RT --- > twiddle/MGDS > twiddly 54375,54376c49571,49573 < twirly/TR < twist/USDGM --- > twirly > twist's > twist/USDG 54397a49595 > tympanic 54400c49598,49599 < type/AGDSM --- > type's > type/AGDS 54402d49600 < typed/U 54404d49601 < typeless 54407c49604 < typesetter/SM --- > typesetter/MS 54424c49621 < typographer/MS --- > typographer/SM 54428d49624 < typological/Y 54432d49627 < tyrannicide 54434c49629 < tyrannosaur/SM --- > tyrannosaur/MS 54440,54444d49634 < tyrosine < tzar/MS < tzarina/SM < tzarism < tzarist/S 54452d49641 < uglification 54457d49645 < ukelele/SM 54460c49648 < ulcerate/XDSGN --- > ulcerate/DSGN 54475c49663 < ultralight/MS --- > ultralight/SM 54478,54479c49666 < ultramontane < ultrasonic/S --- > ultrasonic 54493d49679 < umbrageous 54504d49689 < unaccountability 54506d49690 < unadaptive 54510d49693 < unambiguity 54519d49701 < unattainably 54526,54527d49707 < unbiased/Y < unbiassedly 54529a49710 > unblushing/Y 54532d49712 < unbreakability 54538d49717 < uncatalogued 54540d49718 < unchallengeable 54543d49720 < uncharismatic 54546d49722 < uncheckable 54552,54553c49728 < unclench/D < uncollimated --- > uncomfortable 54555c49730 < uncommunicative --- > uncomplaining/Y 54558d49732 < uncompromisable 54561d49734 < unconfused 54562a49736 > unconscionable 54566d49739 < uncontentious 54567a49741 > uncontroversial 54570,54572c49744 < uncouth/YP < uncreative < uncross/B --- > uncouth/Y 54579d49750 < undead 54584c49755 < underachieve/ZGLDRS --- > underachieve/LZGDRS 54587a49759 > underappreciated 54594c49766 < undercharge/DSMG --- > undercharge/MGDS 54600c49772 < undercoat/JGSMD --- > undercoat/GJSMD 54602d49773 < undercooked 54611,54612d49781 < undereducated < underemphasis 54615c49784 < underestimate/MGNXDS --- > underestimate/DSMGNX 54617,54618c49786 < underexploited < underexpose/DSG --- > underexpose/GDS 54621c49789 < underfeed/SG --- > underfeed/GS 54625,54626c49793 < underframe < underfund/GD --- > underfunded 54633,54634c49800,49801 < undergraduate/MS < underground/SM --- > undergraduate/SM > underground/MS 54637c49804 < underhanded/YP --- > underhanded/PY 54639d49805 < underinvestment 54643c49809 < underline/MGJDS --- > underline/MGDS 54646d49811 < underloaded 54661,54662c49826 < underpayment/MS < underperformed --- > underpayment/SM 54665c49829 < underpinning/SM --- > underpinning/MS 54668,54670d49831 < underpopulation < underpowered < underpricing 54677d49837 < undersealed 54679c49839 < undersell/SG --- > undersell/GS 54686c49846 < undersign/DSG --- > undersign/DGS 54688c49848 < undersize/D --- > undersized 54691,54694d49850 < underspecification < underspecified < underspend/G < underspent 54696,54697c49852 < understand/RGSBJ < understandability --- > understand/SGBJ 54700c49855 < understate/GDSL --- > understate/DSLG 54702d49856 < understocked 54704,54708c49858,49859 < understorey < understory < understrength < understudy/DSMG < undertake/ZGRSJ --- > understudy/GDSM > undertake/ZGJRS 54717d49867 < underusing 54720c49870 < undervalue/GDS --- > undervalue/DSG 54726,54728c49876,49879 < underwhelm/SDG < underworld/SM < underwrite/RSZG --- > underwhelm/DGS > underwire/DS > underworld/MS > underwrite/ZGRS 54732c49883 < undesirable/SM --- > undesirable/MS 54734,54735d49884 < undiscerning < undisguised/Y 54740,54741d49888 < undrinkability < undroppable 54756d49902 < unergonomic 54759,54760c49905 < uneven/RYPT < unexacting --- > uneven/Y 54764c49909 < unexpected/PY --- > unexpected/YP 54774d49918 < unfetchable 54784d49927 < unfocussed 54787a49931 > unfriend/GD 54791d49934 < unfulfillable 54793d49935 < unfussy 54795c49937,49938 < ungainly/RTP --- > ungainly/RPT > ungenerous 54797d49939 < unglamorous 54808d49949 < unheroic 54816,54817d49956 < unicyclist/S < unideal 54819d49957 < unifiable 54821,54822c49959 < unifier < uniform/SMDRYTG --- > uniform/SMDYG 54827,54828d49963 < unilateralist < unimportance 54830a49966 > uninformative 54831a49968 > uninstall/BSZGDR 54833d49969 < unintellectual 54838d49973 < unintuitive 54843d49977 < unipolar 54857d49990 < universalism 54862,54863c49995 < unixism/S < unjam --- > unjust/Y 54867d49998 < unknightly 54873d50003 < unlikeable 54875d50004 < unlink/D 54882c50011 < unmanageably --- > unman/S 54884d50012 < unmannerly 54887,54888d50014 < unmeetable < unmelodious 54895,54897d50020 < unmistakeable < unmistakeably < unmnemonic 54900c50023 < unmusical/Y --- > unmusical 54903,54904d50025 < unobjectionable < unobservable 54909,54912d50029 < unoriginality < unorthodoxy < unpack/Z < unparallelled 54916d50032 < unphysical 54920,54921d50035 < unploughed < unpoetical 54924d50037 < unportable 54929d50041 < unpronounced 54931,54932d50042 < unpunctual < unpunctuality 54935d50044 < unraisable 54937,54938c50046 < unreadability < unready/TR --- > unready 54941d50048 < unreceptive 54948c50055 < unrepeated --- > unrepentant 54951d50057 < unresisting/Y 54953d50058 < unriddle 54959,54961c50064 < unsafe/T < unsaleable < unsatisfactory/P --- > unsafe/YTR 54963,54966c50066 < unseal/B < unsearchable < unseasonal < unseaworthiness --- > unscathed 54969,54971c50069 < unseen/MS < unselfconscious/Y < unsellable --- > unseen/M 54973a50072 > unshakable 54974a50074 > unshakeable 54975a50076 > unshockable 54977,54978d50077 < unshrinking < unsighted 54980,54981c50079,50080 < unsightly/TP < unskilful --- > unsightly/PT > unsmiling 54984c50083 < unsophistication --- > unsold 54985a50085 > unspeakable 54989d50088 < unspoilt 54991,54994c50090,50091 < unstable/RT < unstack/DG < unstamped < unsteady/PTR --- > unstable > unsteady/TRP 54996d50092 < unstoppably 55000c50096,50097 < unsure/P --- > unsuitable > unsure 55002d50098 < unswerving/Y 55005d50100 < untenability 55008d50102 < unthoughtful 55013c50107 < untouchable/SM --- > untouchable/MS 55017d50110 < unusably 55020d50112 < unvarying/Y 55022d50113 < unwarrantably 55023a50115 > unwavering 55025d50116 < unwedge 55030,55031d50120 < unwind/B < unwisdom 55035c50124 < unwound/D --- > unwound 55045d50133 < updatability 55050,55051c50138 < upgrade/MGDSBJ < upgradeable --- > upgrade/MGDS 55057,55058c50144,50145 < upholster/ASDG < upholsterer/SM --- > upholster/ASGD > upholsterer/MS 55080d50166 < uprate/DG 55113d50198 < upwelling 55122c50207 < urbanologist/SM --- > urbanologist/MS 55133,55134c50218 < urethritis < urge/MGDSJ --- > urge/MGDS 55156,55157d50239 < useability/M < useable 55168c50250,50251 < usual/UYM --- > usual's > usual/UY 55187c50270 < utter/SDRYTG --- > utter/SDYG 55189a50273 > uveitis 55200c50284 < vacationist/MS --- > vacationist/SM 55215c50299 < vagina/MS --- > vagina/SM 55221a50306 > vagus 55228c50313 < valediction/SM --- > valediction/MS 55241d50325 < validated/U 55243a50328 > validator/S 55253c50338,50339 < value/CAGSDM --- > value's > value/CAGSD 55271d50356 < vanishing/Y 55276d50360 < vanquished/U 55278a50363 > vape/GDS 55287c50372 < vaporware/S --- > vaporware 55295,55296c50380,50381 < variant/ISM < variate/NXS --- > variant/MS > variate/NX 55298d50382 < variational 55312a50397 > varying/U 55315a50401 > vasoconstriction 55333,55334d50418 < vectorization < vectorized 55338c50422 < veg/M --- > veg/SM 55339a50424 > veganism 55347d50431 < vegetational 55358c50442,50443 < veil/UDGSM --- > veil's > veil/UDGS 55363d50447 < veldt/SM 55368d50451 < velor 55371,55373c50454,50456 < velvet/MS < velveteen/MS < velvety/TR --- > velvet/M > velveteen/M > velvety 55377,55378c50460 < vend/DRZGS < vender/KM --- > vend/DGS 55388d50469 < venetian 55398c50479,50480 < vent/DGSM --- > vent's > vent/DGS 55400d50481 < ventilated/U 55402,55403c50483,50484 < ventilator/MS < ventral/Y --- > ventilator/SM > ventral 55410c50491 < venturesome/YP --- > venturesome/PY 55412c50493 < venturous/YP --- > venturous/PY 55427c50508 < verbose/YP --- > verbose/Y 55432c50513 < verdigris/MDSG --- > verdigris/GMDS 55434c50515,50516 < verge/FDSGM --- > verge's > verge/FDSG 55436d50517 < verifiability 55440c50521 < verify/DRSNXZG --- > verify/DSNG 55450d50530 < vermillion/M 55454c50534 < vernacular/SM --- > vernacular/MS 55459a50540 > versa 55464d50544 < versicle 55467c50547 < versify/NZGDRS --- > versify/ZGNDRS 55468a50549,50550 > versioned > versioning 55470a50553 > vert/A 55488c50571,50572 < vest/ILDGSM --- > vest's > vest/ILDGS 55490d50573 < vestibular 55502c50585 < veterinarian/SM --- > veterinarian/MS 55529d50611 < vibrational/Y 55546c50628 < vicinity/SM --- > vicinity/M 55553d50634 < victimless 55558a50640 > vicuña/MS 55564d50645 < videodisk/MS 55567c50648 < videotex/S --- > videotex 55569c50650 < view/AMDRBSZG --- > view/AMDRSZG 55572c50653 < viewfinder/MS --- > viewfinder/SM 55583c50664 < vignettist/SM --- > vignettist/MS 55599d50679 < ville 55607d50686 < vindaloos 55614c50693 < vinegar/SM --- > vinegar/M 55636c50715 < violoncello/SM --- > violoncello/MS 55649c50728 < virologist/MS --- > virologist/SM 55651a50731 > virtualization 55653d50732 < virtuosic 55665,55666c50744 < viscid/I < viscometer --- > viscid 55675c50753 < visibility/ISM --- > visibility/IM 55680,55681c50758,50759 < visit/ASGDM < visitable/U --- > visit's > visit/ASGD 55684d50761 < visited/U 55689c50766 < visualization/MS --- > visualization/SM 55703c50780 < viticulturist/SM --- > viticulturist/MS 55734,55735d50810 < vizir/SM < vizor/SM 55749c50824 < vociferous/PY --- > vociferous/YP 55752d50826 < voe/S 55758a50833 > voicemail/M 55762,55763c50837,50839 < vol < volatile/S --- > voilà > vol/S > volatile 55767,55768d50842 < volcanically < volcanism 55778c50852 < volleyball/SM --- > volleyball/MS 55787,55788c50861 < volumetric < voluminous/PY --- > voluminous/YP 55806d50878 < vorticity 55808c50880,50881 < vote/CGVDSM --- > vote's > vote/CGVDS 55821d50893 < vulcanism 55824d50895 < vulcanologist 55840a50912 > vuvuzela/MS 55844c50916 < wackes --- > wack/RTS 55872d50943 < waggly 55881c50952 < wainscot/SMDGJ --- > wainscot/SJMDG 55883c50954,50956 < wainwright/SM --- > wainscotted > wainscotting/MS > wainwright/MS 55891d50963 < waitpeople 55904c50976 < walk/BMDRZGS --- > walk/MDRZGS 55914d50985 < walla/S 55919d50989 < wallchart 55926c50996 < wallpaper/GSMD --- > wallpaper/SMDG 55938c51008 < wanderlust/MS --- > wanderlust/SM 55951c51021 < wanton/MDRYSPG --- > wanton/MDYSPG 55954c51024 < war/SGM --- > war/SM 55964d51033 < wardship 55967,55968c51036 < warehouseman < warez/S --- > warez 55989,55990c51057 < warned/U < warning/MY --- > warning/M 56010c51077,51078 < wash/BJMDRSZG --- > wasabi > wash/BMDRSZG 56017d51084 < washday 56037c51104 < wastebasket/SM --- > wastebasket/MS 56042a51110 > wastewater 56048d51115 < watched/U 56050c51117 < watchful/PY --- > watchful/YP 56057c51124 < watchtower/MS --- > watchtower/SM 56061a51129 > waterboard/DJSG 56064,56065c51132 < watercolorists < watercourse/MS --- > watercourse/SM 56073d51139 < waterless 56077,56078c51143 < waterman < watermark/MDSG --- > watermark/MDGS 56082c51147 < waterproof/SGMD --- > waterproof/SMDG 56087c51152 < waterspout/MS --- > waterspout/SM 56090c51155 < waterwheel/MS --- > waterwheel/SM 56098,56100c51163 < waveform/S < wavefront < waveguide/S --- > waveform 56107,56108c51170 < wavering/UY < wavily --- > wavering/Y 56123,56124d51184 < wayleave/S < waymarked 56140d51199 < weakly/RT 56147d51205 < weanling 56149c51207 < weaponize/DSG --- > weaponize/GDS 56160d51217 < wearying/Y 56163,56164c51220,51221 < weatherboard/GS < weathercock/SM --- > weatherboard/SG > weathercock/MS 56170,56171c51227,51228 < weatherperson/SM < weatherproof/SGD --- > weatherperson/MS > weatherproof/GSD 56182c51239 < webcast/MS --- > webcast/SMG 56185a51243,51244 > webinar/SM > webisode/MS 56189c51248 < webpage/MS --- > webpage/SM 56203d51261 < weeds/S 56221c51279,51280 < weigh/AGDM --- > weigh's > weigh/AGD 56230c51289 < weightlifter/SM --- > weightlifter/MS 56238d51296 < welch/GDS 56255c51313 < welterweight/MS --- > welterweight/SM 56278,56279d51335 < wetsuit/S < wettable 56286d51341 < whacky/TR 56291d51345 < whales/S 56297c51351 < wharf/SM --- > wharf/M 56314,56315c51368,51369 < wheel/SMDRZG < wheelbarrow/MS --- > wheel/SMDRG > wheelbarrow/SM 56318c51372 < wheelhouse/SM --- > wheelhouse/MS 56320c51374 < wheelwright/SM --- > wheelwright/MS 56364d51417 < whimsey/MS 56382,56383c51435,51436 < whippletree/MS < whippoorwill/SM --- > whippletree/SM > whippoorwill/MS 56390,56391c51443,51445 < whirlybird/MS < whirr/SMDG --- > whirlybird/SM > whirred > whirring 56396c51450,51452 < whisper/JMDRSZG --- > whisky/SM > whiskys > whisper/MDRSZG 56402c51458 < white/SPMY --- > white/SPM 56416c51472 < whitewash/GMDS --- > whitewash/MDSG 56425a51482 > whizz/MDSG 56427,56429d51483 < whizzed < whizzes < whizzing 56437d51490 < whodunnit/SM 56465c51518 < whorehouse/SM --- > whorehouse/MS 56484,56486c51537 < wicketkeeper/S < wicketkeeping < wide/YTRSP --- > wide/YTRP 56506d51556 < wifely/TR 56513d51562 < wiggles/S 56536a51586 > wilful/P 56542d51591 < willie 56544,56545c51593 < willing/UTPY < willinger --- > willing/UPY 56549c51597 < willowy/TR --- > willowy 56561c51609,51610 < wind/UASGM --- > wind's > wind/UASG 56564c51613 < windbreak/ZSMR --- > windbreak/SZMR 56572c51621 < windflower/SM --- > windflower/MS 56575,56576c51624,51625 < winding/SM < windjammer/MS --- > winding's > windjammer/SM 56588c51637 < windshield/MS --- > windshield/SM 56603d51651 < wineskin 56607a51656 > wingnut/SM 56614c51663 < winnable --- > winnable/U 56626d51674 < wintery/RT 56631c51679,51680 < wire/AGDSM --- > wire's > wire/AGDS 56635d51683 < wirer 56646c51694 < wisecrack/GMDS --- > wisecrack/MDSG 56648d51695 < wisely/TR 56653c51700 < wishlist/MS --- > wishlist/SM 56657d51703 < wistaria/SM 56664d51709 < witchdoctor/S 56681c51726 < withstand/SG --- > withstand/GS 56695c51740 < wiz/M --- > wiz/S 56701c51746 < wobble/MGDRS --- > wobble/MGDS 56717c51762 < wolfish/Y --- > wolfish 56739c51784 < wonderful/PY --- > wonderful/YP 56749,56750c51794 < wonton/MS < woo/SZGDRY --- > woo/SZGDR 56771c51815 < woodpecker/SM --- > woodpecker/MS 56778d51821 < woodsmoke 56789c51832 < wool/MNYSX --- > wool/MNX 56792c51835 < woolie/M --- > wooliness 56795d51837 < wooly/TPRSM 56800c51842,51843 < word/AJDSGM --- > word's > word/ADSG 56805c51848 < wording/M --- > wording/SM 56812,56813c51855,51856 < work/ADJSGM < workability/U --- > work's > work/ADJSG 56825c51868 < workforce/SM --- > workforce/M 56828c51871 < working/M --- > working's 56841,56842d51883 < workpeople < workpiece/S 56849d51889 < workspace 56885c51925 < worthless/YP --- > worthless/PY 56888,56889c51928,51929 < worthy/UPRTM < wost --- > worthy's > worthy/UPRT 56906c51946,51947 < wrap/USM --- > wrap's > wrap/US 56928c51969 < wretched/PTRY --- > wretched/TPRY 56932c51973 < wriggly/RT --- > wriggly 56942,56943c51983,51984 < writ/MRSZ < write/ASBJG --- > writ/MRBJSZG > write/S 56945d51985 < writeup 56991,56992d52030 < xreffed < xreffing 57021c52059 < xylophonist/SM --- > xylophonist/MS 57031d52068 < yack/MDSG 57048c52085 < yardmaster/SM --- > yardmaster/MS 57051d52087 < yarmelke/SM 57060d52095 < yawning/Y 57073c52108 < yearning/MY --- > yearning/M 57091c52126 < yeshivah/M --- > yeshivot 57114,57115d52148 < yoghourt/SM < yoghurt/MS 57118d52150 < yogin/SM 57120c52152,52153 < yoke/UGDSM --- > yoke's > yoke/UGDS 57127d52159 < york/RZ 57161c52193 < yuppie/M --- > yuppie/MS 57163d52194 < yuppy/SM 57185,57186c52216 < zenning < zeolites --- > zeolite/S 57196,57198d52225 < zeugma < zigamorph < zigamorphs 57213c52240,52241 < zip/USM --- > zip's > zip/US 57222a52251 > zlotys 57225d52253 < zombi/SM 57228c52256,52257 < zone/AGDSM --- > zone's > zone/AGDS 57239c52268,52270 < zorch/GDS --- > zooplankton > zorch > zoster 57242d52272 < zugzwang 57247a52278,52284 > Ångström/M > éclair/SM > éclat/M > élan/M > émigré/SM > épée/MS > étude/SM diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 9,10d8 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d61 < rmdir "searchplugins/" 73d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 6140657 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:50 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 6009584 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:50 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 6206191 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:50 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5681869 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:50 source/bin/searchplugins/amazondotcom.xml 5812940 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:50 source/bin/searchplugins/aol-web-search.xml 5812939 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:50 source/bin/searchplugins/bing.xml 5681866 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:50 source/bin/searchplugins/eBay.xml 5550793 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:50 source/bin/searchplugins/twitter.xml 5681864 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:50 source/bin/searchplugins/wikipedia.xml 5681863 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:50 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:50:30-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:50:32 GMT Keep-Alive: timeout=5, max=997 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.12M=0s 2016-05-09 17:50:30 (2.12 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ru/thunderbird-38.8.0.complete.mar' from cache... Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/ru/Thunderbird Setup 38.5.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.5.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/ru/Thunderbird Setup 38.5.0.exe'] --2016-05-09 17:50:32-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.5.0/win32/ru/Thunderbird%20Setup%2038.5.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34391296 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:50:34 GMT ETag: "156e8f8c4ce95bffab7a848ca7c1dd79" Last-Modified: Wed, 23 Dec 2015 00:22:33 GMT x-amz-replication-status: COMPLETED x-amz-version-id: XFvDtM5T5YklcU.3ocz80RQQCp7dzt.U X-Cache: Miss from cloudfront Via: 1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront) X-Amz-Cf-Id: 30FyoFrk417ZZti3L9XhqT0PXFHtgwNve0VUAmVguSpcgMtaAxZTxw== Length: 34391296 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.5.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.57M 19s 3072K ........ ........ ........ ........ ........ ........ 18% 4.03M 12s 6144K ........ ........ ........ ........ ........ ........ 27% 3.53M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 5.00M 7s 12288K ........ ........ ........ ........ ........ ........ 45% 4.64M 6s 15360K ........ ........ ........ ........ ........ ........ 54% 4.24M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 2.82M 4s 21504K ........ ........ ........ ........ ........ ........ 73% 3.73M 3s 24576K ........ ........ ........ ........ ........ ........ 82% 3.82M 2s 27648K ........ ........ ........ ........ ........ ........ 91% 3.96M 1s 30720K ........ ........ ........ ........ ........ .... 100% 2.83M=9.9s 2016-05-09 17:50:42 (3.33 MB/s) - 'Thunderbird Setup 38.5.0.exe' saved [34391296/34391296] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ru/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yandex.xml PREPARE REMOVEFILE searchplugins/yandex-slovari.xml PREPARE REMOVEFILE searchplugins/wikipedia-ru.xml PREPARE REMOVEFILE searchplugins/priceru.xml PREPARE REMOVEFILE searchplugins/ozonru.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/duckduckgo-ru.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/ru.dic PREPARE REMOVEFILE dictionaries/ru.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yandex.xml PREPARE ADD searchplugins/yandex-slovari.xml PREPARE ADD searchplugins/wikipedia-ru.xml PREPARE ADD searchplugins/priceru.xml PREPARE ADD searchplugins/ozonru.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/duckduckgo-ru.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/ru.dic PREPARE ADD dictionaries/ru.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yandex.xml EXECUTE REMOVEFILE searchplugins/yandex-slovari.xml EXECUTE REMOVEFILE searchplugins/wikipedia-ru.xml EXECUTE REMOVEFILE searchplugins/priceru.xml EXECUTE REMOVEFILE searchplugins/ozonru.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/duckduckgo-ru.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/ru.dic EXECUTE REMOVEFILE dictionaries/ru.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yandex.xml EXECUTE ADD searchplugins/yandex-slovari.xml EXECUTE ADD searchplugins/wikipedia-ru.xml EXECUTE ADD searchplugins/priceru.xml EXECUTE ADD searchplugins/ozonru.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/duckduckgo-ru.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/ru.dic EXECUTE ADD dictionaries/ru.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yandex.xml FINISH REMOVEFILE searchplugins/yandex-slovari.xml FINISH REMOVEFILE searchplugins/wikipedia-ru.xml FINISH REMOVEFILE searchplugins/priceru.xml FINISH REMOVEFILE searchplugins/ozonru.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/duckduckgo-ru.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/ru.dic FINISH REMOVEFILE dictionaries/ru.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yandex.xml FINISH ADD searchplugins/yandex-slovari.xml FINISH ADD searchplugins/wikipedia-ru.xml FINISH ADD searchplugins/priceru.xml FINISH ADD searchplugins/ozonru.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/duckduckgo-ru.xml FINISH ADD searchplugins/bing.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/ru.dic FINISH ADD dictionaries/ru.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.week.start", 1); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ru"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Годовщины,Дни рождениÑ,БизнеÑ,Звонки,Клиенты,КонкурÑÑ‹,Заказчики,Избранное,Ответы,Подарки,ОтпуÑк,Идеи,Доходы,Разное,Личное,Проекты,Праздники,Ð’Ñтречи,ПоÑтавщики,ПутешеÑтвиÑ,Каникулы"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.week.start", 1); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ru"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_8-00000\l10n\ru\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Годовщины,Дни рождениÑ,БизнеÑ,Звонки,Клиенты,КонкурÑÑ‹,Заказчики,Избранное,Ответы,Подарки,ОтпуÑк,Идеи,Доходы,Разное,Личное,Проекты,Праздники,Ð’Ñтречи,ПоÑтавщики,ПутешеÑтвиÑ,Каникулы"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,16d8 < remove "searchplugins/yandex.xml" < remove "searchplugins/yandex-slovari.xml" < remove "searchplugins/wikipedia-ru.xml" < remove "searchplugins/priceru.xml" < remove "searchplugins/ozonru.xml" < remove "searchplugins/google.xml" < remove "searchplugins/duckduckgo-ru.xml" < remove "searchplugins/bing.xml" 18a11 > remove "prldap60.dll" 27,29d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 33d22 < remove "mozalloc.dll" 38a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 45,47c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 50,52c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 72d61 < rmdir "searchplugins/" 74d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 7451388 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:51 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 7385851 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:51 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 7451386 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:51 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 5944016 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:51 source/bin/searchplugins/bing.xml 6009551 1 -rw-r--r-- 1 cltbld Administrators 1664 May 17:51 source/bin/searchplugins/duckduckgo-ru.xml 5944014 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:51 source/bin/searchplugins/google.xml 5878477 3 -rw-r--r-- 1 cltbld Administrators 5804 May 17:51 source/bin/searchplugins/ozonru.xml 6009548 1 -rw-r--r-- 1 cltbld Administrators 1370 May 17:51 source/bin/searchplugins/priceru.xml 6009547 5 -rw-r--r-- 1 cltbld Administrators 9413 May 17:51 source/bin/searchplugins/wikipedia-ru.xml 5878474 1 -rw-r--r-- 1 cltbld Administrators 1794 May 17:51 source/bin/searchplugins/yandex-slovari.xml 5747401 4 -rw-r--r-- 1 cltbld Administrators 7674 May 17:51 source/bin/searchplugins/yandex.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/fy-NL/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/fy-NL/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/fy-NL/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:51:17-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/fy-NL/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:51:20 GMT Keep-Alive: timeout=5, max=948 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.14M=0s 2016-05-09 17:51:18 (2.14 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fy-NL/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fy-NL/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:51:18-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fy-NL/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41600125 Connection: keep-alive Date: Tue, 10 May 2016 00:38:53 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 3k1mEa7saCqg950y.I_bwN7VnOY20K0v Last-Modified: Tue, 03 May 2016 14:57:56 GMT ETag: "8e354286203f4fccd929f794826b9836" Accept-Ranges: bytes Server: AmazonS3 Age: 748 X-Cache: Hit from cloudfront Via: 1.1 296faebadd40feee8b2eb0e10d5786d2.cloudfront.net (CloudFront) X-Amz-Cf-Id: ymNlcbpv7ILe9N3CwPbvN3g9LiFdvdNzG8nPNxovRU_hd0dodLmB1Q== Length: 41600125 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.53M 24s 3072K ........ ........ ........ ........ ........ ........ 15% 9.45M 13s 6144K ........ ........ ........ ........ ........ ........ 22% 17.3M 8s 9216K ........ ........ ........ ........ ........ ........ 30% 13.8M 6s 12288K ........ ........ ........ ........ ........ ........ 37% 18.8M 5s 15360K ........ ........ ........ ........ ........ ........ 45% 27.2M 4s 18432K ........ ........ ........ ........ ........ ........ 52% 19.8M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 21.2M 2s 24576K ........ ........ ........ ........ ........ ........ 68% 29.3M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 23.8M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 30.2M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 32.9M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 34.0M 0s 39936K ........ .. 100% 20.8M=3.8s 2016-05-09 17:51:22 (10.5 MB/s) - 'update/complete.mar' saved [41600125/41600125] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ga-IE/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ga-IE/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ga-IE/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:51:23-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ga-IE/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:51:26 GMT Keep-Alive: timeout=5, max=998 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.93M=0s 2016-05-09 17:51:24 (1.93 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ga-IE/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ga-IE/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:51:24-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ga-IE/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41608847 Connection: keep-alive Date: Tue, 10 May 2016 00:39:44 GMT x-amz-replication-status: COMPLETED x-amz-version-id: AEUiR4TxbmS0B6cw1t6duIsZW5muDLls Last-Modified: Tue, 03 May 2016 15:13:00 GMT ETag: "b30c80a3a5759b74600ff364297e627b" Accept-Ranges: bytes Server: AmazonS3 Age: 703 X-Cache: Hit from cloudfront Via: 1.1 296faebadd40feee8b2eb0e10d5786d2.cloudfront.net (CloudFront) X-Amz-Cf-Id: 5B6iBtNomTzUvoRJjRXgQf8Y82hpE3MZ1PC_izJ-dIr-DXt7sBQJUA== Length: 41608847 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.16M 32s 3072K ........ ........ ........ ........ ........ ........ 15% 3.18M 20s 6144K ........ ........ ........ ........ ........ ........ 22% 5.40M 14s 9216K ........ ........ ........ ........ ........ ........ 30% 6.39M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 9.31M 8s 15360K ........ ........ ........ ........ ........ ........ 45% 9.60M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 12.3M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 13.1M 4s 24576K ........ ........ ........ ........ ........ ........ 68% 17.0M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 18.1M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 18.7M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 19.4M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 20.5M 0s 39936K ........ .. 100% 50.6M=6.5s 2016-05-09 17:51:31 (6.13 MB/s) - 'update/complete.mar' saved [41608847/41608847] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gd/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gd/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gd/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:51:32-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gd/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:51:34 GMT Keep-Alive: timeout=5, max=977 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.08M=0s 2016-05-09 17:51:32 (2.08 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/gd/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/gd/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:51:32-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/gd/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41613432 Connection: keep-alive Date: Tue, 10 May 2016 00:40:40 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 7CwQWZAQjdQ2_dnDGz6pvLkj16MSoUQj Last-Modified: Tue, 03 May 2016 15:28:06 GMT ETag: "3f7926d7522e818fff224b502071bb8a" Accept-Ranges: bytes Server: AmazonS3 Age: 655 X-Cache: Hit from cloudfront Via: 1.1 6be093c16fa776bbd432bbe9bd03f6af.cloudfront.net (CloudFront) X-Amz-Cf-Id: qbSd-Ty8LA8-yCwVPKbTK78ueMxC7DxraGsTLpwv5c2b5LmL3qxfGg== Length: 41613432 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.79M 20s 3072K ........ ........ ........ ........ ........ ........ 15% 9.44M 11s 6144K ........ ........ ........ ........ ........ ........ 22% 12.6M 8s 9216K ........ ........ ........ ........ ........ ........ 30% 13.0M 6s 12288K ........ ........ ........ ........ ........ ........ 37% 17.9M 4s 15360K ........ ........ ........ ........ ........ ........ 45% 18.1M 3s 18432K ........ ........ ........ ........ ........ ........ 52% 18.7M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 19.3M 2s 24576K ........ ........ ........ ........ ........ ........ 68% 20.1M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 21.8M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 28.4M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 31.9M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 23.9M 0s 39936K ........ .. 100% 46.9M=3.7s 2016-05-09 17:51:36 (10.6 MB/s) - 'update/complete.mar' saved [41613432/41613432] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:51:37-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/gl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:51:39 GMT Keep-Alive: timeout=5, max=919 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.90M=0s 2016-05-09 17:51:38 (1.90 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/gl/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/gl/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:51:38-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/gl/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41612818 Connection: keep-alive Date: Tue, 10 May 2016 00:41:37 GMT x-amz-replication-status: COMPLETED x-amz-version-id: pM1oOWy8cuWTySF0fQkhaPIxp33fMzfp Last-Modified: Tue, 03 May 2016 15:43:13 GMT ETag: "b9848642a3ec8f1f6296638c655fa68e" Accept-Ranges: bytes Server: AmazonS3 Age: 604 X-Cache: Hit from cloudfront Via: 1.1 296faebadd40feee8b2eb0e10d5786d2.cloudfront.net (CloudFront) X-Amz-Cf-Id: 5iNHt-AAOmJaP3slbvYAMmDCzKGh4Ko_9qGLADnZ8RXKJNkOY9__nA== Length: 41612818 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.19M 31s 3072K ........ ........ ........ ........ ........ ........ 15% 3.18M 19s 6144K ........ ........ ........ ........ ........ ........ 22% 5.27M 14s 9216K ........ ........ ........ ........ ........ ........ 30% 6.52M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 9.14M 8s 15360K ........ ........ ........ ........ ........ ........ 45% 9.82M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 12.3M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 13.0M 4s 24576K ........ ........ ........ ........ ........ ........ 68% 13.6M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 18.3M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 18.9M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 19.8M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 28.7M 0s 39936K ........ .. 100% 12.5M=6.5s 2016-05-09 17:51:45 (6.15 MB/s) - 'update/complete.mar' saved [41612818/41612818] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/he/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/he/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/he/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:51:46-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/he/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:51:48 GMT Keep-Alive: timeout=5, max=827 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.13M=0s 2016-05-09 17:51:46 (2.13 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/he/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/he/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:51:46-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/he/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41633413 Connection: keep-alive Date: Tue, 10 May 2016 00:42:32 GMT x-amz-replication-status: COMPLETED x-amz-version-id: DTC3cgkMx8uBBbdfTyuWe.qA3QSkqCdo Last-Modified: Tue, 03 May 2016 14:34:24 GMT ETag: "5bedd5e1b0ae21cc07cb62472f573f38" Accept-Ranges: bytes Server: AmazonS3 Age: 557 X-Cache: Hit from cloudfront Via: 1.1 3d3d633d266d05d90a4eea7a6a59b514.cloudfront.net (CloudFront) X-Amz-Cf-Id: aTi39uhp8l04LgegR3_aU36KO511FxnfGx5wsKuwqotjWcGpuL083Q== Length: 41633413 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.15M 32s 3072K ........ ........ ........ ........ ........ ........ 15% 3.15M 20s 6144K ........ ........ ........ ........ ........ ........ 22% 5.31M 14s 9216K ........ ........ ........ ........ ........ ........ 30% 7.21M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 8.05M 8s 15360K ........ ........ ........ ........ ........ ........ 45% 11.7M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 12.0M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 13.6M 4s 24576K ........ ........ ........ ........ ........ ........ 68% 16.7M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 15.1M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 24.6M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 20.4M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 21.0M 0s 39936K ........ ... 100% 39.3M=6.5s 2016-05-09 17:51:53 (6.15 MB/s) - 'update/complete.mar' saved [41633413/41633413] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:51:54-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:51:56 GMT Keep-Alive: timeout=5, max=894 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.11M=0s 2016-05-09 17:51:54 (2.11 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hr/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hr/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:51:55-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hr/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41607135 Connection: keep-alive Date: Tue, 10 May 2016 00:43:42 GMT x-amz-replication-status: COMPLETED x-amz-version-id: D_ZAy1wSSvgbtn.KUOGkIAKLKduZvJOD Last-Modified: Tue, 03 May 2016 14:52:21 GMT ETag: "d80d827cd0fa55bfd1ded6e377a5a789" Accept-Ranges: bytes Server: AmazonS3 Age: 495 X-Cache: Hit from cloudfront Via: 1.1 aa89533ad2ec5e0edba466c9920bd000.cloudfront.net (CloudFront) X-Amz-Cf-Id: hNWfSH0-wku7C7YjJkTeFVIpM_Bx5xN3tctTFsD7m78y7OICddNj6w== Length: 41607135 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.19M 31s 3072K ........ ........ ........ ........ ........ ........ 15% 3.77M 19s 6144K ........ ........ ........ ........ ........ ........ 22% 5.37M 13s 9216K ........ ........ ........ ........ ........ ........ 30% 7.50M 10s 12288K ........ ........ ........ ........ ........ ........ 37% 9.40M 8s 15360K ........ ........ ........ ........ ........ ........ 45% 12.0M 6s 18432K ........ ........ ........ ........ ........ ........ 52% 12.5M 5s 21504K ........ ........ ........ ........ ........ ........ 60% 12.9M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 18.0M 3s 27648K ........ ........ ........ ........ ........ ........ 75% 14.1M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 19.2M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 28.7M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 20.5M 0s 39936K ........ .. 100% 56.2M=6.1s 2016-05-09 17:52:01 (6.48 MB/s) - 'update/complete.mar' saved [41607135/41607135] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hsb/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hsb/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hsb/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:02-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hsb/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:04 GMT Keep-Alive: timeout=5, max=917 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 596 Length: 596 [text/xml] Saving to: 'update.xml' 0K 100% 2.20M=0s 2016-05-09 17:52:03 (2.20 MB/s) - 'update.xml' saved [596/596] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hsb/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hsb/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:03-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hsb/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41612106 Connection: keep-alive Date: Tue, 10 May 2016 00:44:36 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Ok2MbG30qgVyGZ4oUisc79LSwznn717o Last-Modified: Tue, 03 May 2016 15:10:05 GMT ETag: "d817b15b860cca1a914e513b8c013f06" Accept-Ranges: bytes Server: AmazonS3 Age: 450 X-Cache: Hit from cloudfront Via: 1.1 0576b942ae9f4fc9c0b62b0736e9bfd6.cloudfront.net (CloudFront) X-Amz-Cf-Id: Bz3aGoLn_vP8lRvXKhXow-fLQmvK-AFpWGmYVGiOwvRtDa8fkZOPJQ== Length: 41612106 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.56M 24s 3072K ........ ........ ........ ........ ........ ........ 15% 7.49M 13s 6144K ........ ........ ........ ........ ........ ........ 22% 7.68M 9s 9216K ........ ........ ........ ........ ........ ........ 30% 9.09M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 7.43M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 7.52M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 7.56M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 7.27M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 5.38M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 5.38M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 5.46M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 6.06M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 6.20M 0s 39936K ........ .. 100% 5.12M=7.4s 2016-05-09 17:52:11 (5.34 MB/s) - 'update/complete.mar' saved [41612106/41612106] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hu/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hu/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hu/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:11-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hu/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:14 GMT Keep-Alive: timeout=5, max=997 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.84M=0s 2016-05-09 17:52:12 (1.84 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hu/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hu/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:12-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hu/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42236715 Connection: keep-alive Date: Tue, 10 May 2016 00:45:37 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 56r4OxBBAJHLyG6UxSTbKuYuoAmlMUYa Last-Modified: Tue, 03 May 2016 15:27:51 GMT ETag: "92cea8603aed7b5fa76172a19b7c59ea" Accept-Ranges: bytes Server: AmazonS3 Age: 398 X-Cache: Hit from cloudfront Via: 1.1 aa89533ad2ec5e0edba466c9920bd000.cloudfront.net (CloudFront) X-Amz-Cf-Id: h8muh9EHzTFr-Bd5LEQ7lOBsv7oRJYeRUdGGXc2zsYx2_BzXTV4eeQ== Length: 42236715 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.09M 34s 3072K ........ ........ ........ ........ ........ ........ 14% 3.18M 21s 6144K ........ ........ ........ ........ ........ ........ 22% 4.78M 15s 9216K ........ ........ ........ ........ ........ ........ 29% 7.47M 11s 12288K ........ ........ ........ ........ ........ ........ 37% 7.77M 9s 15360K ........ ........ ........ ........ ........ ........ 44% 10.7M 7s 18432K ........ ........ ........ ........ ........ ........ 52% 10.4M 5s 21504K ........ ........ ........ ........ ........ ........ 59% 10.2M 4s 24576K ........ ........ ........ ........ ........ ........ 67% 9.42M 3s 27648K ........ ........ ........ ........ ........ ........ 74% 9.59M 2s 30720K ........ ........ ........ ........ ........ ........ 81% 10.6M 2s 33792K ........ ........ ........ ........ ........ ........ 89% 10.8M 1s 36864K ........ ........ ........ ........ ........ ........ 96% 9.89M 0s 39936K ........ ........ .... 100% 14.3M=7.6s 2016-05-09 17:52:20 (5.33 MB/s) - 'update/complete.mar' saved [42236715/42236715] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hy-AM/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hy-AM/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hy-AM/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:21-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/hy-AM/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:23 GMT Keep-Alive: timeout=5, max=840 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.09M=0s 2016-05-09 17:52:21 (2.09 MB/s) - 'update.xml' saved [600/600] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hy-AM/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hy-AM/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:22-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/hy-AM/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41619962 Connection: keep-alive Date: Tue, 10 May 2016 00:46:29 GMT x-amz-replication-status: COMPLETED x-amz-version-id: WEaZaIWQ7gSwvMmalh8938P1OMMr3s6O Last-Modified: Tue, 03 May 2016 15:45:17 GMT ETag: "67d8f7c31d1667e2308e8426f1fc8ecb" Accept-Ranges: bytes Server: AmazonS3 Age: 356 X-Cache: Hit from cloudfront Via: 1.1 296faebadd40feee8b2eb0e10d5786d2.cloudfront.net (CloudFront) X-Amz-Cf-Id: VCl69vnkkt64zGP-ra8JVvxfPj5xTP_C_vUcjfytbW02dCrVX3SHCw== Length: 41619962 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.72M 21s 3072K ........ ........ ........ ........ ........ ........ 15% 4.76M 13s 6144K ........ ........ ........ ........ ........ ........ 22% 7.44M 9s 9216K ........ ........ ........ ........ ........ ........ 30% 7.71M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 9.78M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 12.4M 4s 18432K ........ ........ ........ ........ ........ ........ 52% 16.8M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 13.4M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 18.0M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 19.1M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 20.2M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 27.9M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 21.8M 0s 39936K ........ ... 100% 44.0M=4.8s 2016-05-09 17:52:27 (8.19 MB/s) - 'update/complete.mar' saved [41619962/41619962] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/id/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/id/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/id/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:28-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/id/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:30 GMT Keep-Alive: timeout=5, max=964 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.07M=0s 2016-05-09 17:52:28 (2.07 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/id/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/id/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:29-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/id/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41722087 Connection: keep-alive Date: Tue, 10 May 2016 00:47:27 GMT x-amz-replication-status: COMPLETED x-amz-version-id: b5avAdwolulKLsIs87UXFS4KJjc5Sb53 Last-Modified: Tue, 03 May 2016 16:02:37 GMT ETag: "9c7503ab7cbbd104488f4360230cde68" Accept-Ranges: bytes Server: AmazonS3 Age: 305 X-Cache: Hit from cloudfront Via: 1.1 96255a5b0caf50bcafcd101c1ff13691.cloudfront.net (CloudFront) X-Amz-Cf-Id: toRZ53Xm827FDJT1HFI8JhZzflzO9bpbC1glldG44xMzVKS4wpQfiA== Length: 41722087 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.46M 25s 3072K ........ ........ ........ ........ ........ ........ 15% 4.71M 15s 6144K ........ ........ ........ ........ ........ ........ 22% 6.29M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 7.60M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 9.44M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 9.89M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 16.9M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 13.0M 3s 24576K ........ ........ ........ ........ ........ ........ 67% 18.2M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 18.1M 2s 30720K ........ ........ ........ ........ ........ ........ 82% 19.1M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 19.6M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 21.4M 0s 39936K ........ .... 100% 45.2M=5.4s 2016-05-09 17:52:34 (7.38 MB/s) - 'update/complete.mar' saved [41722087/41722087] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/is/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/is/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/is/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:35-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/is/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:38 GMT Keep-Alive: timeout=5, max=984 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.12M=0s 2016-05-09 17:52:36 (2.12 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/is/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/is/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:36-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/is/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41603581 Connection: keep-alive Date: Tue, 10 May 2016 00:48:32 GMT x-amz-replication-status: COMPLETED x-amz-version-id: g6ooO2uRdUQoxsrCefohgDgGG72IdBwW Last-Modified: Tue, 03 May 2016 14:19:43 GMT ETag: "9c9c1867b4ab8d3f31ef79b635898376" Accept-Ranges: bytes Server: AmazonS3 Age: 247 X-Cache: Hit from cloudfront Via: 1.1 88972e3933cc06dd11a6fa704a208631.cloudfront.net (CloudFront) X-Amz-Cf-Id: r-dXl_YEiHVSPBqixFsmzh6Wiujb5-ta0toMXnCPFiu544d2mwz7yg== Length: 41603581 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.41M 26s 3072K ........ ........ ........ ........ ........ ........ 15% 4.71M 16s 6144K ........ ........ ........ ........ ........ ........ 22% 5.52M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 9.19M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 9.49M 7s 15360K ........ ........ ........ ........ ........ ........ 45% 12.2M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 12.8M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 13.1M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 18.0M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 18.8M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 19.6M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 21.1M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 28.1M 0s 39936K ........ .. 100% 57.6M=5.4s 2016-05-09 17:52:42 (7.34 MB/s) - 'update/complete.mar' saved [41603581/41603581] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/it/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/it/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/it/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:43-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/it/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:45 GMT Keep-Alive: timeout=5, max=786 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.07M=0s 2016-05-09 17:52:43 (2.07 MB/s) - 'update.xml' saved [594/594] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/it/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/it/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:43-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/it/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41580051 Connection: keep-alive Date: Tue, 10 May 2016 00:49:30 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 4fQaQhpNSTA.JXKTrJIt5Em90ZC65KG3 Last-Modified: Tue, 03 May 2016 14:34:51 GMT ETag: "dfec3d2c75a34fc20ae7d57ce1f8d8af" Accept-Ranges: bytes Server: AmazonS3 Age: 195 X-Cache: Hit from cloudfront Via: 1.1 6e65abb04cb818a6ec78111935b507f7.cloudfront.net (CloudFront) X-Amz-Cf-Id: TfbdydkykQXqcuGHRSP1occN45P5JiG5UEA49TdG-hEatR5g83tGlQ== Length: 41580051 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.41M 26s 3072K ........ ........ ........ ........ ........ ........ 15% 4.70M 16s 6144K ........ ........ ........ ........ ........ ........ 22% 6.31M 11s 9216K ........ ........ ........ ........ ........ ........ 30% 7.64M 8s 12288K ........ ........ ........ ........ ........ ........ 37% 9.57M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 12.3M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 11.6M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 10.4M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 8.96M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 8.04M 2s 30720K ........ ........ ........ ........ ........ ........ 83% 7.58M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 7.69M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 7.69M 0s 39936K ........ .. 100% 7.64M=6.7s 2016-05-09 17:52:50 (5.91 MB/s) - 'update/complete.mar' saved [41580051/41580051] Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:51-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:54 GMT Keep-Alive: timeout=5, max=969 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.97M=0s 2016-05-09 17:52:52 (1.97 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ja/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:53-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:55 GMT Keep-Alive: timeout=5, max=995 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.08M=0s 2016-05-09 17:52:53 (2.08 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ko/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:54-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:57 GMT Keep-Alive: timeout=5, max=976 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.07M=0s 2016-05-09 17:52:55 (2.07 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/lt/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:56-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:58 GMT Keep-Alive: timeout=5, max=966 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.12M=0s 2016-05-09 17:52:56 (2.12 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nb-NO/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:57-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:59 GMT Keep-Alive: timeout=5, max=990 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.82M=0s 2016-05-09 17:52:58 (1.82 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nl/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:59-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:01 GMT Keep-Alive: timeout=5, max=998 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.91M=0s 2016-05-09 17:52:59 (1.91 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/nn-NO/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:00-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:03 GMT Keep-Alive: timeout=5, max=792 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.85M=0s 2016-05-09 17:53:01 (1.85 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pa-IN/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:02-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:04 GMT Keep-Alive: timeout=5, max=812 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.16M=0s 2016-05-09 17:53:02 (2.16 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pl/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:03-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:06 GMT Keep-Alive: timeout=5, max=998 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.13M=0s 2016-05-09 17:53:04 (2.13 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-BR/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:05-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:07 GMT Keep-Alive: timeout=5, max=839 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.11M=0s 2016-05-09 17:53:05 (2.11 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-PT/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:06-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:09 GMT Keep-Alive: timeout=5, max=996 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.97M=0s 2016-05-09 17:53:07 (1.97 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/rm/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:08-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:10 GMT Keep-Alive: timeout=5, max=986 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.04M=0s 2016-05-09 17:53:08 (2.04 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ro/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:10-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:12 GMT Keep-Alive: timeout=5, max=818 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.11M=0s 2016-05-09 17:53:10 (2.11 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/si/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:11-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:13 GMT Keep-Alive: timeout=5, max=921 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.04M=0s 2016-05-09 17:53:11 (2.04 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sk/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:13-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:15 GMT Keep-Alive: timeout=5, max=810 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:53:13 (2.10 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sl/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:14-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:16 GMT Keep-Alive: timeout=5, max=992 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.69M=0s 2016-05-09 17:53:14 (1.69 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sq/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:16-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:18 GMT Keep-Alive: timeout=5, max=814 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.07M=0s 2016-05-09 17:53:16 (2.07 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sr/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:17-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:19 GMT Keep-Alive: timeout=5, max=1000 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.89M=0s 2016-05-09 17:53:17 (1.89 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sv-SE/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:19-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:21 GMT Keep-Alive: timeout=5, max=915 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 2.10M=0s 2016-05-09 17:53:19 (2.10 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ta-LK/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:20-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:23 GMT Keep-Alive: timeout=5, max=999 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 1.91M=0s 2016-05-09 17:53:21 (1.91 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/tr/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:22-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:24 GMT Keep-Alive: timeout=5, max=935 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.20M=0s 2016-05-09 17:53:22 (2.20 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/uk/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:24-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:26 GMT Keep-Alive: timeout=5, max=1000 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 594 Length: 594 [text/xml] Saving to: 'update.xml' 0K 100% 2.12M=0s 2016-05-09 17:53:24 (2.12 MB/s) - 'update.xml' saved [594/594] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/vi/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:25-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:27 GMT Keep-Alive: timeout=5, max=771 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.83M=0s 2016-05-09 17:53:25 (1.83 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-CN/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:27-- https://aus4.mozilla.org/update/3/Thunderbird/38.5.0/20151221142744/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:29 GMT Keep-Alive: timeout=5, max=929 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 600 Length: 600 [text/xml] Saving to: 'update.xml' 0K 100% 1.88M=0s 2016-05-09 17:53:27 (1.88 MB/s) - 'update.xml' saved [600/600] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-TW/thunderbird-38.8.0.complete.mar' from cache... command: END (1993.42s elapsed) Scanning log for failures ------------------------- < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ja/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ko/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERRO+ set +x R_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/lt/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nb-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/nn-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ru/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.6.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/38.6.0/20160211132445/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.1.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.1.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.1.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.5.0.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 ------------------------- This run has failed, see the above log program finished with exit code 1 elapsedTime=2014.486000 ========= master_lag: 0.14 ========= ========= Finished 'bash scripts/scripts/release/updates/chunked-verify.sh ...' failed (results: 2, elapsed: 33 mins, 34 secs) (at 2016-05-09 17:53:30.992183) ========= ========= Started no change (results: 0, elapsed: 0 secs) (at 2016-05-09 17:53:31.003088) ========= 'bash' '-c' 'for file in `ls -1`; do cat $file; done' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_6-0\properties (timeout 1200 secs) watching logfiles {} argv: ['bash', '-c', 'for file in `ls -1`; do cat $file; done'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-047 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-047 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3624 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-yDEFNl3564/agent.3564 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-047 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False program finished with exit code 0 elapsedTime=0.107000 ========= master_lag: 0.11 ========= ========= Finished no change (results: 0, elapsed: 0 secs) (at 2016-05-09 17:53:31.219480) ========= ========= Total master_lag: 0.53 =========