You can subscribe to this list here.
| 2004 |
Jan
|
Feb
|
Mar
(57) |
Apr
(103) |
May
(164) |
Jun
(139) |
Jul
(173) |
Aug
(196) |
Sep
(221) |
Oct
(333) |
Nov
(214) |
Dec
(88) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2005 |
Jan
(163) |
Feb
(165) |
Mar
(98) |
Apr
(93) |
May
(199) |
Jun
(118) |
Jul
(200) |
Aug
(212) |
Sep
(185) |
Oct
(297) |
Nov
(437) |
Dec
(272) |
| 2006 |
Jan
(542) |
Feb
(329) |
Mar
(267) |
Apr
(332) |
May
(267) |
Jun
(130) |
Jul
(161) |
Aug
(348) |
Sep
(166) |
Oct
(305) |
Nov
(173) |
Dec
(173) |
| 2007 |
Jan
(199) |
Feb
(118) |
Mar
(133) |
Apr
(200) |
May
(208) |
Jun
(146) |
Jul
(198) |
Aug
(146) |
Sep
(187) |
Oct
(182) |
Nov
(181) |
Dec
(83) |
| 2008 |
Jan
(252) |
Feb
(124) |
Mar
(124) |
Apr
(101) |
May
(143) |
Jun
(122) |
Jul
(129) |
Aug
(60) |
Sep
(80) |
Oct
(89) |
Nov
(54) |
Dec
(112) |
| 2009 |
Jan
(88) |
Feb
(145) |
Mar
(105) |
Apr
(164) |
May
(123) |
Jun
(154) |
Jul
(374) |
Aug
(341) |
Sep
(219) |
Oct
(137) |
Nov
(373) |
Dec
(240) |
| 2010 |
Jan
(197) |
Feb
(270) |
Mar
(253) |
Apr
(150) |
May
(102) |
Jun
(51) |
Jul
(300) |
Aug
(512) |
Sep
(254) |
Oct
(258) |
Nov
(288) |
Dec
(143) |
| 2011 |
Jan
(238) |
Feb
(179) |
Mar
(253) |
Apr
(332) |
May
(248) |
Jun
(255) |
Jul
(216) |
Aug
(282) |
Sep
(146) |
Oct
(77) |
Nov
(86) |
Dec
(69) |
| 2012 |
Jan
(172) |
Feb
(234) |
Mar
(229) |
Apr
(101) |
May
(212) |
Jun
(267) |
Jul
(129) |
Aug
(210) |
Sep
(239) |
Oct
(271) |
Nov
(368) |
Dec
(220) |
| 2013 |
Jan
(179) |
Feb
(155) |
Mar
(59) |
Apr
(47) |
May
(99) |
Jun
(158) |
Jul
(185) |
Aug
(16) |
Sep
(16) |
Oct
(7) |
Nov
(20) |
Dec
(12) |
| 2014 |
Jan
(21) |
Feb
(17) |
Mar
(18) |
Apr
(13) |
May
(27) |
Jun
(15) |
Jul
(19) |
Aug
(22) |
Sep
(30) |
Oct
(16) |
Nov
(19) |
Dec
(16) |
| 2015 |
Jan
(14) |
Feb
(24) |
Mar
(33) |
Apr
(41) |
May
(14) |
Jun
(80) |
Jul
(53) |
Aug
(8) |
Sep
(7) |
Oct
(15) |
Nov
(13) |
Dec
(2) |
| 2016 |
Jan
(22) |
Feb
(12) |
Mar
(30) |
Apr
(6) |
May
(33) |
Jun
(16) |
Jul
(8) |
Aug
(20) |
Sep
(12) |
Oct
(18) |
Nov
(12) |
Dec
(11) |
| 2017 |
Jan
(24) |
Feb
(26) |
Mar
(47) |
Apr
(23) |
May
(19) |
Jun
(14) |
Jul
(28) |
Aug
(30) |
Sep
(17) |
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
(1) |
Feb
(73) |
Mar
(90) |
Apr
(42) |
May
(116) |
Jun
(90) |
Jul
(127) |
Aug
(103) |
Sep
(56) |
Oct
(42) |
Nov
(95) |
Dec
(58) |
| 2020 |
Jan
(102) |
Feb
(31) |
Mar
(93) |
Apr
(60) |
May
(57) |
Jun
(45) |
Jul
(29) |
Aug
(32) |
Sep
(44) |
Oct
(86) |
Nov
(51) |
Dec
(71) |
| 2021 |
Jan
(44) |
Feb
(25) |
Mar
(78) |
Apr
(130) |
May
(64) |
Jun
(74) |
Jul
(21) |
Aug
(64) |
Sep
(40) |
Oct
(43) |
Nov
(21) |
Dec
(99) |
| 2022 |
Jan
(154) |
Feb
(64) |
Mar
(45) |
Apr
(95) |
May
(62) |
Jun
(48) |
Jul
(73) |
Aug
(37) |
Sep
(71) |
Oct
(27) |
Nov
(40) |
Dec
(65) |
| 2023 |
Jan
(89) |
Feb
(130) |
Mar
(124) |
Apr
(50) |
May
(93) |
Jun
(46) |
Jul
(45) |
Aug
(68) |
Sep
(62) |
Oct
(71) |
Nov
(108) |
Dec
(82) |
| 2024 |
Jan
(53) |
Feb
(76) |
Mar
(64) |
Apr
(75) |
May
(36) |
Jun
(54) |
Jul
(98) |
Aug
(137) |
Sep
(58) |
Oct
(177) |
Nov
(84) |
Dec
(52) |
| 2025 |
Jan
(70) |
Feb
(53) |
Mar
(72) |
Apr
(47) |
May
(88) |
Jun
(49) |
Jul
(86) |
Aug
(51) |
Sep
(65) |
Oct
(91) |
Nov
(18) |
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
|
2
|
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
|
17
|
18
|
19
|
20
(4) |
21
(5) |
22
|
23
(6) |
|
24
(6) |
25
(20) |
26
(13) |
27
(5) |
28
|
29
|
30
|
|
31
|
|
|
|
|
|
|
|
From: <di...@us...> - 2013-03-27 20:04:40
|
Revision: 18343
http://sourceforge.net/p/exist/code/18343
Author: dizzzz
Date: 2013-03-27 20:04:37 +0000 (Wed, 27 Mar 2013)
Log Message:
-----------
[documentation] added checks for document/link consistency
Modified Paths:
--------------
apps/doc/modules/view.xql
apps/doc/templates/page.html
Added Paths:
-----------
apps/doc/data/getting-help-how-to-report.xml
apps/doc/diagnostics.html
apps/doc/modules/diagnostics.xql
apps/doc/resources/existsolutions-logo.png
Added: apps/doc/data/getting-help-how-to-report.xml
===================================================================
--- apps/doc/data/getting-help-how-to-report.xml (rev 0)
+++ apps/doc/data/getting-help-how-to-report.xml 2013-03-27 20:04:37 UTC (rev 18343)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<book>
+ <bookinfo>
+ <productname>eXist-db – Open Source Native XML Database</productname>
+ <title>eXist-db support</title>
+ <date>January 2013</date>
+ <author>
+ <firstname>Dannes</firstname>
+ <surname>Wessels</surname>
+ <affiliation>
+ <address format="linespecific">
+ <email>dannes at exist-db.org</email>
+ </address>
+ </affiliation>
+ </author>
+ </bookinfo>
+ <chapter>
+ <title>Getting Help: How to report issues</title>
+ <para>When a (potential) bug is reported, please include as much of the information as described below. When
+ more information is provided, it is more easy for the developers to understand and reproduce the issue,
+ which means that the issue can be picked-up and solved much faster.</para>
+ <chapter>
+ <title>General information</title>
+ <note>
+ <para>When reporting a (suspected) bug please make the report as complete as possible: <itemizedlist>
+ <listitem>
+ <para>Try to write a clear (and short) description how to reproduce the problem</para>
+ </listitem>
+ <listitem>
+ <para>Include the exact version (and revision), e.g. "1.4.3" (rev1234) or "2.0". </para>
+ </listitem>
+ <listitem>
+ <para>Always add the operating system (e.g. "Windows7 64bit"), the Java version (e.g.
+ "Oracle Java 7u15, 64 bit") </para>
+ </listitem>
+ <listitem>
+ <para>Include relevant <b>parts</b> of the logfile (e.g.
+ <filename>webapp/WEB-INF/logs/exist.log</filename>)</para>
+ </listitem>
+ <listitem>
+ <para>Mention the changes that have been made in the configuration files, e.g.
+ <filename>conf.xml</filename>, <filename>vm.properties</filename>,
+ <filename>tools/wrapper/conf/wrapper.conf</filename> and
+ <filename>tools/jetty/etc/jetty.xml</filename>.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </note>
+ </chapter>
+ <chapter>
+ <title>XQuery specific</title>
+ <note>
+ <para>When reporting a potential <b>XQuery</b> bug please: <itemizedlist>
+ <listitem>
+ <para>Make the XQuery, if possible, 'self containing', meaning that the XQuery does not
+ require any additional files to run.</para>
+ </listitem>
+ <listitem>
+ <para>Describe the actual XQuery result and the expected result</para>
+ </listitem>
+ <listitem>
+ <para>Check if the issue has been solved in the latest version of eXist-db; For this the web
+ based tool <ulink url="eXide" rel="nofollow">http://exist-db.org/exist/apps/eXide/index.html">eXide</ulink>
+ can be used.</para>
+ </listitem>
+ <listitem>
+ <para>Run the XQuery with <ulink url="http://kernowforsaxon.sourceforge.net">Kernow for
+ Saxon</ulink> and check the similarities and differences. </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </note>
+ <para>Bugs can also be reported on the <ulink url="Bug" rel="nofollow">http://sourceforge.net/p/exist/bugs/">Bug Tracker</ulink>
+ where data and log files can be attached.</para>
+ </chapter>
+ </chapter>
+</book>
\ No newline at end of file
Added: apps/doc/diagnostics.html
===================================================================
--- apps/doc/diagnostics.html (rev 0)
+++ apps/doc/diagnostics.html 2013-03-27 20:04:37 UTC (rev 18343)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<div class="templates:surround?with=templates/page.html&at=main">
+ <h1>Documentation diagnostics</h1>
+ <div class="diag:prepare">
+ <h2>Nr of ulinks</h2>
+ <div class="diag:countulinks"/>
+ <h2>The following documents are linked but do not exist</h2>
+ <div class="diag:deadlinks"/>
+ <h2>The following documents are not linked but do exist</h2>
+ <div class="diag:unreferenced"/>
+ </div>
+</div>
\ No newline at end of file
Added: apps/doc/modules/diagnostics.xql
===================================================================
--- apps/doc/modules/diagnostics.xql (rev 0)
+++ apps/doc/modules/diagnostics.xql 2013-03-27 20:04:37 UTC (rev 18343)
@@ -0,0 +1,85 @@
+xquery version "3.0";
+
+module namespace diag="http://exist-db.org/xquery/diagnostics";
+
+import module namespace templates="http://exist-db.org/xquery/templates" at "templates.xql";
+import module namespace config="http://exist-db.org/xquery/apps/config" at "config.xqm";
+
+declare function diag:prepare($node as node(), $model as map(*)) {
+ let $ulinks := collection($config:data-root)//ulink
+ return
+ map { "ulinks" := $ulinks }
+};
+
+declare function diag:countulinks($node as node(), $model as map(*)) {
+ let $ulinks := $model("ulinks")
+ return count($ulinks)
+};
+
+
+declare %private function diag:filterlocallinks($ulinks as node()*){
+
+ for $ulink in $ulinks
+ let $url := normalize-space(string(data($ulink/@url)))
+ return
+ if( starts-with($url, "http:") or starts-with($url, "https:") or starts-with($url, "mailto:") or
+ starts-with($url, "/") or starts-with($url, "#") or $url eq "" or starts-with($url, "{")
+ or starts-with($url, "api") or starts-with($url, "irc:"))
+ then
+ ()
+ else
+ $ulink
+
+};
+
+declare %private function diag:cleanUrl($url as xs:string) as xs:string {
+
+ let $rawurl := normalize-space($url)
+ return if (contains($rawurl, "#"))
+ then
+ substring-before($rawurl, "#")
+ else
+ $rawurl
+
+};
+
+declare function diag:deadlinks($node as node(), $model as map(*)) {
+ let $ulinks := $model("ulinks")
+ let $filtered := diag:filterlocallinks($ulinks)
+ return
+ <table>
+ <tr><th>In document</th><th>Linked document</th></tr>
+ {
+ for $row in $filtered
+ let $url := data($row/@url)
+ return
+ if(doc-available($config:data-root || "/" || $url))
+ then
+ ()
+ else
+ <tr><td>{document-uri(root($row))}</td><td>{data($row/@url) }</td></tr>
+ }
+ </table>
+};
+
+declare function diag:unreferenced($node as node(), $model as map(*)) {
+ let $ulinks := $model("ulinks")
+
+ let $alldocs := xmldb:get-child-resources($config:data-root)
+ return
+ <table>
+ <tr><th>Document</th></tr>
+ {
+ for $doc in $alldocs
+ return
+ if($ulinks/@url = $doc)
+ then
+ ()
+ else
+ <tr><td>{$doc}</td></tr>
+ }
+ </table>
+
+ };
+
+
Modified: apps/doc/modules/view.xql
===================================================================
--- apps/doc/modules/view.xql 2013-03-27 14:56:33 UTC (rev 18342)
+++ apps/doc/modules/view.xql 2013-03-27 20:04:37 UTC (rev 18343)
@@ -8,6 +8,7 @@
import module namespace config="http://exist-db.org/xquery/apps/config" at "config.xqm";
import module namespace review="http://exist-db.org/xquery/documentation/review" at "review.xql";
import module namespace site="http://exist-db.org/apps/site-utils";
+import module namespace diag="http://exist-db.org/xquery/diagnostics" at "diagnostics.xql";
declare option exist:serialize "method=html5 media-type=text/html";
Added: apps/doc/resources/existsolutions-logo.png
===================================================================
(Binary files differ)
Index: apps/doc/resources/existsolutions-logo.png
===================================================================
--- apps/doc/resources/existsolutions-logo.png 2013-03-27 14:56:33 UTC (rev 18342)
+++ apps/doc/resources/existsolutions-logo.png 2013-03-27 20:04:37 UTC (rev 18343)
Property changes on: apps/doc/resources/existsolutions-logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: apps/doc/templates/page.html
===================================================================
--- apps/doc/templates/page.html 2013-03-27 14:56:33 UTC (rev 18342)
+++ apps/doc/templates/page.html 2013-03-27 20:04:37 UTC (rev 18343)
@@ -72,6 +72,9 @@
<a href="{fundocs}/index.html">XQuery Functions</a>
</li>
<li>
+ <a href="{doc}/getting-help.xml">Get Support</a>
+ </li>
+ <li>
<a href="http://atomic.exist-db.org">News / Wiki</a>
</li>
<li>
|
|
From: <di...@us...> - 2013-03-27 14:56:36
|
Revision: 18342
http://sourceforge.net/p/exist/code/18342
Author: dizzzz
Date: 2013-03-27 14:56:33 +0000 (Wed, 27 Mar 2013)
Log Message:
-----------
[bugfix] build script did not run on path with space, e.g. /Volumes/Macintosh HD/eXist-db
Modified Paths:
--------------
trunk/eXist/build.sh
Modified: trunk/eXist/build.sh
===================================================================
--- trunk/eXist/build.sh 2013-03-26 09:58:56 UTC (rev 18341)
+++ trunk/eXist/build.sh 2013-03-27 14:56:33 UTC (rev 18342)
@@ -46,4 +46,4 @@
echo "$JAVA_RUN"
-"$JAVA_RUN" -Xms512m -Xmx512m $JAVA_OPTS -classpath $LOCALCLASSPATH org.apache.tools.ant.launch.Launcher $*
+"$JAVA_RUN" -Xms512m -Xmx512m "$JAVA_OPTS" -classpath "$LOCALCLASSPATH" org.apache.tools.ant.launch.Launcher $*
|
|
From: Dmitriy S. <sha...@gm...> - 2013-03-27 13:47:20
|
Good. Hope, we get final agreement on that subject and will not return to it any-more ;-) On Wed, Mar 27, 2013 at 5:24 PM, Wolfgang Meier <wol...@ex...>wrote: > Than stable branch should be 2.0.x, next developing version 2.1.x and next >> stable 2.2.x and so on ... right? We will continue increment minor till new >> *very* cool feature will be planned or better ready for release. At that >> time 2.some-odd will be released as 3.0.x. >> > > That's correct. 2.0.x is the current stable branch, which should be > followed (please!) by a few development releases in the 2.1.x series. 2.2.x > will be the next stable branch to replace 2.0. There used to be a document > about our release policy, but I'm not sure where it did go in the new > documentation. > -- Dmitriy Shabanov |
|
From: Wolfgang M. <wol...@ex...> - 2013-03-27 12:50:46
|
Than stable branch should be 2.0.x, next developing version 2.1.x and next > stable 2.2.x and so on ... right? We will continue increment minor till new > *very* cool feature will be planned or better ready for release. At that > time 2.some-odd will be released as 3.0.x. > That's correct. 2.0.x is the current stable branch, which should be followed (please!) by a few development releases in the 2.1.x series. 2.2.x will be the next stable branch to replace 2.0. There used to be a document about our release policy, but I'm not sure where it did go in the new documentation. Wolfgang |
|
From: Вячеслав С. <sch...@gm...> - 2013-03-27 09:37:23
|
what about http://en.wikipedia.org/wiki/Rolling_release 2013/3/26 Dannes Wessels <di...@ex...>: > > > -- > Dannes Wessels > > On 26 mrt. 2013, at 16:44, Dmitriy Shabanov <sha...@gm...> wrote: > >> Than stable branch should be 2.0.x, next developing version 2.1.x and next stable 2.2.x and so on ... right > > Yes ! :) > > >> We will continue increment minor till new *very* cool feature will be planned or better ready for release. At that time 2.some-odd will be released as 3.0.x. > > Yes :) > ------------------------------------------------------------------------------ > Own the Future-Intel® Level Up Game Demo Contest 2013 > Rise to greatness in Intel's independent game demo contest. > Compete for recognition, cash, and the chance to get your game > on Steam. $5K grand prize plus 10 genre and skill prizes. > Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d > _______________________________________________ > Exist-commits mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-commits |
|
From: Dannes W. <di...@ex...> - 2013-03-26 19:31:45
|
-- Dannes Wessels On 26 mrt. 2013, at 16:44, Dmitriy Shabanov <sha...@gm...> wrote: > Than stable branch should be 2.0.x, next developing version 2.1.x and next stable 2.2.x and so on ... right Yes ! :) > We will continue increment minor till new *very* cool feature will be planned or better ready for release. At that time 2.some-odd will be released as 3.0.x. Yes :) |
|
From: Jens Ø. P. <oe...@gm...> - 2013-03-26 16:21:10
|
Interesting thread! I understand the numbering the way Dmitriy describes it. Dmitriy seems to be the only one who remembers the distinction between even and odd numbers in the second position. Jens On Mar 26, 2013, at 4:44 PM, Dmitriy Shabanov <sha...@gm...> wrote: > Than stable branch should be 2.0.x, next developing version 2.1.x and next stable 2.2.x and so on ... right? We will continue increment minor till new *very* cool feature will be planned or better ready for release. At that time 2.some-odd will be released as 3.0.x. > > On Tue, Mar 26, 2013 at 4:17 PM, Adam Retter <ad...@ex...> wrote: > Nope I am describing major.minor.maintenance > > On 26 March 2013 11:14, Dmitriy Shabanov <sha...@gm...> wrote: > > you describe major.minor versioning, right? > > > > On Tue, Mar 26, 2013 at 4:04 PM, Adam Retter <ad...@ex...> wrote: > >> > >> Erm my thought was more like this - > >> > >> 2 is done. We want to work on new major changes right? So major > >> changes mean version 3. > >> > >> We have a 2.x stable branch - this is effectively where we merge in > >> new small/incremental features (minor revisions) and bugfixes > >> (maintenance revisions). From the 2.x branch we can then make releases > >> which will be either minor or maintenance releases. > > > -- > Dmitriy Shabanov > ------------------------------------------------------------------------------ > Own the Future-Intel® Level Up Game Demo Contest 2013 > Rise to greatness in Intel's independent game demo contest. > Compete for recognition, cash, and the chance to get your game > on Steam. $5K grand prize plus 10 genre and skill prizes. > Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d_______________________________________________ > Exist-commits mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-commits |
|
From: Dmitriy S. <sha...@gm...> - 2013-03-26 15:44:12
|
Than stable branch should be 2.0.x, next developing version 2.1.x and next stable 2.2.x and so on ... right? We will continue increment minor till new *very* cool feature will be planned or better ready for release. At that time 2.some-odd will be released as 3.0.x. On Tue, Mar 26, 2013 at 4:17 PM, Adam Retter <ad...@ex...> wrote: > Nope I am describing major.minor.maintenance > > On 26 March 2013 11:14, Dmitriy Shabanov <sha...@gm...> wrote: > > you describe major.minor versioning, right? > > > > On Tue, Mar 26, 2013 at 4:04 PM, Adam Retter <ad...@ex...> wrote: > >> > >> Erm my thought was more like this - > >> > >> 2 is done. We want to work on new major changes right? So major > >> changes mean version 3. > >> > >> We have a 2.x stable branch - this is effectively where we merge in > >> new small/incremental features (minor revisions) and bugfixes > >> (maintenance revisions). From the 2.x branch we can then make releases > >> which will be either minor or maintenance releases. > -- Dmitriy Shabanov |
|
From: Adam R. <ad...@ex...> - 2013-03-26 11:17:45
|
Nope I am describing major.minor.maintenance
On 26 March 2013 11:14, Dmitriy Shabanov <sha...@gm...> wrote:
> you describe major.minor versioning, right?
>
> On Tue, Mar 26, 2013 at 4:04 PM, Adam Retter <ad...@ex...> wrote:
>>
>> Erm my thought was more like this -
>>
>> 2 is done. We want to work on new major changes right? So major
>> changes mean version 3.
>>
>> We have a 2.x stable branch - this is effectively where we merge in
>> new small/incremental features (minor revisions) and bugfixes
>> (maintenance revisions). From the 2.x branch we can then make releases
>> which will be either minor or maintenance releases.
>>
>> On 26 March 2013 10:58, Dmitriy Shabanov <sha...@gm...> wrote:
>> > Ok, so major number only for major changes. We have nothing to change 2
>> > to 3
>> > right?
>> >
>> >
>> > On Tue, Mar 26, 2013 at 3:43 PM, Adam Retter <ad...@ex...> wrote:
>> >>
>> >> major.minor[.maintenance]
>> >>
>> >> And optionally a -revision (althought I dont like this). The above
>> >> should be sufficient.
>
>
> --
> Dmitriy Shabanov
--
Adam Retter
eXist Developer
{ United Kingdom }
ad...@ex...
irc://irc.freenode.net/existdb
|
|
From: Dmitriy S. <sha...@gm...> - 2013-03-26 11:14:28
|
you describe *major.minor* versioning, right? On Tue, Mar 26, 2013 at 4:04 PM, Adam Retter <ad...@ex...> wrote: > Erm my thought was more like this - > > 2 is done. We want to work on new major changes right? So major > changes mean version 3. > > We have a 2.x stable branch - this is effectively where we merge in > new small/incremental features (minor revisions) and bugfixes > (maintenance revisions). From the 2.x branch we can then make releases > which will be either minor or maintenance releases. > > On 26 March 2013 10:58, Dmitriy Shabanov <sha...@gm...> wrote: > > Ok, so major number only for major changes. We have nothing to change 2 > to 3 > > right? > > > > > > On Tue, Mar 26, 2013 at 3:43 PM, Adam Retter <ad...@ex...> wrote: > >> > >> major.minor[.maintenance] > >> > >> And optionally a -revision (althought I dont like this). The above > >> should be sufficient. > -- Dmitriy Shabanov |
|
From: Adam R. <ad...@ex...> - 2013-03-26 11:04:31
|
Erm my thought was more like this -
2 is done. We want to work on new major changes right? So major
changes mean version 3.
We have a 2.x stable branch - this is effectively where we merge in
new small/incremental features (minor revisions) and bugfixes
(maintenance revisions). From the 2.x branch we can then make releases
which will be either minor or maintenance releases.
On 26 March 2013 10:58, Dmitriy Shabanov <sha...@gm...> wrote:
> Ok, so major number only for major changes. We have nothing to change 2 to 3
> right?
>
>
> On Tue, Mar 26, 2013 at 3:43 PM, Adam Retter <ad...@ex...> wrote:
>>
>> major.minor[.maintenance]
>>
>> And optionally a -revision (althought I dont like this). The above
>> should be sufficient.
>
>
>
> --
> Dmitriy Shabanov
--
Adam Retter
eXist Developer
{ United Kingdom }
ad...@ex...
irc://irc.freenode.net/existdb
|
|
From: Dmitriy S. <sha...@gm...> - 2013-03-26 10:58:29
|
Ok, so major number only for major changes. We have nothing to change 2 to 3 right? On Tue, Mar 26, 2013 at 3:43 PM, Adam Retter <ad...@ex...> wrote: > major.minor[.maintenance] > > And optionally a -revision (althought I dont like this). The above > should be sufficient. > -- Dmitriy Shabanov |
|
From: Adam R. <ad...@ex...> - 2013-03-26 10:43:36
|
major.minor[.maintenance]
And optionally a -revision (althought I dont like this). The above
should be sufficient.
On 26 March 2013 05:20, Dmitriy Shabanov <sha...@gm...> wrote:
> I'm totally lost in arguments ;-)
>
> major.minor[.maintenance[.build]] right?
>
>
> On Tue, Mar 26, 2013 at 2:14 AM, Adam Retter <ad...@ex...> wrote:
>>
>> Yea yea I get that my friend, but I guess I am saying that 2.x should
>> not leak outside of the 2.x branch.
>>
>>
>>
>> On 25 March 2013 20:37, Dannes Wessels <di...@ex...> wrote:
>> > On 25 Mar 2013, at 21:36 , Dannes Wessels <di...@ex...> wrote:
>> >
>> > 2.x is now 2.0.1 ..... Not 2.1
>> >
>> >
>> > the rationale: the current changes are fixes, no new features......
>> >
>
>
>
> --
> Dmitriy Shabanov
--
Adam Retter
eXist Developer
{ United Kingdom }
ad...@ex...
irc://irc.freenode.net/existdb
|
|
From: <el...@us...> - 2013-03-26 09:58:59
|
Revision: 18341
http://sourceforge.net/p/exist/code/18341
Author: ellefj
Date: 2013-03-26 09:58:56 +0000 (Tue, 26 Mar 2013)
Log Message:
-----------
[ignore] Fixing output property (ident -> indent) for html.
Modified Paths:
--------------
trunk/eXist/src/org/exist/http/RESTServer.java
Modified: trunk/eXist/src/org/exist/http/RESTServer.java
===================================================================
--- trunk/eXist/src/org/exist/http/RESTServer.java 2013-03-26 08:28:55 UTC (rev 18340)
+++ trunk/eXist/src/org/exist/http/RESTServer.java 2013-03-26 09:58:56 UTC (rev 18341)
@@ -1741,7 +1741,7 @@
if (asMimeType.equals(MimeType.HTML_TYPE.getName())) {
outputProperties.setProperty("method", "xhtml");
outputProperties.setProperty("media-type", "text/html; charset=" + encoding);
- outputProperties.setProperty("ident", "yes");
+ outputProperties.setProperty("indent", "yes");
outputProperties.setProperty("omit-xml-declaration", "no");
}
@@ -2199,4 +2199,4 @@
writer.write("</xpath:exception>");
return writer.toString();
}
-}
\ No newline at end of file
+}
|
|
From: <sha...@us...> - 2013-03-26 08:28:58
|
Revision: 18340
http://sourceforge.net/p/exist/code/18340
Author: shabanovd
Date: 2013-03-26 08:28:55 +0000 (Tue, 26 Mar 2013)
Log Message:
-----------
[ignore] merge Resource*
Modified Paths:
--------------
branches/pbosek/jorsek-official/eXist/extensions/fluent/src/org/exist/fluent/Folder.java
branches/pbosek/jorsek-official/eXist/src/org/exist/collections/IndexInfo.java
branches/pbosek/jorsek-official/eXist/src/org/exist/storage/DBBroker.java
branches/pbosek/jorsek-official/eXist/src/org/exist/storage/NativeBroker.java
Added Paths:
-----------
branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/Resource.java
branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceInputStream.java
branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceOutputStream.java
branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceRandomAccess.java
Modified: branches/pbosek/jorsek-official/eXist/extensions/fluent/src/org/exist/fluent/Folder.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/extensions/fluent/src/org/exist/fluent/Folder.java 2013-03-26 07:34:06 UTC (rev 18339)
+++ branches/pbosek/jorsek-official/eXist/extensions/fluent/src/org/exist/fluent/Folder.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -455,7 +455,9 @@
throw new DatabaseException("failed to create document '" + name + "' from source " + source, e);
} catch (TriggerException e) {
throw new DatabaseException("failed to create document '" + name + "' from source " + source, e);
- } finally {
+ } catch (EXistException e) {
+ throw new DatabaseException("failed to create document '" + name + "' from source " + source, e);
+ } finally {
inputStream.close();
}
commit();
Modified: branches/pbosek/jorsek-official/eXist/src/org/exist/collections/IndexInfo.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/src/org/exist/collections/IndexInfo.java 2013-03-26 07:34:06 UTC (rev 18339)
+++ branches/pbosek/jorsek-official/eXist/src/org/exist/collections/IndexInfo.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -25,6 +25,7 @@
import org.exist.Namespaces;
import org.exist.collections.triggers.DocumentTriggersVisitor;
import org.exist.dom.DocumentImpl;
+import org.exist.security.Permission;
import org.exist.storage.DBBroker;
import org.exist.storage.txn.Txn;
import org.exist.util.serializer.DOMStreamer;
@@ -49,6 +50,7 @@
private DOMStreamer streamer;
private DocumentTriggersVisitor triggersVisitor;
private boolean creating = false;
+ private Permission oldDocPermissions = null;
private CollectionConfiguration collectionConfig;
IndexInfo(Indexer indexer, CollectionConfiguration collectionConfig) {
@@ -75,13 +77,23 @@
public boolean isCreating() {
return creating;
}
+
+ public void setOldDocPermissions(final Permission oldDocPermissions) {
+ this.oldDocPermissions = oldDocPermissions;
+ }
+
+ public Permission getOldDocPermissions() {
+ return oldDocPermissions;
+ }
void setReader(XMLReader reader, EntityResolver entityResolver) throws SAXException {
if(entityResolver != null) {
reader.setEntityResolver(entityResolver);
}
- LexicalHandler lexicalHandler = triggersVisitor == null ? indexer : triggersVisitor.getLexicalInputHandler();
- ContentHandler contentHandler = triggersVisitor == null ? indexer : triggersVisitor.getInputHandler();
+ final LexicalHandler lexicalHandler = triggersVisitor == null ?
+ indexer : triggersVisitor.getLexicalInputHandler();
+ final ContentHandler contentHandler = triggersVisitor == null ?
+ indexer : triggersVisitor.getInputHandler();
reader.setProperty(Namespaces.SAX_LEXICAL_HANDLER, lexicalHandler);
reader.setContentHandler(contentHandler);
reader.setErrorHandler(indexer);
@@ -99,11 +111,11 @@
}
public DOMStreamer getDOMStreamer() {
- return this.streamer;
+ return this.streamer;
}
public DocumentImpl getDocument() {
- return indexer.getDocument();
+ return indexer.getDocument();
}
public CollectionConfiguration getCollectionConfig() {
Modified: branches/pbosek/jorsek-official/eXist/src/org/exist/storage/DBBroker.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/src/org/exist/storage/DBBroker.java 2013-03-26 07:34:06 UTC (rev 18339)
+++ branches/pbosek/jorsek-official/eXist/src/org/exist/storage/DBBroker.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -47,6 +47,8 @@
import org.w3c.dom.Document;
import javax.xml.stream.XMLStreamException;
+
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -822,4 +824,6 @@
public abstract void backupToArchive(RawDataBackup backup) throws IOException, EXistException;
public abstract void readCollectionEntry(SubCollectionEntry entry);
+
+ public abstract File getBinaryFile(BinaryDocument blob) throws IOException;
}
Modified: branches/pbosek/jorsek-official/eXist/src/org/exist/storage/NativeBroker.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/src/org/exist/storage/NativeBroker.java 2013-03-26 07:34:06 UTC (rev 18339)
+++ branches/pbosek/jorsek-official/eXist/src/org/exist/storage/NativeBroker.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -3950,4 +3950,9 @@
return true;
}
}
+
+ @Override
+ public File getBinaryFile(BinaryDocument blob) throws IOException {
+ return getCollectionFile(fsDir, blob.getURI(), false);
+ }
}
Added: branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/Resource.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/Resource.java (rev 0)
+++ branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/Resource.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -0,0 +1,1324 @@
+/*
+ * eXist Open Source Native XML Database
+ * Copyright (C) 2010-2012 The eXist Project
+ * http://exist-db.org
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ */
+package org.exist.util.io;
+
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.SecureRandom;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import javax.xml.transform.OutputKeys;
+
+import org.exist.EXistException;
+import org.exist.collections.Collection;
+import org.exist.collections.Collection.CollectionEntry;
+import org.exist.collections.IndexInfo;
+import org.exist.dom.BinaryDocument;
+import org.exist.dom.DocumentImpl;
+import org.exist.dom.DocumentMetadata;
+import org.exist.dom.LockToken;
+import org.exist.security.Permission;
+import org.exist.security.PermissionDeniedException;
+import org.exist.security.Subject;
+import org.exist.storage.BrokerPool;
+import org.exist.storage.DBBroker;
+import org.exist.storage.lock.Lock;
+import org.exist.storage.serializers.EXistOutputKeys;
+import org.exist.storage.serializers.Serializer;
+import org.exist.storage.txn.TransactionManager;
+import org.exist.storage.txn.Txn;
+import org.exist.util.FileInputSource;
+import org.exist.util.LockException;
+import org.exist.util.MimeTable;
+import org.exist.util.MimeType;
+import org.exist.xmldb.XmldbURI;
+import org.xml.sax.SAXException;
+
+import static org.exist.security.Permission.*;
+
+/**
+ * eXist's resource. It extend java.io.File
+ *
+ * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a>
+ *
+ */
+public class Resource extends File {
+
+ private static final long serialVersionUID = -3450182389919974961L;
+
+ public static final char separatorChar = '/';
+
+ // default output properties for the XML serialization
+ public final static Properties XML_OUTPUT_PROPERTIES = new Properties();
+
+ static {
+ XML_OUTPUT_PROPERTIES.setProperty(OutputKeys.INDENT, "yes");
+ XML_OUTPUT_PROPERTIES.setProperty(OutputKeys.ENCODING, "UTF-8");
+ XML_OUTPUT_PROPERTIES.setProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
+ XML_OUTPUT_PROPERTIES.setProperty(EXistOutputKeys.EXPAND_XINCLUDES, "no");
+ XML_OUTPUT_PROPERTIES.setProperty(EXistOutputKeys.PROCESS_XSL_PI, "no");
+ }
+
+ public final static int DEFAULT_COLLECTION_PERM = 0777;
+ public final static int DEFAULT_RESOURCE_PERM = 0644;
+
+
+ private static final SecureRandom random = new SecureRandom();
+ static File generateFile(String prefix, String suffix, File dir) {
+ long n = random.nextLong();
+ if (n == Long.MIN_VALUE) {
+ n = 0; // corner case
+ } else {
+ n = Math.abs(n);
+ }
+ return new Resource(dir, prefix + Long.toString(n) + suffix);
+ }
+
+ public static File createTempFile(String prefix, String suffix, File directory) throws IOException {
+ if (prefix.length() < 3)
+ {throw new IllegalArgumentException("Prefix string too short");}
+ if (suffix == null)
+ {suffix = ".tmp";}
+
+ return generateFile(prefix, suffix, directory);
+ }
+
+ protected XmldbURI uri;
+
+ protected boolean initialized = false;
+
+ private Collection collection = null;
+ private DocumentImpl resource = null;
+
+ File file = null;
+
+ public Resource(XmldbURI uri) {
+ super(uri.toString());
+
+ this.uri = uri;
+ }
+
+ public Resource(String uri) {
+ this(XmldbURI.create(uri));
+ }
+
+ public Resource(File file, String child) {
+ this((Resource)file, child);
+ }
+
+ public Resource(Resource resource, String child) {
+ this(resource.uri.append(child));
+// this(child.startsWith("/db") ? XmldbURI.create(child) : resource.uri.append(child));
+ }
+
+ public Resource(String parent, String child) {
+ this(XmldbURI.create(parent).append(child));
+// this(child.startsWith("/db") ? XmldbURI.create(child) : XmldbURI.create(parent).append(child));
+ }
+
+ public Resource getParentFile() {
+ final XmldbURI parentPath = uri.removeLastSegment();
+ if (parentPath == XmldbURI.EMPTY_URI) {
+ if (uri.startsWith(XmldbURI.DB))
+ return null;
+
+ return new Resource(XmldbURI.DB);
+ }
+
+ return new Resource(parentPath);
+ }
+
+ public Resource getAbsoluteFile() {
+ return this; //UNDERSTAND: is it correct?
+ }
+
+ public File getCanonicalFile() throws IOException {
+ return this;
+// String canonPath = getCanonicalPath();
+// return new File(canonPath, fs.prefixLength(canonPath));
+ }
+
+ public String getName() {
+ return uri.lastSegment().toString();
+ }
+
+ private void closeFile(InputStream is) {
+ if (is == null) {
+ return;
+ }
+ try {
+ is.close();
+ } catch (final IOException e) {
+ //
+ }
+ }
+
+ public boolean mkdir() {
+ DBBroker broker = null;
+ BrokerPool db = null;
+ TransactionManager tm;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ return false;
+ }
+
+ final Collection collection = broker.getCollection(uri.toCollectionPathURI());
+ if (collection != null) {return true;}
+
+ final Collection parent_collection = broker.getCollection(uri.toCollectionPathURI().removeLastSegment());
+ if (parent_collection == null) {return false;}
+
+ tm = db.getTransactionManager();
+ final Txn transaction = tm.beginTransaction();
+
+ try {
+ final Collection child = broker.getOrCreateCollection(transaction, uri.toCollectionPathURI());
+ broker.saveCollection(transaction, child);
+ tm.commit(transaction);
+ } catch (final Exception e) {
+ tm.abort(transaction);
+ return false;
+ }
+ } catch (final Exception e) {
+ return false;
+
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+
+ return true;
+ }
+
+ public boolean mkdirs() {
+ DBBroker broker = null;
+ BrokerPool db = null;
+ TransactionManager tm;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ return false;
+ }
+
+ final Collection collection = broker.getCollection(uri.toCollectionPathURI());
+ if (collection != null) {return true;}
+
+ tm = db.getTransactionManager();
+ final Txn transaction = tm.beginTransaction();
+
+ try {
+ final Collection child = broker.getOrCreateCollection(transaction, uri.toCollectionPathURI());
+ broker.saveCollection(transaction, child);
+ tm.commit(transaction);
+ } catch (final Exception e) {
+ tm.abort(transaction);
+ return false;
+ }
+
+ } catch (final Exception e) {
+ return false;
+
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+
+ return true;
+ }
+
+ public boolean isDirectory() {
+ try {
+ init();
+ } catch (final IOException e) {
+ return false;
+ }
+
+ return (resource == null);
+ }
+
+ public boolean isFile() {
+ try {
+ init();
+ } catch (final IOException e) {
+ return false;
+ }
+
+ return (resource != null);
+ }
+
+ public boolean exists() {
+ try {
+ init();
+ } catch (final IOException e) {
+ return false;
+ }
+
+ return ((collection != null) || (resource != null));
+
+ }
+
+ public boolean _renameTo(File dest) {
+ final XmldbURI destinationPath = ((Resource)dest).uri;
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+ TransactionManager tm;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ return false;
+ }
+
+ tm = db.getTransactionManager();
+ Txn transaction = null;
+
+ org.exist.collections.Collection destination = null;
+ org.exist.collections.Collection source = null;
+ XmldbURI newName;
+ try {
+ source = broker.openCollection(uri.removeLastSegment(), Lock.WRITE_LOCK);
+ if(source == null) {
+ return false;
+ }
+ final DocumentImpl doc = source.getDocument(broker, uri.lastSegment());
+ if(doc == null) {
+ return false;
+ }
+ destination = broker.openCollection(destinationPath.removeLastSegment(), Lock.WRITE_LOCK);
+ if(destination == null) {
+ return false;
+ }
+
+ newName = destinationPath.lastSegment();
+
+ transaction = tm.beginTransaction();
+ broker.moveResource(transaction, doc, destination, newName);
+ tm.commit(transaction);
+ return true;
+
+ } catch ( final Exception e ) {
+ e.printStackTrace();
+ if (transaction != null) {tm.abort(transaction);}
+ return false;
+ } finally {
+ if(source != null) {source.release(Lock.WRITE_LOCK);}
+ if(destination != null) {destination.release(Lock.WRITE_LOCK);}
+ }
+ } finally {
+ if (db != null)
+ {db.release( broker );}
+ }
+ }
+
+ public boolean renameTo(File dest) {
+
+// System.out.println("rename from "+uri+" to "+dest.getPath());
+
+ final XmldbURI destinationPath = ((Resource)dest).uri;
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+ TransactionManager tm;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ return false;
+ }
+
+ tm = db.getTransactionManager();
+ Txn transaction = null;
+
+ org.exist.collections.Collection destination = null;
+ org.exist.collections.Collection source = null;
+ XmldbURI newName;
+ try {
+ source = broker.openCollection(uri.removeLastSegment(), Lock.WRITE_LOCK);
+ if(source == null) {
+ return false;
+ }
+ final DocumentImpl doc = source.getDocument(broker, uri.lastSegment());
+ if(doc == null) {
+ return false;
+ }
+ destination = broker.openCollection(destinationPath.removeLastSegment(), Lock.WRITE_LOCK);
+ if(destination == null) {
+ return false;
+ }
+
+ newName = destinationPath.lastSegment();
+
+ transaction = tm.beginTransaction();
+ moveResource(broker, transaction, doc, source, destination, newName);
+
+// resource = null;
+// collection = null;
+// initialized = false;
+// uri = ((Resource)dest).uri;
+
+ tm.commit(transaction);
+ return true;
+
+ } catch ( final Exception e ) {
+ e.printStackTrace();
+ if (transaction != null) {tm.abort(transaction);}
+ return false;
+ } finally {
+ if(source != null) {source.release(Lock.WRITE_LOCK);}
+ if(destination != null) {destination.release(Lock.WRITE_LOCK);}
+ }
+ } finally {
+ if (db != null)
+ {db.release( broker );}
+ }
+ }
+
+ private synchronized File serialize(final DBBroker broker, final DocumentImpl doc) throws IOException {
+ if (file != null)
+ {throw new IOException(doc.getFileURI().toString()+" locked.");}
+
+ try {
+ final Serializer serializer = broker.getSerializer();
+ serializer.setUser(broker.getSubject());
+ serializer.setProperties(XML_OUTPUT_PROPERTIES);
+
+ file = File.createTempFile("eXist-resource-", ".xml");
+ file.deleteOnExit();
+
+ final Writer w = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
+
+ serializer.serialize(doc, w);
+ w.flush();
+ w.close();
+
+ return file;
+
+ } catch (final Exception e) {
+ throw new IOException(e);
+ }
+ }
+
+ protected void freeFile() throws IOException {
+
+ if (isXML()) {
+ if (file == null)
+ {throw new IOException();}
+
+ file.delete();
+
+ file = null;
+ }
+ }
+
+ protected synchronized void uploadTmpFile() throws IOException {
+ if (file == null)
+ {throw new IOException();}
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+ TransactionManager tm = null;
+ Txn txn = null;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ throw new IOException(e);
+ }
+
+ tm = db.getTransactionManager();
+ txn = tm.beginTransaction();
+
+ FileInputSource is = new FileInputSource(file);
+
+ final IndexInfo info = collection.validateXMLResource(txn, broker, uri.lastSegment(), is);
+// info.getDocument().getMetadata().setMimeType(mimeType.getName());
+
+ is = new FileInputSource(file);
+ collection.store(txn, broker, info, is, false);
+
+ tm.commit(txn);
+
+ } catch ( final Exception e ) {
+ e.printStackTrace();
+ if (txn != null) {tm.abort(txn);}
+ } finally {
+ if (db != null)
+ {db.release( broker );}
+ }
+ }
+
+ private void moveResource(DBBroker broker, Txn txn, DocumentImpl doc, Collection source, Collection destination, XmldbURI newName) throws PermissionDeniedException, LockException, IOException, SAXException, EXistException {
+
+ final MimeTable mimeTable = MimeTable.getInstance();
+
+ final boolean isXML = mimeTable.isXMLContent(newName.toString());
+
+ final MimeType mimeType = mimeTable.getContentTypeFor(newName);
+
+ if ( mimeType != null && !mimeType.getName().equals( doc.getMetadata().getMimeType()) ) {
+ doc.getMetadata().setMimeType(mimeType.getName());
+ broker.storeXMLResource(txn, doc);
+
+ doc = source.getDocument(broker, uri.lastSegment());
+ }
+
+ if (isXML) {
+ if (doc.getResourceType() == DocumentImpl.XML_FILE) {
+ //XML to XML
+ //move to same type as it
+ broker.moveResource(txn, doc, destination, newName);
+
+ } else {
+ //convert BINARY to XML
+
+ final File file = broker.getBinaryFile((BinaryDocument) doc);
+
+ FileInputSource is = new FileInputSource(file);
+
+ final IndexInfo info = destination.validateXMLResource(txn, broker, newName, is);
+ info.getDocument().getMetadata().setMimeType(mimeType.getName());
+
+ is = new FileInputSource(file);
+ destination.store(txn, broker, info, is, false);
+
+ source.removeBinaryResource(txn, broker, doc);
+ }
+ } else {
+ if (doc.getResourceType() == DocumentImpl.BINARY_FILE) {
+ //BINARY to BINARY
+
+ //move to same type as it
+ broker.moveResource(txn, doc, destination, newName);
+
+ } else {
+ //convert XML to BINARY
+ // xml file
+ final Serializer serializer = broker.getSerializer();
+ serializer.setUser(broker.getSubject());
+ serializer.setProperties(XML_OUTPUT_PROPERTIES);
+
+ File tempFile = null;
+ FileInputStream is = null;
+ try {
+ tempFile = File.createTempFile("eXist-resource-", ".xml");
+ tempFile.deleteOnExit();
+
+ final Writer w = new OutputStreamWriter(new FileOutputStream(tempFile), "UTF-8");
+
+ serializer.serialize(doc, w);
+ w.flush();
+ w.close();
+
+ is = new FileInputStream(tempFile);
+
+ final DocumentMetadata meta = doc.getMetadata();
+
+ final Date created = new Date(meta.getCreated());
+ final Date lastModified = new Date(meta.getLastModified());
+
+ BinaryDocument binary = destination.validateBinaryResource(txn, broker, newName, is, mimeType.getName(), -1, created, lastModified);
+
+ binary = destination.addBinaryResource(txn, broker, binary, is, mimeType.getName(), -1, created, lastModified);
+
+ source.removeXMLResource(txn, broker, doc.getFileURI());
+
+ } finally {
+ if (is != null)
+ {is.close();}
+
+ if (tempFile != null)
+ {tempFile.delete();}
+ }
+ }
+ }
+ }
+
+ public boolean delete() {
+ DBBroker broker = null;
+ BrokerPool db = null;
+ TransactionManager tm;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ return false;
+ }
+
+ tm = db.getTransactionManager();
+ Txn txn = null;
+ try {
+ collection = broker.openCollection(uri.removeLastSegment(), Lock.NO_LOCK);
+ if (collection == null) {
+ return false;
+ }
+ // keep the write lock in the transaction
+ //transaction.registerLock(collection.getLock(), Lock.WRITE_LOCK);
+
+ final DocumentImpl doc = collection.getDocument(broker, uri.lastSegment());
+ if (doc == null) {
+ return true;
+ }
+
+ txn = tm.beginTransaction();
+ if(doc.getResourceType() == DocumentImpl.BINARY_FILE)
+ {collection.removeBinaryResource(txn, broker, doc);}
+ else
+ {collection.removeXMLResource(txn, broker, uri.lastSegment());}
+
+ tm.commit(txn);
+ return true;
+
+ } catch (final Exception e) {
+ if (txn != null) {tm.abort(txn);}
+ return false;
+ }
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+
+ resource = null;
+ collection = null;
+ initialized = false;
+ }
+ }
+
+ public boolean createNewFile() throws IOException {
+ DBBroker broker = null;
+ BrokerPool db = null;
+ TransactionManager tm;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ throw new IOException(e);
+ }
+
+// if (!uri.startsWith("/db"))
+// uri = XmldbURI.DB.append(uri);
+//
+ try {
+ if (uri.endsWith("/"))
+ {throw new IOException("It collection, but should be resource: "+uri);}
+ } catch (final Exception e) {
+ throw new IOException(e);
+ }
+
+ final XmldbURI collectionURI = uri.removeLastSegment();
+ collection = broker.getCollection(collectionURI);
+ if (collection == null)
+ {throw new IOException("Collection not found: "+collectionURI);}
+
+ final XmldbURI fileName = uri.lastSegment();
+
+// try {
+// resource = broker.getXMLResource(uri, Lock.READ_LOCK);
+// } catch (final PermissionDeniedException e1) {
+// } finally {
+// if (resource != null) {
+// resource.getUpdateLock().release(Lock.READ_LOCK);
+// collection = resource.getCollection();
+// initialized = true;
+//
+// return false;
+// }
+// }
+//
+ try {
+ resource = broker.getResource(uri, Lock.READ_LOCK);
+ } catch (final PermissionDeniedException e1) {
+ } finally {
+ if (resource != null) {
+ resource.getUpdateLock().release(Lock.READ_LOCK);
+ collection = resource.getCollection();
+ initialized = true;
+
+ return false;
+ }
+ }
+
+ MimeType mimeType = MimeTable.getInstance().getContentTypeFor(fileName);
+
+ if (mimeType == null) {
+ mimeType = MimeType.BINARY_TYPE;
+ }
+
+ tm = db.getTransactionManager();
+ final Txn transaction = tm.beginTransaction();
+
+ InputStream is = null;
+ try {
+ if (mimeType.isXMLType()) {
+ // store as xml resource
+ final String str = "<empty/>";
+ final IndexInfo info = collection.validateXMLResource(transaction, broker, fileName, str);
+ info.getDocument().getMetadata().setMimeType(mimeType.getName());
+ info.getDocument().getPermissions().setMode(DEFAULT_RESOURCE_PERM);
+ collection.store(transaction, broker, info, str, false);
+
+ } else {
+ // store as binary resource
+ is = new ByteArrayInputStream("".getBytes("UTF-8"));
+
+ final BinaryDocument blob = new BinaryDocument(db, collection, fileName);
+
+ blob.getPermissions().setMode(DEFAULT_RESOURCE_PERM);
+
+ collection.addBinaryResource(transaction, broker, blob, is,
+ mimeType.getName(), 0L , new Date(), new Date());
+
+ }
+ tm.commit(transaction);
+ } catch (final Exception e) {
+ tm.abort(transaction);
+ throw new IOException(e);
+ } finally {
+ closeFile(is);
+
+ if (resource != null)
+ {resource.getUpdateLock().release(Lock.READ_LOCK);}
+ }
+
+ } catch (final Exception e) {
+ return false;
+
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+
+ return true;
+ }
+
+
+ private synchronized void init() throws IOException {
+ if (initialized) {
+ collection = null;
+ resource = null;
+ initialized = false;
+ }
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ throw new IOException(e);
+ }
+
+ try {
+ //collection
+ if (uri.endsWith("/")) {
+ collection = broker.getCollection(uri);
+ if (collection == null)
+ {throw new IOException("Resource not found: "+uri);}
+
+ //resource
+ } else {
+ resource = broker.getXMLResource(uri, Lock.READ_LOCK);
+ if (resource == null) {
+ //may be, it's collection ... checking ...
+ collection = broker.getCollection(uri);
+ if (collection == null) {
+ throw new IOException("Resource not found: "+uri);
+ }
+ } else {
+ collection = resource.getCollection();
+ }
+ }
+ } catch (final IOException e) {
+ throw e;
+ } catch (final Exception e) {
+ throw new IOException(e);
+ } finally {
+ if (resource != null)
+ {resource.getUpdateLock().release(Lock.READ_LOCK);}
+ }
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+
+ initialized = true;
+ }
+
+ private Permission getPermission() throws IOException {
+ init();
+
+ if (resource != null) {return resource.getPermissions();}
+
+ if (collection != null) {return collection.getPermissions();}
+
+ throw new IOException("this never should happen");
+ }
+
+ private Subject getBrokerUser() throws IOException {
+ DBBroker broker = null;
+ BrokerPool db = null;
+
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+
+ return broker.getSubject();
+ } catch (final EXistException e) {
+ throw new IOException(e);
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+ }
+
+ public Reader getReader() throws IOException {
+ final InputStream is = getConnection().getInputStream();
+ final BufferedInputStream bis = new BufferedInputStream(is);
+ return new InputStreamReader(bis);
+ }
+
+ public BufferedReader getBufferedReader() throws IOException {
+ return new BufferedReader(getReader());
+ }
+
+ private URLConnection connection = null;
+
+ private URLConnection getConnection() throws IOException {
+ if (connection == null) {
+ BrokerPool db = null;
+ DBBroker broker = null;
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ final Subject subject = broker.getSubject();
+
+ final URL url = new URL("xmldb:exist://jsessionid:"+subject.getSessionId()+"@"+ uri.toString());
+ connection = url.openConnection();
+ } catch (final IllegalArgumentException e) {
+ throw new IOException(e);
+ } catch (final MalformedURLException e) {
+ throw new IOException(e);
+ } catch (final EXistException e) {
+ throw new IOException(e);
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+ }
+ return connection;
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return getConnection().getInputStream();
+ }
+
+ public Writer getWriter() throws IOException {
+ return new BufferedWriter(new OutputStreamWriter(getOutputStream(false)));
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+ return getOutputStream(false);
+ }
+
+ public OutputStream getOutputStream(boolean append) throws IOException {
+ //XXX: code append
+ if (append)
+ {System.err.println("BUG: OutputStream in append mode!");}
+ return getConnection().getOutputStream();
+ }
+
+ public DocumentImpl getDocument() throws IOException {
+ init();
+
+ return resource;
+ }
+
+ public Collection getCollection() throws IOException {
+ if (!initialized) {
+ DBBroker broker = null;
+ BrokerPool db = null;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ throw new IOException(e);
+ }
+
+ try {
+ if (uri.endsWith("/")) {
+ collection = broker.getCollection(uri);
+ } else {
+ collection = broker.getCollection(uri);
+ if (collection == null)
+ {collection = broker.getCollection(uri.removeLastSegment());}
+ }
+ if (collection == null)
+ {throw new IOException("Collection not found: "+uri);}
+
+ return collection;
+ } catch (final Exception e) {
+ throw new IOException(e);
+ }
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+ }
+
+ if (resource == null)
+ {return collection;}
+ else
+ {return resource.getCollection();}
+ }
+
+ public String[] list() {
+
+ if (isDirectory()) {
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ return new String[0];
+ }
+
+ final List<String> list = new ArrayList<String>();
+ for (final CollectionEntry entry : collection.getEntries(broker)) {
+ list.add(entry.getUri().lastSegment().toString());
+ }
+
+ return list.toArray(new String[list.size()]);
+
+ } catch (final PermissionDeniedException e) {
+ return new String[0];
+
+ } finally {
+ if (db != null)
+ {db.release( broker );}
+ }
+ }
+
+ return new String[0];
+ }
+
+// public String[] list(FilenameFilter filter) {
+// throw new IllegalAccessError("not implemeted");
+// }
+
+ public File[] listFiles() {
+ if (!isDirectory())
+ {return null;}
+
+ if (collection == null)
+ {return null;}
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ return null;
+ }
+
+ try {
+ collection.getLock().acquire(Lock.READ_LOCK);
+
+ final File[] children = new File[collection.getChildCollectionCount(broker) +
+ collection.getDocumentCount(broker)];
+
+ //collections
+ int j = 0;
+ for (final Iterator<XmldbURI> i = collection.collectionIterator(broker); i.hasNext(); j++)
+ children[j] = new Resource(collection.getURI().append(i.next()));
+
+ //collections
+ final List<XmldbURI> allresources = new ArrayList<XmldbURI>();
+ DocumentImpl doc = null;
+ for (final Iterator<DocumentImpl> i = collection.iterator(broker); i.hasNext(); ) {
+ doc = i.next();
+
+ // Include only when (1) locktoken is present or (2)
+ // locktoken indicates that it is not a null resource
+ final LockToken lock = doc.getMetadata().getLockToken();
+ if(lock==null || (!lock.isNullResource()) ){
+ allresources.add( doc.getURI() );
+ }
+ }
+
+ // Copy content of list into String array.
+ for(final Iterator<XmldbURI> i = allresources.iterator(); i.hasNext(); j++){
+ children[j] = new Resource(i.next());
+ }
+
+ return children;
+ } catch (final LockException e) {
+ //throw new IOException("Failed to acquire lock on collection '" + uri + "'");
+ return null;
+
+ } catch (final Exception e) {
+ return null;
+
+ } finally {
+ collection.release(Lock.READ_LOCK);
+ }
+
+ } catch (final Exception e) {
+ return null;
+
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+ }
+
+ public File[] listFiles(FilenameFilter filter) {
+ throw new IllegalAccessError("not implemeted");
+ }
+
+ public File[] listFiles(FileFilter filter) {
+ throw new IllegalAccessError("not implemeted");
+ }
+
+ public synchronized long length() {
+ try {
+ init();
+ } catch (final IOException e) {
+ return 0L;
+ }
+
+ if (resource != null) {
+ //report size for binary resource only
+ if (resource instanceof BinaryDocument) {
+ return resource.getContentLength();
+ }
+ }
+
+ return 0L;
+ }
+
+ private static XmldbURI normalize(final XmldbURI uri) {
+ return uri.startsWith(XmldbURI.ROOT_COLLECTION_URI)?
+ uri:
+ uri.prepend(XmldbURI.ROOT_COLLECTION_URI);
+ }
+
+ public String getPath() {
+ return normalize(uri).toString();// uri.toString();
+ }
+
+ public String getAbsolutePath() {
+ return normalize(uri).toString();// uri.toString();
+ }
+
+ public boolean isXML() throws IOException {
+ init();
+
+ if (resource != null) {
+ if (resource instanceof BinaryDocument) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ protected File getFile() throws FileNotFoundException {
+ if (isDirectory())
+ {throw new FileNotFoundException("unsupported operation for collection.");}
+
+ DocumentImpl doc;
+ try {
+ if (!exists())
+ {createNewFile();}
+
+ doc = getDocument();
+ } catch (final IOException e) {
+ throw new FileNotFoundException(e.getMessage());
+ }
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ throw new FileNotFoundException(e.getMessage());
+ }
+
+ if (doc instanceof BinaryDocument) {
+ return broker.getBinaryFile(((BinaryDocument)doc));
+
+ } else {
+ return serialize(broker, doc);
+ }
+
+ } catch (final Exception e) {
+ throw new FileNotFoundException(e.getMessage());
+
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+// throw new FileNotFoundException("unsupported operation for "+doc.getClass()+".");
+ }
+
+ public boolean setReadOnly() {
+ try {
+ modifyMetadata(new ModifyMetadata() {
+
+ @Override
+ public void modify(DocumentImpl resource) throws IOException {
+ Permission perm = resource.getPermissions();
+ try {
+ perm.setMode(perm.getMode() | (READ << 6) & ~(WRITE << 6));
+ } catch (PermissionDeniedException e) {
+ throw new IOException(e);
+ }
+ }
+
+ @Override
+ public void modify(Collection collection) throws IOException {
+ Permission perm = collection.getPermissions();
+ try {
+ perm.setMode(perm.getMode() | (READ << 6) & ~(WRITE << 6));
+ } catch (PermissionDeniedException e) {
+ throw new IOException(e);
+ }
+ }
+
+ });
+ } catch (IOException e) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public boolean setExecutable(boolean executable, boolean ownerOnly) {
+ try {
+ modifyMetadata(new ModifyMetadata() {
+
+ @Override
+ public void modify(DocumentImpl resource) throws IOException {
+ Permission perm = resource.getPermissions();
+ try {
+ perm.setMode(perm.getMode() | (EXECUTE << 6));
+ } catch (PermissionDeniedException e) {
+ throw new IOException(e);
+ }
+ }
+
+ @Override
+ public void modify(Collection collection) throws IOException {
+ Permission perm = collection.getPermissions();
+ try {
+ perm.setMode(perm.getMode() | (EXECUTE << 6));
+ } catch (PermissionDeniedException e) {
+ throw new IOException(e);
+ }
+ }
+
+ });
+ } catch (IOException e) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public boolean canExecute() {
+ try {
+ return getPermission().validate(getBrokerUser(), EXECUTE);
+ } catch (final IOException e) {
+ return false;
+ }
+ }
+
+
+ public boolean canRead() {
+ try {
+ return getPermission().validate(getBrokerUser(), READ);
+ } catch (final IOException e) {
+ return false;
+ }
+ }
+
+ long lastModified = 0L;
+
+ public boolean setLastModified(final long time) {
+ lastModified = time;
+ try {
+ modifyMetadata(new ModifyMetadata() {
+
+ @Override
+ public void modify(DocumentImpl resource) throws IOException {
+ resource.getMetadata().setLastModified(time);
+ }
+
+ @Override
+ public void modify(Collection collection) throws IOException {
+ throw new IOException("LastModified can't be set for collection.");
+ }
+
+ });
+ } catch (IOException e) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public long lastModified() {
+ try {
+ init();
+ } catch (final IOException e) {
+ return lastModified;
+ }
+
+ if (resource != null) {
+ return resource.getMetadata().getLastModified();
+ }
+
+ if (collection != null || lastModified != 0) {
+ //TODO: need lastModified for collection
+ return collection.getCreationTime();
+ }
+ return lastModified;
+ }
+
+ interface ModifyMetadata {
+ public void modify(DocumentImpl resource) throws IOException;
+
+ public void modify(Collection collection) throws IOException;
+ }
+
+ private void modifyMetadata(ModifyMetadata method) throws IOException {
+// if (initialized) {return;}
+
+ DBBroker broker = null;
+ BrokerPool db = null;
+
+ try {
+ try {
+ db = BrokerPool.getInstance();
+ broker = db.get(null);
+ } catch (final EXistException e) {
+ throw new IOException(e);
+ }
+
+ final TransactionManager tm = db.getTransactionManager();
+ Txn txn = null;
+
+ try {
+ //collection
+ if (uri.endsWith("/")) {
+ collection = broker.getCollection(uri);
+ if (collection == null)
+ {throw new IOException("Resource not found: "+uri);}
+
+ //resource
+ } else {
+ resource = broker.getXMLResource(uri, Lock.READ_LOCK);
+ if (resource == null) {
+ //may be, it's collection ... checking ...
+ collection = broker.getCollection(uri);
+ if (collection == null) {
+ throw new IOException("Resource not found: "+uri);
+ }
+
+ txn = tm.beginTransaction();
+
+ method.modify(collection);
+ broker.saveCollection(txn, collection);
+
+ tm.commit(txn);
+
+ } else {
+ collection = resource.getCollection();
+
+ txn = tm.beginTransaction();
+
+ method.modify(resource);
+ broker.storeMetadata(txn, resource);
+
+ tm.commit(txn);
+ }
+ }
+ } catch (final IOException e) {
+ if (txn != null) {
+ tm.abort(txn);
+ }
+ throw e;
+ } catch (final Exception e) {
+ if (txn != null) {
+ tm.abort(txn);
+ }
+ throw new IOException(e);
+ } finally {
+ if (resource != null)
+ {resource.getUpdateLock().release(Lock.READ_LOCK);}
+ }
+ } finally {
+ if (db != null)
+ {db.release(broker);}
+ }
+
+ initialized = true;
+ }
+}
Added: branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceInputStream.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceInputStream.java (rev 0)
+++ branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceInputStream.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -0,0 +1,53 @@
+/*
+ * eXist Open Source Native XML Database
+ * Copyright (C) 2012 The eXist Project
+ * http://exist-db.org
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * $Id$
+ */
+package org.exist.util.io;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a>
+ *
+ */
+public class ResourceInputStream extends FileInputStream {
+
+ Resource resource;
+
+ public ResourceInputStream(Resource file) throws FileNotFoundException {
+ super(file.getFile());
+
+ resource = file;
+ }
+
+ public void close() throws IOException {
+ super.close();
+
+ resource.freeFile();
+
+ if (resource.isXML()) {
+ //XXX: cleanup tmp file
+ }
+
+ //XXX: locking?
+ }
+}
Added: branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceOutputStream.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceOutputStream.java (rev 0)
+++ branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceOutputStream.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -0,0 +1,57 @@
+/*
+ * eXist Open Source Native XML Database
+ * Copyright (C) 2012 The eXist Project
+ * http://exist-db.org
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * $Id$
+ */
+package org.exist.util.io;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a>
+ *
+ */
+public class ResourceOutputStream extends FileOutputStream {
+
+ private Resource resource;
+
+ public ResourceOutputStream(Resource file) throws FileNotFoundException {
+ super(file.getFile());
+
+ resource = file;
+ }
+
+ public ResourceOutputStream(Resource file, boolean append) throws FileNotFoundException {
+ super(file.getFile(), append);
+
+ resource = file;
+ }
+
+ public void close() throws IOException {
+ super.close();
+
+ resource.freeFile();
+
+ //XXX: xml upload back to db
+
+ //XXX: locking?
+ }
+}
Added: branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceRandomAccess.java
===================================================================
--- branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceRandomAccess.java (rev 0)
+++ branches/pbosek/jorsek-official/eXist/src/org/exist/util/io/ResourceRandomAccess.java 2013-03-26 08:28:55 UTC (rev 18340)
@@ -0,0 +1,51 @@
+/*
+ * eXist Open Source Native XML Database
+ * Copyright (C) 2012 The eXist Project
+ * http://exist-db.org
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * $Id$
+ */
+package org.exist.util.io;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+/**
+ * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a>
+ *
+ */
+public class ResourceRandomAccess extends RandomAccessFile {
+
+ private Resource resource;
+
+ public ResourceRandomAccess(Resource resource, String mode) throws FileNotFoundException {
+ super(resource.getFile(), mode);
+
+ this.resource = resource;
+ }
+
+ public void close() throws IOException {
+ super.close();
+
+ resource.freeFile();
+
+ //XXX: xml upload back to db
+
+ //XXX: locking?
+ }
+}
|
|
From: <sha...@us...> - 2013-03-26 07:34:12
|
Revision: 18339
http://sourceforge.net/p/exist/code/18339
Author: shabanovd
Date: 2013-03-26 07:34:06 +0000 (Tue, 26 Mar 2013)
Log Message:
-----------
[ignore] review
Modified Paths:
--------------
trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTS_case.java
trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTStoJUnit.java
trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTestCase.java
trunk/eXist/test/src/org/exist/w3c/tests/TestCase.java
trunk/eXist/test/src/org/exist/xquery/xqts/QT3TS_case.java
trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_case.java
Modified: trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTS_case.java
===================================================================
--- trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTS_case.java 2013-03-26 05:28:31 UTC (rev 18338)
+++ trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTS_case.java 2013-03-26 07:34:06 UTC (rev 18339)
@@ -42,10 +42,10 @@
import org.exist.storage.BrokerPool;
import org.exist.storage.DBBroker;
import org.exist.w3c.tests.TestCase;
+import org.exist.xmldb.XmldbURI;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
import org.exist.xquery.value.Sequence;
-import org.junit.Before;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -67,19 +67,6 @@
}
- @Before
- public void setUp() throws Exception {
- synchronized (database) {
- if (testCollection == null) {
- loadTS();
-// testCollection = DatabaseManager.getCollection("xmldb:exist:///db/XQTS", "admin", "");
-// if (testCollection == null) {
-// Assert.fail("There is no Test Suite data at database");
-// }
- }
- }
- }
-
protected void testCase(String inputURL, String xslURL, String outputURL, String expectedError) throws Exception {
// String input = loadFile(XSLTS_folder+"TestInputs/"+inputURL, false);
// String stylesheet = loadFile(XSLTS_folder+"TestInputs/"+xslURL, true);
@@ -95,13 +82,13 @@
XQueryContext context;
// XQuery xquery;
//
- broker = pool.get(pool.getSecurityManager().getSystemSubject());
+ broker = db.get(db.getSecurityManager().getSystemSubject());
// xquery = broker.getXQueryService();
//
// broker.getConfiguration().setProperty( XQueryContext.PROPERTY_XQUERY_RAISE_ERROR_ON_FAILED_RETRIEVAL, true);
//
// context = xquery.newContext(AccessContext.TEST);
- context = new XSLContext(pool);
+ context = new XSLContext(db);
//
// } catch (Exception e) {
// Assert.fail(e.getMessage());
@@ -123,7 +110,7 @@
// Sequence result = xquery.execute(compiled, null);
TransformerFactoryImpl factory = new TransformerFactoryImpl();
- factory.setBrokerPool(pool);
+ factory.setBrokerPool(db);
Templates templates = factory.newTemplates(
new SourceImpl(
@@ -174,7 +161,7 @@
Assert.fail("expected error is "+expectedError+", get "+error+" ["+e.getMessage()+"]");
}
} finally {
- pool.release(broker);
+ db.release(broker);
}
// StringBuilder content = new StringBuilder();
@@ -230,40 +217,44 @@
} else {
// Open the file and then get a channel from the stream
FileInputStream fis = new FileInputStream(file);
- FileChannel fc = fis.getChannel();
-
- // Get the file's size and then map it into memory
- int sz = (int)fc.size();
- MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
-
- // Charset and decoder for ISO-8859-15
- Charset charset = Charset.forName("ISO-8859-15");
- CharsetDecoder decoder = charset.newDecoder();
-
- // Decode the file into a char buffer
- CharBuffer cb = decoder.decode(bb);
-
- result = cb.toString();
- //TODO: rewrite to handle <?xml*?>
- if (result.startsWith("<?xml ")) {
- int endAt = result.indexOf("?>");
- result = result.substring(endAt+2);
+ try {
+ FileChannel fc = fis.getChannel();
+
+ // Get the file's size and then map it into memory
+ int sz = (int)fc.size();
+ MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
+
+ // Charset and decoder for ISO-8859-15
+ Charset charset = Charset.forName("ISO-8859-15");
+ CharsetDecoder decoder = charset.newDecoder();
+
+ // Decode the file into a char buffer
+ CharBuffer cb = decoder.decode(bb);
+
+ result = cb.toString();
+ //TODO: rewrite to handle <?xml*?>
+ if (result.startsWith("<?xml ")) {
+ int endAt = result.indexOf("?>");
+ result = result.substring(endAt+2);
+ }
+
+ //XXX: rethink: prexslt query processing
+ if (incapsulate) {
+ result = result.replaceAll("\\{", "\\{\\{");
+ result = result.replaceAll("\\}", "\\}\\}");
+ }
+
+ // Close the channel and the stream
+ fc.close();
+ } finally {
+ fis.close();
}
-
- //XXX: rethink: prexslt query processing
- if (incapsulate) {
- result = result.replaceAll("\\{", "\\{\\{");
- result = result.replaceAll("\\}", "\\}\\}");
- }
-
- // Close the channel and the stream
- fc.close();
}
return result;
}
@Override
- protected String getCollection() {
- return "/db/XQTS";
+ protected XmldbURI getCollection() {
+ return XmldbURI.create("/db/XSLTS");
}
}
Modified: trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTStoJUnit.java
===================================================================
--- trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTStoJUnit.java 2013-03-26 05:28:31 UTC (rev 18338)
+++ trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTStoJUnit.java 2013-03-26 07:34:06 UTC (rev 18339)
@@ -49,11 +49,11 @@
private static final String NAME = "name";
- private static final String INPUT = "input";
+// private static final String INPUT = "input";
private static final String STYLESHEET = "stylesheet";
private static final String SOURCE_DOCUMENT = "source-document";
- private static final String OUTPUT = "output";
+// private static final String OUTPUT = "output";
private static final String RESULT_DOCUMENT = "result-document";
private static final String ERROR = "error";
Modified: trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTestCase.java
===================================================================
--- trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTestCase.java 2013-03-26 05:28:31 UTC (rev 18338)
+++ trunk/eXist/extensions/xslt/test/src/org/exist/xslt/XSLTestCase.java 2013-03-26 07:34:06 UTC (rev 18339)
@@ -119,24 +119,28 @@
if (testConf.canRead()) {
// Open the file and then get a channel from the stream
FileInputStream fis = new FileInputStream(testConf);
- FileChannel fc = fis.getChannel();
-
- // Get the file's size and then map it into memory
- int sz = (int)fc.size();
- MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
-
- // Charset and decoder for ISO-8859-15
- Charset charset = Charset.forName("ISO-8859-15");
- CharsetDecoder decoder = charset.newDecoder();
-
- // Decode the file into a char buffer
- CharBuffer cb = decoder.decode(bb);
-
- // Perform the search
- loadBench(testConf, cb, bench);
-
- // Close the channel and the stream
- fc.close();
+ try {
+ FileChannel fc = fis.getChannel();
+
+ // Get the file's size and then map it into memory
+ int sz = (int)fc.size();
+ MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
+
+ // Charset and decoder for ISO-8859-15
+ Charset charset = Charset.forName("ISO-8859-15");
+ CharsetDecoder decoder = charset.newDecoder();
+
+ // Decode the file into a char buffer
+ CharBuffer cb = decoder.decode(bb);
+
+ // Perform the search
+ loadBench(testConf, cb, bench);
+
+ // Close the channel and the stream
+ fc.close();
+ } finally {
+ fis.close();
+ }
}
}
@@ -149,9 +153,9 @@
int position;
Matcher lm = linePattern.matcher(cb); // Line matcher
- int lines = 0;
+// int lines = 0;
while (lm.find()) {
- lines++;
+// lines++;
CharSequence cs = lm.group(); // The current line
String str = cs.toString();
@@ -476,32 +480,36 @@
} else {
// Open the file and then get a channel from the stream
FileInputStream fis = new FileInputStream(file);
- FileChannel fc = fis.getChannel();
-
- // Get the file's size and then map it into memory
- int sz = (int)fc.size();
- MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
-
- // Charset and decoder for ISO-8859-15
- Charset charset = Charset.forName("ISO-8859-15");
- CharsetDecoder decoder = charset.newDecoder();
-
- // Decode the file into a char buffer
- CharBuffer cb = decoder.decode(bb);
-
- result = cb.toString();
- //TODO: rewrite to handle <?xml*?>
- if (result.startsWith("<?xml version=\"1.0\"?>"))
- result = result.substring("<?xml version=\"1.0\"?>".length());
- if (result.startsWith("<?xml version=\"1.0\" encoding=\"utf-8\"?>"))
- result = result.substring("<?xml version=\"1.0\" encoding=\"utf-8\"?>".length());
-
- //XXX: rethink: prexslt query processing
-// result = result.replaceAll("{", "{{");
-// result = result.replaceAll("}", "}}");
-
- // Close the channel and the stream
- fc.close();
+ try {
+ FileChannel fc = fis.getChannel();
+
+ // Get the file's size and then map it into memory
+ int sz = (int)fc.size();
+ MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
+
+ // Charset and decoder for ISO-8859-15
+ Charset charset = Charset.forName("ISO-8859-15");
+ CharsetDecoder decoder = charset.newDecoder();
+
+ // Decode the file into a char buffer
+ CharBuffer cb = decoder.decode(bb);
+
+ result = cb.toString();
+ //TODO: rewrite to handle <?xml*?>
+ if (result.startsWith("<?xml version=\"1.0\"?>"))
+ result = result.substring("<?xml version=\"1.0\"?>".length());
+ if (result.startsWith("<?xml version=\"1.0\" encoding=\"utf-8\"?>"))
+ result = result.substring("<?xml version=\"1.0\" encoding=\"utf-8\"?>".length());
+
+ //XXX: rethink: prexslt query processing
+// result = result.replaceAll("{", "{{");
+// result = result.replaceAll("}", "}}");
+
+ // Close the channel and the stream
+ fc.close();
+ } finally {
+ fis.close();
+ }
}
return result;
}
Modified: trunk/eXist/test/src/org/exist/w3c/tests/TestCase.java
===================================================================
--- trunk/eXist/test/src/org/exist/w3c/tests/TestCase.java 2013-03-26 05:28:31 UTC (rev 18338)
+++ trunk/eXist/test/src/org/exist/w3c/tests/TestCase.java 2013-03-26 07:34:06 UTC (rev 18339)
@@ -40,12 +40,15 @@
import org.custommonkey.xmlunit.Diff;
import org.exist.Namespaces;
+import org.exist.collections.Collection;
import org.exist.dom.NodeProxy;
import org.exist.memtree.NodeImpl;
import org.exist.memtree.SAXAdapter;
import org.exist.security.Subject;
import org.exist.storage.BrokerPool;
+import org.exist.storage.DBBroker;
import org.exist.storage.serializers.EXistOutputKeys;
+import org.exist.util.Configuration;
import org.exist.xmldb.LocalCollection;
import org.exist.xmldb.LocalXMLResource;
import org.exist.xmldb.XmldbURI;
@@ -62,8 +65,6 @@
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
-import org.xmldb.api.DatabaseManager;
-import org.xmldb.api.base.Collection;
import org.xmldb.api.base.ErrorCodes;
import org.xmldb.api.base.Resource;
import org.xmldb.api.base.XMLDBException;
@@ -74,66 +75,24 @@
*/
public abstract class TestCase {
- public static org.exist.start.Main database = null;
- private static int inUse = 0;
- public static Collection testCollection = null;
-
- public static BrokerPool pool = null;
-
- private static Thread shutdowner = null;
-
+ protected static BrokerPool db = null;
+ protected static DBBroker broker = null;
+ protected static Collection testCollection = null;
+
public static final String testLocation = "test/external/";
- static class Shutdowner implements Runnable {
-
- public void run() {
- try {
- while (true) {
- Thread.sleep(10 * 1000);
-
- if (inUse == 0) {
- //double check
- Thread.sleep(10 * 1000);
-
- if (inUse == 0) {
- database.shutdown();
-
- System.out.println("database was shutdown");
- database = null;
- }
- }
- }
- } catch (InterruptedException e) {
- }
- }
-
- }
-
@BeforeClass
public static void setUpBeforeClass() throws Exception {
// System.out.println("setUpBeforeClass ENTERED");
- try {
- if (database == null) {
- System.out.println("Start up database...");
- database = new org.exist.start.Main("jetty");
- database.run(new String[] { "jetty" });
-// testCollection = DatabaseManager.getCollection("xmldb:exist:///db/XQTS", "admin", "");
+ Configuration configuration = new Configuration();
+ BrokerPool.configure(1, 10, configuration);
- if (shutdowner == null) {
- shutdowner = new Thread(new Shutdowner());
- shutdowner.start();
- }
-
- pool = BrokerPool.getInstance();
- System.out.println("Database ready.");
- }
- synchronized (database) {
- inUse++;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
+ db = BrokerPool.getInstance();
+
+ broker = db.get(db.getSecurityManager().getSystemSubject());
+ Assert.assertNotNull(broker);
+
// System.out.println("setUpBeforeClass PASSED");
}
@@ -141,9 +100,10 @@
@AfterClass
public static void tearDownAfterClass() throws Exception {
- synchronized (database) {
- inUse--;
- }
+// System.out.println("tearDownAfterClass ENTERED");
+
+ db.release(broker);
+
// System.out.println("tearDownAfterClass PASSED");
}
@@ -154,14 +114,14 @@
public void setUp() throws Exception {
// System.out.println("setUp ENTERED");
if (testCollection == null) {
- synchronized (database) {
+ synchronized (db) {
if (testCollection == null) {
- testCollection = DatabaseManager.getCollection("xmldb:exist://"+getCollection(), "admin", "");
+ testCollection = broker.getCollection(getCollection());
if (testCollection == null) {
System.out.println("setUp no TS data");
loadTS();
System.out.println("setUp checking TS data");
- testCollection = DatabaseManager.getCollection("xmldb:exist://"+getCollection(), "admin", "");
+ testCollection = broker.getCollection(getCollection());
if (testCollection == null) {
Assert.fail("There is no Test Suite data at database");
}
@@ -172,7 +132,7 @@
// System.out.println("setUp PASSED");
}
- protected abstract String getCollection();
+ protected abstract XmldbURI getCollection();
/**
* @throws java.lang.Exception
@@ -372,12 +332,12 @@
LocalXMLResource res = null;
if (r instanceof NodeProxy) {
NodeProxy p = (NodeProxy) r;
- res = new LocalXMLResource(user, pool, collection, p);
+ res = new LocalXMLResource(user, db, collection, p);
} else if (r instanceof Node) {
- res = new LocalXMLResource(user, pool, collection, XmldbURI.EMPTY_URI);
+ res = new LocalXMLResource(user, db, collection, XmldbURI.EMPTY_URI);
res.setContentAsDOM((Node)r);
} else if (r instanceof AtomicValue) {
- res = new LocalXMLResource(user, pool, collection, XmldbURI.EMPTY_URI);
+ res = new LocalXMLResource(user, db, collection, XmldbURI.EMPTY_URI);
res.setContent(r);
} else if (r instanceof LocalXMLResource)
res = (LocalXMLResource) r;
Modified: trunk/eXist/test/src/org/exist/xquery/xqts/QT3TS_case.java
===================================================================
--- trunk/eXist/test/src/org/exist/xquery/xqts/QT3TS_case.java 2013-03-26 05:28:31 UTC (rev 18338)
+++ trunk/eXist/test/src/org/exist/xquery/xqts/QT3TS_case.java 2013-03-26 07:34:06 UTC (rev 18339)
@@ -33,7 +33,6 @@
import org.exist.storage.DBBroker;
import org.exist.util.serializer.SAXSerializer;
import org.exist.w3c.tests.TestCase;
-import org.exist.xmldb.XQueryService;
import org.exist.xmldb.XmldbURI;
import org.exist.xquery.CompiledXQuery;
import org.exist.xquery.Variable;
@@ -48,9 +47,6 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
-import org.xmldb.api.base.ResourceSet;
-import org.xmldb.api.base.XMLDBException;
-import org.xmldb.api.modules.XMLResource;
/**
* @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a>
@@ -82,7 +78,7 @@
XQuery xquery = null;
try {
- broker = pool.get(pool.getSecurityManager().getSystemSubject());
+ broker = db.get(db.getSecurityManager().getSystemSubject());
xquery = broker.getXQueryService();
broker.getConfiguration().setProperty( XQueryContext.PROPERTY_XQUERY_RAISE_ERROR_ON_FAILED_RETRIEVAL, true);
@@ -92,7 +88,7 @@
return xquery.execute(query, null, AccessContext.TEST);
} finally {
- pool.release(broker);
+ db.release(broker);
}
}
@@ -101,7 +97,7 @@
DBBroker broker = null;
try {
- broker = pool.get(pool.getSecurityManager().getSystemSubject());
+ broker = db.get(db.getSecurityManager().getSystemSubject());
XQuery xquery = broker.getXQueryService();
broker.getConfiguration().setProperty( XQueryContext.PROPERTY_XQUERY_RAISE_ERROR_ON_FAILED_RETRIEVAL, true);
@@ -142,7 +138,7 @@
} catch (Exception e) {
e.printStackTrace();
} finally {
- pool.release(broker);
+ db.release(broker);
}
return enviroments;
}
@@ -152,7 +148,7 @@
DBBroker broker = null;
try {
- broker = pool.get(pool.getSecurityManager().getSystemSubject());
+ broker = db.get(db.getSecurityManager().getSystemSubject());
XQuery xquery = broker.getXQueryService();
broker.getConfiguration().setProperty( XQueryContext.PROPERTY_XQUERY_RAISE_ERROR_ON_FAILED_RETRIEVAL, true);
@@ -196,7 +192,7 @@
} catch (Exception e) {
e.printStackTrace();
} finally {
- pool.release(broker);
+ db.release(broker);
}
return enviroment;
}
@@ -209,15 +205,13 @@
Sequence result = null;
XQuery xquery = null;
- try {
- XQueryService service = (XQueryService) testCollection.getService("XQueryService", "1.0");
-
+// try {
Set<String> extectedError = new HashSet<String>();
try {
- broker = pool.get(pool.getSecurityManager().getSystemSubject());
+ broker = db.get(db.getSecurityManager().getSystemSubject());
xquery = broker.getXQueryService();
- final XQueryContext context = new XQueryContext(pool, AccessContext.TEST);
+ final XQueryContext context = new XQueryContext(db, AccessContext.TEST);
broker.getConfiguration().setProperty( XQueryContext.PROPERTY_XQUERY_RAISE_ERROR_ON_FAILED_RETRIEVAL, true);
@@ -226,11 +220,13 @@
"let $tc := $testCases//qt:test-case[@name eq \""+tcName+"\"]\n"+
"return $tc";
- ResourceSet results = service.query(query);
+ XQuery xqs = broker.getXQueryService();
+
+ Sequence results = xqs.execute(query, null, AccessContext.TEST);
- Assert.assertFalse("", results.getSize() != 1);
+ Assert.assertFalse("", !results.isEmpty());
- ElementImpl TC = (ElementImpl) ((XMLResource) results.getResource(0)).getContentAsDOM();
+ ElementImpl TC = (ElementImpl) results.toNodeSet().get(0).getNode();
Sequence contextSequence = null;
@@ -357,11 +353,11 @@
e.printStackTrace();
Assert.fail(e.getMessage());
} finally {
- pool.release(broker);
+ db.release(broker);
}
- } catch (XMLDBException e) {
- Assert.fail(e.toString());
- }
+// } catch (XMLDBException e) {
+// Assert.fail(e.toString());
+// }
}
private void possibleErrors(ElementImpl el, Set<String> extectedError) {
@@ -601,7 +597,7 @@
private String toString(Item item) throws SAXException {
StringWriter writer = new StringWriter();
SAXSerializer serializer = new SAXSerializer(writer, properties);
- item.toSAX(pool.getActiveBroker(), serializer, properties);
+ item.toSAX(broker, serializer, properties);
String serialized = writer.toString();
//System.out.println(serialized);
return serialized;
@@ -649,7 +645,7 @@
@Override
- protected String getCollection() {
- return QT3_URI.toString();
+ protected XmldbURI getCollection() {
+ return QT3_URI;
}
}
Modified: trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_case.java
===================================================================
--- trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_case.java 2013-03-26 05:28:31 UTC (rev 18338)
+++ trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_case.java 2013-03-26 07:34:06 UTC (rev 18339)
@@ -137,7 +137,7 @@
XQuery xquery = null;
try {
- broker = pool.get(pool.getSecurityManager().getSystemSubject());
+ broker = db.get(db.getSecurityManager().getSystemSubject());
broker.getConfiguration().setProperty( XQueryContext.PROPERTY_XQUERY_RAISE_ERROR_ON_FAILED_RETRIEVAL, true);
xquery = broker.getXQueryService();
@@ -153,7 +153,7 @@
Assert.assertFalse("", !results.hasOne());
- ElementImpl TC = (ElementImpl) results.itemAt(0);
+ ElementImpl TC = (ElementImpl) results.toNodeSet().get(0).getNode();
//collect test case information
String folder = "";
@@ -413,7 +413,7 @@
} catch (Exception e) {
Assert.fail(e.toString());
} finally {
- pool.release(broker);
+ db.release(broker);
}
}
@@ -460,7 +460,7 @@
}
@Override
- protected String getCollection() {
- return XQTS_URI.toString();
+ protected XmldbURI getCollection() {
+ return XQTS_URI;
}
}
|
|
From: <sha...@us...> - 2013-03-26 05:28:34
|
Revision: 18338
http://sourceforge.net/p/exist/code/18338
Author: shabanovd
Date: 2013-03-26 05:28:31 +0000 (Tue, 26 Mar 2013)
Log Message:
-----------
[ignore] avoid NPE
Modified Paths:
--------------
trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_To_junit.java
Modified: trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_To_junit.java
===================================================================
--- trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_To_junit.java 2013-03-25 22:59:06 UTC (rev 18337)
+++ trunk/eXist/test/src/org/exist/xquery/xqts/XQTS_To_junit.java 2013-03-26 05:28:31 UTC (rev 18338)
@@ -134,6 +134,9 @@
broker.saveCollection(null, current);
File[] files = folder.listFiles();
+
+ if (files == null) return;
+
for (File file : files) {
if (file.isDirectory()) {
if (file.getName().equals("CVS"))
|
|
From: Dmitriy S. <sha...@gm...> - 2013-03-26 05:20:47
|
I'm totally lost in arguments ;-) *major.minor[.maintenance[.build]] right? * On Tue, Mar 26, 2013 at 2:14 AM, Adam Retter <ad...@ex...> wrote: > Yea yea I get that my friend, but I guess I am saying that 2.x should > not leak outside of the 2.x branch. > > > > On 25 March 2013 20:37, Dannes Wessels <di...@ex...> wrote: > > On 25 Mar 2013, at 21:36 , Dannes Wessels <di...@ex...> wrote: > > > > 2.x is now 2.0.1 ..... Not 2.1 > > > > > > the rationale: the current changes are fixes, no new features...... > > > -- Dmitriy Shabanov |
|
From: <del...@us...> - 2013-03-25 22:59:08
|
Revision: 18337
http://sourceforge.net/p/exist/code/18337
Author: deliriumsky
Date: 2013-03-25 22:59:06 +0000 (Mon, 25 Mar 2013)
Log Message:
-----------
[bugfix] correctly interpret the charset parameter in ContentType headers
Modified Paths:
--------------
trunk/eXist/extensions/exquery/lib/exquery-annotations-common-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/lib/exquery-annotations-common-api-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/lib/exquery-common-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/lib/exquery-serialization-annotations-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/lib/exquery-serialization-annotations-api-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/lib/exquery-xquery-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/lib/exquery-xquery3-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/restxq/lib/exquery-restxq-1.0-SNAPSHOT.jar
trunk/eXist/extensions/exquery/restxq/lib/exquery-restxq-api-1.0-SNAPSHOT.jar
Modified: trunk/eXist/extensions/exquery/lib/exquery-annotations-common-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/lib/exquery-annotations-common-api-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/lib/exquery-common-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/lib/exquery-serialization-annotations-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/lib/exquery-serialization-annotations-api-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/lib/exquery-xquery-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/lib/exquery-xquery3-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/restxq/lib/exquery-restxq-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: trunk/eXist/extensions/exquery/restxq/lib/exquery-restxq-api-1.0-SNAPSHOT.jar
===================================================================
(Binary files differ)
|
|
From: <wol...@us...> - 2013-03-25 22:08:10
|
Revision: 18336
http://sourceforge.net/p/exist/code/18336
Author: wolfgang_m
Date: 2013-03-25 22:08:08 +0000 (Mon, 25 Mar 2013)
Log Message:
-----------
[bugfix] Allow "math" namespace to be overwritten (the math prefix has the same status as the fn prefix in XQ 3: predefined but may be overwritten). Port of rev 18326.
Revision Links:
--------------
http://sourceforge.net/p/exist/code/18326
Modified Paths:
--------------
stable/eXist-2.0.x/src/org/exist/xquery/XQueryContext.java
Modified: stable/eXist-2.0.x/src/org/exist/xquery/XQueryContext.java
===================================================================
--- stable/eXist-2.0.x/src/org/exist/xquery/XQueryContext.java 2013-03-25 22:00:58 UTC (rev 18335)
+++ stable/eXist-2.0.x/src/org/exist/xquery/XQueryContext.java 2013-03-25 22:08:08 UTC (rev 18336)
@@ -681,7 +681,8 @@
if( ( prefix.equals( "xs" ) && Namespaces.SCHEMA_NS.equals( prevURI ) )
|| ( prefix.equals( "xsi" ) && Namespaces.SCHEMA_INSTANCE_NS.equals( prevURI ) )
|| ( prefix.equals( "xdt" ) && Namespaces.XPATH_DATATYPES_NS.equals( prevURI ) )
- || ( prefix.equals( "fn" ) && Namespaces.XPATH_FUNCTIONS_NS.equals( prevURI ) )
+ || ( prefix.equals( "fn" ) && Namespaces.XPATH_FUNCTIONS_NS.equals( prevURI ) )
+ || ( prefix.equals( "math" ) && Namespaces.XPATH_FUNCTIONS_MATH_NS.equals( prevURI ) )
|| ( prefix.equals( "local" ) && Namespaces.XQUERY_LOCAL_NS.equals( prevURI ) ) ) {
staticPrefixes.remove( prevURI );
|
|
From: <wol...@us...> - 2013-03-25 22:01:01
|
Revision: 18335
http://sourceforge.net/p/exist/code/18335
Author: wolfgang_m
Date: 2013-03-25 22:00:58 +0000 (Mon, 25 Mar 2013)
Log Message:
-----------
[bugfix] Fix XQuery error reporting: 1) error message in enclosed expression is swallowed, 2) no line number for undeclared namespace errors. Port of rev 18317.
Revision Links:
--------------
http://sourceforge.net/p/exist/code/18317
Modified Paths:
--------------
stable/eXist-2.0.x/src/org/exist/xquery/parser/XQuery.g
stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryLexer.smap
stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryParser.java
stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryParser.smap
stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryTree.g
stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryTreeParser.java
stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryTreeParser.smap
Modified: stable/eXist-2.0.x/src/org/exist/xquery/parser/XQuery.g
===================================================================
--- stable/eXist-2.0.x/src/org/exist/xquery/parser/XQuery.g 2013-03-25 21:59:09 UTC (rev 18334)
+++ stable/eXist-2.0.x/src/org/exist/xquery/parser/XQuery.g 2013-03-25 22:00:58 UTC (rev 18335)
@@ -1082,8 +1082,11 @@
( ( ncnameOrKeyword COLON STAR ) | STAR )
=> wildcard
|
- name=qName
- { #nameTest= #[QNAME, name]; }
+ name=n:qName
+ {
+ #nameTest= #[QNAME, name];
+ #nameTest.copyLexInfo(#n);
+ }
;
wildcard
@@ -1484,8 +1487,12 @@
{ #elementWithoutAttributes.copyLexInfo(#q); }
exception catch [RecognitionException e]
{
- lexer.wsExplicit = false;
- throw new XPathException(#q, "err:XPST0003: No closing end tag found for element constructor: " + name);
+ if (e.getMessage().contains("expecting XML end tag") || e.getMessage().contains("<")) {
+ lexer.wsExplicit = false;
+ throw new XPathException(#q, "err:XPST0003: No closing end tag found for element constructor: " + name);
+ } else {
+ throw e;
+ }
}
;
@@ -1528,8 +1535,12 @@
{ #elementWithAttributes.copyLexInfo(#q); }
exception catch [RecognitionException e]
{
- lexer.wsExplicit = false;
- throw new XPathException(#q, "err:XPST0003: Static error: no closing end tag found for element constructor: " + name);
+ if (e.getMessage().contains("expecting XML end tag") || e.getMessage().contains("<")) {
+ lexer.wsExplicit = false;
+ throw new XPathException(#q, "err:XPST0003: Static error: no closing end tag found for element constructor: " + name);
+ } else {
+ throw e;
+ }
}
;
Modified: stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryLexer.smap
===================================================================
--- stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryLexer.smap 2013-03-25 21:59:09 UTC (rev 18334)
+++ stable/eXist-2.0.x/src/org/exist/xquery/parser/XQueryLexer.smap 2013-03-25 22:00:58 UTC (rev 18335)
@@ -27,3564 +27,3564 @@
22:21
22:22
22:23
-1907:55
-1908:56
-1909:57
-1910:58
-1911:59
-1912:60
-1913:61
-1914:62
-1915:63
-1917:65
-1918:66
-1919:67
-1920:68
-1922:70
-1923:71
-1924:72
-1925:73
-1926:74
-1928:76
-1929:77
-1930:78
-1931:79
-1932:80
-1933:81
-1934:82
-1935:83
-1938:248
-1938:249
-1938:250
-1938:251
-1938:253
-1938:254
-1938:255
-1938:256
-1938:257
-1938:258
-1938:259
-1939:261
-1939:262
-1939:263
-1939:264
-1939:266
-1939:267
-1939:268
-1939:269
-1939:270
-1939:271
-1939:272
-1939:273
-1940:275
-1940:276
-1940:277
-1940:278
-1940:280
-1940:281
-1940:282
-1940:283
-1940:284
-1940:285
-1940:286
-1941:288
-1941:289
-1941:290
-1941:291
-1941:293
-1941:294
-1941:295
-1941:296
-1941:297
-1941:298
-1941:299
-1942:301
-1942:302
-1942:303
-1942:304
-1942:306
-1942:307
-1942:308
-1942:309
-1942:310
-1942:311
-1942:312
-1943:314
-1943:315
-1943:316
-1943:317
-1943:319
-1943:320
-1943:321
-1943:322
-1943:323
-1943:324
-1943:325
-1944:327
-1944:328
-1944:329
-1944:330
-1944:332
-1944:333
-1944:334
-1944:335
-1944:336
-1944:337
-1944:338
-1945:340
-1945:341
-1945:342
-1945:343
-1945:345
-1945:346
-1945:347
-1945:348
-1945:349
-1945:350
-1945:351
-1946:353
-1946:354
-1946:355
-1946:356
-1946:358
-1946:359
-1946:360
-1946:361
-1946:362
-1946:363
-1946:364
-1947:366
-1947:367
-1947:368
-1947:369
-1947:371
-1947:372
-1947:373
-1947:374
-1947:375
-1947:376
-1947:377
-1948:379
-1948:380
-1948:381
-1948:382
-1948:384
-1948:385
-1948:386
-1948:387
-1948:388
-1948:389
-1948:390
-1949:392
-1949:393
-1949:394
-1949:395
-1949:397
-1949:398
-1949:399
-1949:400
-1949:401
-1949:402
-1949:403
-1950:405
-1950:406
-1950:407
-1950:408
-1950:410
-1950:411
-1950:412
-1950:413
-1950:414
-1950:415
-1950:416
-1951:418
-1951:419
-1951:420
-1951:421
-1951:423
-1951:424
-1951:425
-1951:426
-1951:427
-1951:428
-1951:429
-1952:431
-1952:432
-1952:433
-1952:434
-1952:436
-1952:437
-1952:438
-1952:439
-1952:440
-1952:441
-1952:442
-1953:444
-1953:445
-1953:446
-1953:447
-1953:449
-1953:450
-1953:451
-1953:452
-1953:453
-1953:454
-1953:455
-1954:457
-1954:458
-1954:459
-1954:460
-1954:462
-1954:463
-1954:464
-1954:465
-1954:466
-1954:467
-1954:468
-1955:470
-1955:471
-1955:472
-1955:473
-1955:475
-1955:476
-1955:477
-1955:478
-1955:479
-1955:480
-1955:481
-1956:483
-1956:484
-1956:485
-1956:486
-1956:488
-1956:489
-1956:490
-1956:491
-1956:492
-1956:493
-1956:494
-1957:496
-1957:497
-1957:498
-1957:499
-1957:501
-1957:502
-1957:503
-1957:504
-1957:505
-1957:506
-1957:507
-1957:508
-1958:510
-1958:511
-1958:512
-1958:513
-1958:515
-1958:516
-1958:517
-1958:518
-1958:519
-1958:520
-1958:521
-1959:523
-1959:524
-1959:525
-1959:526
-1959:528
-1959:529
-1959:530
-1959:531
-1959:532
-1959:533
-1959:534
-1960:536
-1960:537
-1960:538
-1960:539
-1960:541
-1960:542
-1960:543
-1960:544
-1960:545
-1960:546
-1960:547
-1961:549
-1961:550
-1961:551
-1961:552
-1961:554
-1961:555
-1961:556
-1961:557
-1961:558
-1961:559
-1961:560
-1962:562
-1962:563
-1962:564
-1962:565
-1962:567
-1962:568
-1962:569
-1962:570
-1962:571
-1962:572
-1962:573
-1963:575
-1963:576
-1963:577
-1963:578
-1963:580
-1963:581
-1963:582
-1963:583
-1963:584
-1963:585
-1963:586
-1964:588
-1964:589
-1964:590
-1964:591
-1964:593
-1964:594
-1964:595
-1964:596
-1964:597
-1964:598
-1964:599
-1965:601
-1965:602
-1965:603
-1965:604
-1965:606
-1965:607
-1965:608
-1965:609
-1965:610
-1965:611
-1965:612
-1966:614
-1966:615
-1966:616
-1966:617
-1966:619
-1966:620
-1966:621
-1966:622
-1966:623
-1966:624
-1966:625
-1967:627
-1967:628
-1967:629
-1967:630
-1967:632
-1967:633
-1967:634
-1967:635
-1967:636
-1967:637
-1967:638
-1969:640
-1969:641
-1969:642
-1969:643
-1969:645
-1969:646
-1969:647
-1969:648
-1969:649
-1969:650
-1969:651
-1970:653
-1970:654
-1970:655
-1970:656
-1970:658
-1970:659
-1970:660
-1970:661
-1970:662
-1970:663
-1970:664
-1972:666
-1972:667
-1972:668
-1972:669
-1972:671
-1972:672
-1972:673
-1972:674
-1972:675
-1972:676
-1972:677
-1974:679
-1974:680
-1974:681
-1974:682
-1974:685
-1974:686
-1974:687
-1974:688
-1974:689
-1974:690
-1975:684
-1977:692
-1977:693
-1977:694
-1977:695
-1977:697
-1977:698
-1977:699
-1977:700
-1977:701
-1977:702
-1977:703
-1978:705
-1978:706
-1978:707
-1978:708
-1978:710
-1978:711
-1978:712
-1978:713
-1978:714
-1978:715
-1978:716
-1980:718
-1980:719
-1980:720
-1980:721
-1980:723
-1980:724
-1980:725
-1980:726
-1980:727
-1980:728
-1980:729
-1981:731
-1981:732
-1981:733
-1981:734
-1981:736
-1981:737
-1981:738
-1981:739
-1981:740
-1981:741
-1981:742
-1982:744
-1982:745
-1982:746
-1982:747
-1982:749
-1982:750
-1982:751
-1982:752
-1982:753
-1982:754
-1982:755
-1983:757
-1983:758
-1983:759
-1983:760
-1983:762
-1983:763
-1983:764
-1983:765
-1983:766
-1983:767
-1983:768
-1984:770
-1984:771
-1984:772
-1984:773
-1984:775
-1984:776
-1984:777
-1984:778
-1984:779
-1984:780
-1984:781
-1986:783
-1986:784
-1986:785
-1986:786
-1986:800
-1986:801
-1986:802
-1986:803
-1986:804
-1986:805
-1988:789
-1988:790
-1988:791
-1988:792
-1988:793
-1988:794
-1988:795
-1988:796
-1988:797
-1991:2328
-1991:2329
-1991:2330
-1991:2331
-1991:2347
-1991:2348
-1991:2349
-1991:2350
-1991:2351
-1991:2352
-1993:2334
-1993:2335
-1993:2336
-1993:2337
-1993:2338
-1993:2339
-1993:2340
-1993:2341
-1993:2342
-1993:2344
-1993:2345
-1993:2346
-1996:2479
-1996:2480
-1996:2481
-1996:2482
-1996:2516
-1996:2517
-1996:2518
-1996:2519
-1996:2520
-1996:2521
-1998:2485
-1998:2486
-1998:2487
-1998:2488
-1998:2489
-1998:2490
-1998:2491
-1998:2492
-1998:2493
-1998:2496
-1998:2497
-1998:2498
-1998:2499
-1998:2502
-1998:2503
-1998:2504
-1998:2505
-1998:2508
-1998:2509
-1998:2510
-1998:2511
-1998:2512
-1998:2513
-1998:2514
-1998:2515
-2001:2523
-2001:2524
-2001:2525
-2001:2526
-2001:2540
-2001:2541
-2001:2542
-2001:2543
-2001:2544
-2001:2545
-2003:2529
-2003:2530
-2003:2531
-2003:2532
-2003:2533
-2003:2534
-2003:2535
-2003:2536
-2003:2537
-2006:2547
-2006:2548
-2006:2549
-2006:2550
-2006:2593
-2006:2594
-2006:2595
-2006:2596
-2006:2597
-2006:2598
-2008:2553
-2008:2554
-2008:2555
-2008:2556
-2008:2559
-2008:2560
-2008:2561
-2008:2564
-2008:2565
-2008:2566
-2008:2569
-2008:2570
-2008:2571
-2008:2572
-2008:2573
-2008:2574
-2008:2575
-2008:2578
-2008:2579
-2008:2580
-2008:2581
-2008:2582
-2008:2583
-2008:2584
-2008:2585
-2008:2586
-2008:2587
-2008:2588
-2008:2589
-2008:2590
-2008:2591
-2011:3230
-2011:3231
-2011:3232
-2011:3233
-2011:3248
-2011:3249
-2011:3250
-2011:3251
-2011:3252
-2011:3253
-2011:3254
-2017:3235
-2017:3236
-2017:3237
-2017:3238
-2017:3239
-2017:3240
-2017:3241
-2017:3242
-2017:3243
-2017:3244
-2017:3246
-2017:3247
-2020:3256
-2020:3257
-2020:3258
-2020:3259
-2020:3287
-2020:3288
-2020:3289
-2020:3290
-2020:3291
-2020:3292
-2022:3262
-2022:3263
-2022:3264
-2022:3267
-2022:3270
-2022:3276
-2022:3279
-2022:3280
-2022:3281
-2022:3282
-2022:3284
-2022:3285
-2022:3286
-2024:3265
-2024:3266
-2026:3268
-2026:3269
-2028:3271
-2028:3272
-2028:3273
-2028:3274
-2030:3277
-2030:3278
-2034:3294
-2034:3295
-2034:3296
-2034:3297
-2034:3326
-2034:3327
-2034:3328
-2034:3329
-2034:3330
-2034:3331
-2040:3299
-2040:3300
-2040:3301
-2040:3302
-2040:3303
-2040:3304
-2040:3305
-2040:3307
-2040:3308
-2040:3309
-2040:3310
-2040:3311
-2040:3312
-2040:3313
-2040:3314
-2040:3315
-2040:3318
-2040:3319
-2040:3320
-2040:3321
-2040:3323
-2040:3324
-2040:3325
-2043:3333
-2043:3334
-2043:3335
-2043:3336
-2043:3365
-2043:3366
-2043:3367
-2043:3368
-2043:3369
-2043:3370
-2049:3338
-2049:3339
-2049:3340
-2049:3341
-2049:3342
-2049:3343
-2049:3344
-2049:3346
-2049:3347
-2049:3348
-2049:3349
-2049:3350
-2049:3351
-2049:3352
-2049:3353
-2049:3354
-2049:3357
-2049:3358
-2049:3359
-2049:3360
-2049:3362
-2049:3363
-2049:3364
-2052:3372
-2052:3373
-2052:3374
-2052:3375
-2052:3377
-2052:3378
-2052:3380
-2052:3381
-2052:3382
-2052:3383
-2052:3384
-2052:3385
-2053:3379
-2055:3387
-2055:3388
-2055:3389
-2055:3390
-2055:3392
-2055:3393
-2055:3479
-2055:3480
-2055:3481
-2055:3482
-2055:3483
-2055:3484
-2058:3395
-2058:3397
-2058:3398
-2058:3400
-2058:3401
-2058:3403
-2058:3405
-2058:3406
-2058:3407
-2058:3408
-2058:3409
-2058:3410
-2058:3411
-2058:3412
-2058:3413
-2058:3414
-2058:3415
-2058:3416
-2058:3417
-2058:3419
-2058:3420
-2058:3427
-2058:3428
-2058:3429
-2058:3430
-2058:3431
-2058:3434
-2058:3435
-2058:3436
-2058:3437
-2058:3441
-2058:3442
-2058:3443
-2058:3444
-2058:3447
-2058:3448
-2058:3449
-2058:3452
-2058:3453
-2058:3454
-2058:3455
-2058:3456
-2058:3459
-2058:3460
-2058:3461
-2058:3462
-2058:3465
-2058:3466
-2058:3467
-2058:3470
-2058:3472
-2058:3473
-2058:3474
-2058:3475
-2058:3476
-2058:3478
-2061:3486
-2061:3487
-2061:3488
-2061:3489
-2061:3496
-2061:3521
-2061:3522
-2061:3523
-2061:3524
-2061:3526
-2061:3527
-2061:3528
-2061:3529
-2061:3530
-2061:3531
-2064:3491
-2064:3493
-2064:3494
-2064:3497
-2064:3499
-2064:3501
-2064:3502
-2064:3503
-2064:3504
-2064:3505
-2064:3506
-2064:3507
-2064:3508
-2064:3509
-2064:3510
-2064:3511
-2064:3513
-2064:3514
-2064:3515
-2064:3517
-2067:3533
-2067:3534
-2067:3535
-2067:3536
-2067:3569
-2067:3570
-2067:3571
-2067:3572
-2067:3573
-2067:3574
-2069:3538
-2069:3540
-2069:3541
-2069:3542
-2069:3543
-2069:3546
-2069:3547
-2069:3548
-2069:3551
-2069:3552
-2069:3553
-2069:3556
-2069:3557
-2069:3558
-2069:3559
-2069:3560
-2069:3561
-2069:3562
-2069:3563
-2069:3564
-2069:3565
-2069:3566
-2069:3568
-2072:3576
-2072:3577
-2072:3578
-2072:3579
-2072:3599
-2072:3600
-2072:3601
-2072:3602
-2072:3603
-2072:3604
-2074:3581
-2074:3582
-2074:3584
-2074:3585
-2074:3586
-2074:3587
-2074:3589
-2074:3590
-2074:3592
-2074:3593
-2074:3594
-2074:3595
-2074:3598
-2077:3606
-2077:3607
-2077:3608
-2077:3609
-2077:3611
-2077:3688
-2077:3689
-2077:3690
-2077:3691
-2077:3692
-2077:3693
-2077:3694
-2077:3695
-2077:3696
-2077:3697
-2077:3698
-2083:3612
-2083:3613
-2083:3614
-2083:3615
-2083:3616
-2083:3617
-2083:3618
-2083:3619
-2083:3620
-2083:3621
-2083:3622
-2083:3623
-2083:3624
-2083:3625
-2083:3626
-2083:3628
-2083:3629
-2083:3630
-2083:3631
-2083:3633
-2083:3634
-2083:3636
-2083:3638
-2083:3639
-2083:3640
-2083:3641
-2083:3643
-2083:3644
-2084:3645
-2084:3646
-2084:3647
-2086:3650
-2086:3651
-2086:3652
-2086:3653
-2086:3654
-2086:3655
-2086:3656
-2086:3657
-2086:3658
-2086:3659
-2086:3660
-2086:3661
-2086:3662
-2086:3663
-2086:3664
-2086:3666
-2086:3667
-2086:3668
-2086:3669
-2086:3671
-2086:3672
-2086:3674
-2086:3676
-2086:3677
-2086:3678
-2086:3679
-2086:3681
-2086:3682
-2087:3683
-2087:3684
-2087:3685
-2090:3700
-2090:3701
-2090:3702
-2090:3703
-2090:3721
-2090:3722
-2090:3723
-2090:3724
-2090:3725
-2090:3726
-2095:3706
-2095:3707
-2095:3708
-2095:3709
-2095:3711
-2095:3713
-2095:3714
-2095:3715
-2095:3716
-2095:3718
-2095:3719
-2095:3720
-2104:3728
-2104:3734
-2104:3735
-2104:3736
-2104:3737
-2104:3755
-2104:3756
-2104:3757
-2104:3758
-2104:3759
-2104:3760
-2105:3729
-2106:3730
-2107:3731
-2108:3732
-2109:3733
-2109:3740
-2109:3741
-2109:3742
-2109:3743
-2109:3745
-2109:3747
-2109:3748
-2109:3749
-2109:3750
-2109:3752
-2109:3753
-2109:3754
-2112:3762
-2112:3763
-2112:3764
-2112:3765
-2112:3769
-2112:3770
-2112:3771
-2112:3772
-2112:3773
-2112:3774
-2114:3767
-2114:3768
-2117:3776
-2117:3777
-2117:3778
-2117:3779
-2117:3783
-2117:3784
-2117:3785
-2117:3786
-2117:3787
-2117:3788
-2119:3781
-2119:3782
-2128:3790
-2128:3796
-2128:3797
-2128:3798
-2128:3799
-2128:3871
-2128:3872
-2128:3873
-2128:3874
-2128:3875
-2128:3876
-2129:3791
-2130:3792
-2130:3802
-2130:3803
-2130:3804
-2130:3805
-2130:3806
-2130:3807
-2130:3808
-2130:3811
-2130:3812
-2130:3813
-2130:3816
-2130:3817
-2130:3818
-2130:3819
-2130:3820
-2130:3824
-2130:3825
-2130:3826
-2130:3827
-2130:3828
-2130:3829
-2130:3830
-2130:3831
-2130:3832
-2130:3835
-2130:3836
-2130:3837
-2130:3838
-2130:3839
-2130:3840
-2130:3841
-2130:3842
-2130:3843
-2130:3844
-2130:3845
-2130:3846
-2130:3847
-2130:3848
-2130:3849
-2130:3850
-2130:3851
-2130:3852
-2130:3855
-2130:3856
-2130:3857
-2130:3860
-2130:3861
-2130:3862
-2130:3863
-2130:3864
-2130:3865
-2130:3866
-2130:3867
-2130:3868
-2130:3869
-2130:3870
-2131:3793
-2132:3794
-2133:3795
-2133:3878
-2133:3879
-2133:3880
-2133:3881
-2133:3923
-2133:3924
-2133:3925
-2133:3926
-2133:3927
-2133:3928
-2139:3883
-2139:3884
-2139:3885
-2139:3886
-2139:3887
-2139:3888
-2139:3889
-2139:3891
-2139:3893
-2139:3894
-2139:3895
-2139:3896
-2139:3897
-2139:3898
-2139:3899
-2139:3900
-2139:3902
-2139:3904
-2139:3907
-2139:3908
-2139:3909
-2139:3910
-2139:3911
-2139:3912
-2139:3913
-2139:3914
-2139:3915
-2139:3916
-2139:3917
-2139:3918
-2139:3919
-2139:3920
-2139:3921
-2139:3922
-2142:3930
-2142:3931
-2142:3932
-2142:3933
-2142:3984
-2142:3985
-2142:3986
-2142:3987
-2142:3988
-2142:3989
-2148:3935
-2148:3936
-2148:3937
-2148:3938
-2148:3940
-2148:3941
-2148:3942
-2148:3943
-2148:3944
-2148:3945
-2148:3947
-2148:3949
-2148:3950
-2148:3951
-2148:3952
-2148:3953
-2148:3954
-2148:3955
-2148:3956
-2148:3958
-2148:3960
-2148:3963
-2148:3964
-2148:3965
-2148:3966
-2148:3967
-2148:3968
-2148:3969
-2148:3970
-2148:3971
-2148:3972
-2148:3973
-2148:3974
-2148:3975
-2148:3976
-2148:3977
-2148:3978
-2148:3979
-2148:3981
-2151:3991
-2151:3992
-2151:3993
-2151:3994
-2151:4065
-2151:4066
-2151:4067
-2151:4068
-2151:4069
-2151:4070
-2156:3996
-2156:3997
-2156:3998
-2157:3999
-2157:4000
-2157:4001
-2157:4002
-2157:4003
-2157:4004
-2157:4005
-2157:4006
-2157:4007
-2157:4009
-2157:4011
-2157:4014
-2157:4015
-2157:4016
-2157:4017
-2157:4018
-2157:4019
-2157:4020
-2157:4021
-2157:4022
-2157:4023
-2157:4024
-2157:4025
-2157:4026
-2157:4027
-2157:4028
-2157:4029
-2157:4030
-2157:4032
-2157:4033
-2157:4035
-2157:4038
-2157:4039
-2157:4040
-2157:4041
-2157:4042
-2157:4043
-2157:4044
-2157:4045
-2157:4047
-2157:4048
-2157:4050
-2157:4051
-2157:4053
-2157:4055
-2157:4056
-2157:4057
-2157:4058
-2157:4059
-2157:4060
-2157:4061
-2158:4062
-2158:4063
-2158:4064
-2161:4072
-2161:4073
-2161:4074
-2161:4075
-2161:4078
-2161:4079
-2161:4080
-2161:4081
-2161:4083
-2161:4084
-2161:4085
-2161:4086
-2161:4089
-2161:4090
-2161:4091
-2161:4094
-2161:4095
-2161:4096
-2161:4099
-2161:4100
-2161:4101
-2161:4104
-2161:4105
-2161:4106
-2161:4107
-2161:4108
-2161:4110
-2161:4111
-2161:4112
-2161:4113
-2161:4115
-2161:4116
-2161:4117
-2161:4118
-2161:4119
-2161:4120
-2161:4121
-2161:4122
-2161:4123
-2164:4125
-2164:4126
-2164:4127
-2164:4128
-2164:4142
-2164:4143
-2164:4144
-2164:4145
-2164:4146
-2164:4147
-2165:4130
-2165:4132
-2165:4133
-2165:4134
-2165:4136
-2166:4139
-2166:4140
-2168:4149
-2168:4150
-2168:4151
-2168:4152
-2168:4190
-2168:4191
-2168:4192
-2168:4193
-2168:4194
-2168:4195
-2173:4155
-2173:4181
-2173:4182
-2173:4183
-2173:4184
-2173:4185
-2174:4156
-2174:4157
-2174:4158
-2174:4159
-2174:4160
-2175:4161
-2175:4162
-2175:4163
-2175:4164
-2175:4165
-2175:4166
-2175:4167
-2175:4168
-2175:4169
-2175:4170
-2175:4171
-2175:4173
-2175:4174
-2177:4187
-2177:4188
-2177:4189
-2185:4197
-2185:4202
-2185:4203
-2185:4204
-2185:4205
-2185:4208
-2185:4229
-2185:4260
-2185:4273
-2185:4283
-2185:4289
-2185:4331
-2185:4400
-2185:4406
-2185:4412
-2185:4435
-2185:4445
-2185:4451
-2185:4457
-2185:4463
-2185:4469
-2185:4475
-2185:4499
-2185:4523
-2185:4529
-2185:4535
-2185:4541
-2185:4547
-2185:4553
-2185:4559
-2185:4567
-2185:4577
-2185:4586
-2185:4592
-2185:4598
-2185:4604
-2185:4610
-2185:4616
-2185:4628
-2185:4635
-2185:4641
-2185:4665
-2185:4688
-2185:4712
-2185:4718
-2185:4724
-2185:4730
-2185:4736
-2185:4742
-2185:4748
-2185:4754
-2185:4760
-2185:4766
-2185:4772
-2185:4778
-2185:4784
-2185:4790
-2185:4796
-2185:4802
-2185:4808
-2185:4814
-2185:4820
-2185:4826
-2185:4832
-2185:4833
-2185:4834
-2185:4835
-2185:4836
-2185:4837
-2185:4838
-2185:4839
-2185:4840
-2185:4841
-2185:4842
-2186:4198
-2187:4199
-2188:4200
-2189:4201
-2190:4274
-2190:4275
-2191:4276
-2192:4278
-2193:4279
-2194:4280
-2197:4413
-2197:4414
-2197:4415
-2197:4416
-2197:4417
-2197:4418
-2197:4419
-2197:4421
-2197:4423
-2197:4424
-2197:4425
-2197:4426
-2197:4427
-2197:4428
-2197:4429
-2197:4430
-2198:4431
-2198:4432
-2198:4433
-2200:4284
-2200:4285
-2200:4286
-2200:4287
-2202:4436
-2202:4437
-2203:4438
-2204:4440
-2205:4441
-2206:4442
-2209:4446
-2209:4447
-2209:4448
-2209:4449
-2211:4578
-2211:4579
-2212:4580
-2213:4582
-2214:4583
-2217:4452
-2217:4453
-2217:4454
-2217:4455
-2219:4209
-2219:4210
-2219:4211
-2220:4212
-2221:4214
-2222:4215
-2223:4216
-2226:4221
-2226:4222
-2226:4223
-2226:4224
-2226:4225
-2229:4458
-2229:4459
-2229:4460
-2229:4461
-2232:4464
-2232:4465
-2232:4466
-2232:4467
-2235:4587
-2235:4588
-2236:4589
-2236:4590
-2239:4593
-2239:4594
-2240:4595
-2240:4596
-2243:4599
-2243:4600
-2243:4601
-2243:4602
-2246:4605
-2246:4606
-2246:4607
-2246:4608
-2249:4611
-2249:4612
-2250:4613
-2250:4614
-2253:4617
-2253:4618
-2254:4619
-2255:4621
-2256:4622
-2257:4623
-2258:4624
-2259:4625
-2262:4230
-2262:4231
-2262:4232
-2262:4233
-2262:4234
-2262:4235
-2262:4237
-2262:4238
-2262:4239
-2262:4241
-2262:4242
-2262:4243
-2262:4244
-2262:4245
-2262:4246
-2262:4247
-2262:4248
-2262:4249
-2263:4250
-2264:4252
-2265:4253
-2266:4254
-2267:4255
-2268:4256
-2269:4257
-2272:4261
-2272:4262
-2273:4263
-2274:4265
-2275:4266
-2276:4267
-2277:4268
-2278:4269
-2279:4270
-2282:4206
-2282:4629
-2282:4630
-2282:4631
-2282:4632
-2282:4633
-2285:4470
-2285:4471
-2285:4472
-2285:4473
-2287:4476
-2287:4477
-2287:4478
-2287:4479
-2287:4480
-2287:4481
-2287:4482
-2287:4484
-2287:4485
-2287:4487
-2287:4488
-2287:4489
-2287:4490
-2287:4491
-2287:4492
-2287:4493
-2287:4494
-2288:4495
-2288:4496
-2288:4497
-2290:4636
-2290:4637
-2290:4638
-2290:4639
-2292:4500
-2292:4501
-2292:4502
-2292:4503
-2292:4504
-2292:4505
-2292:4506
-2292:4508
-2292:4509
-2292:4511
-2292:4512
-2292:4513
-2292:4514
-2292:4515
-2292:4516
-2292:4517
-2292:4518
-2294:4519
-2294:4520
-2294:4521
-2296:4290
-2296:4291
-2296:4292
-2296:4293
-2296:4294
-2296:4295
-2296:4296
-2296:4298
-2296:4299
-2296:4301
-2296:4302
-2296:4303
-2296:4304
-2296:4307
-2296:4308
-2296:4309
-2296:4312
-2296:4313
-2296:4314
-2296:4315
-2296:4316
-2296:4319
-2296:4320
-2296:4321
-2296:4322
-2296:4323
-2296:4324
-2296:4325
-2296:4326
-2297:4327
-2297:4328
-2297:4329
-2299:4642
-2299:4643
-2299:4644
-2299:4645
-2299:4646
-2299:4647
-2299:4648
-2299:4650
-2299:4651
-2299:4653
-2299:4654
-2299:4655
-2299:4656
-2299:4657
-2299:4658
-2299:4659
-2299:4660
-2300:4661
-2300:4662
-2300:4663
-2302:4666
-2302:4667
-2302:4668
-2302:4669
-2302:4670
-2302:4671
-2302:4672
-2302:4674
-2302:4676
-2302:4677
-2302:4678
-2302:4679
-2302:4680
-2302:4681
-2302:4682
-2302:4683
-2303:4684
-2303:4685
-2303:4686
-2305:4332
-2305:4333
-2305:4334
-2305:4335
-2305:4336
-2305:4337
-2305:4338
-2305:4340
-2305:4342
-2305:4343
-2305:4344
-2305:4345
-2305:4347
-2305:4348
-2305:4349
-2305:4351
-2305:4352
-2305:4353
-2305:4354
-2305:4363
-2305:4364
-2305:4365
-2305:4366
-2305:4367
-2305:4370
-2305:4371
-2305:4372
-2305:4373
-2305:4376
-2305:4377
-2305:4378
-2305:4381
-2305:4382
-2305:4383
-2305:4384
-2305:4385
-2305:4388
-2305:4389
-2305:4390
-2305:4391
-2305:4392
-2305:4393
-2305:4394
-2305:4395
-2306:4396
-2307:4397
-2307:4398
-2309:4689
-2309:4690
-2309:4691
-2309:4692
-2309:4693
-2309:4694
-2309:4695
-2309:4697
-2309:4698
-2309:4700
-2309:4701
-2309:4702
-2309:4703
-2309:4704
-2309:4705
-2309:4706
-2309:4707
-2310:4708
-2311:4709
-2311:4710
-2313:4713
-2313:4714
-2313:4715
-2313:4716
-2315:4719
-2315:4720
-2315:4721
-2315:4722
-2318:4524
-2318:4525
-2318:4526
-2318:4527
-2320:4725
-2320:4726
-2320:4727
-2320:4728
-2322:4731
-2322:4732
-2322:4733
-2322:4734
-2324:4737
-2324:4738
-2324:4739
-2324:4740
-2326:4743
-2326:4744
-2326:4745
-2326:4746
-2328:4749
-2328:4750
-2328:4751
-2328:4752
-2330:4755
-2330:4756
-2330:4757
-2330:4758
-2332:4761
-2332:4762
-2332:4763
-2332:4764
-2334:4767
-2334:4768
-2334:4769
-2334:4770
-2336:4773
-2336:4774
-2336:4775
-2336:4776
-2338:4779
-2338:4780
-2338:4781
-2338:4782
-2340:4785
-2340:4786
-2340:4787
-2340:4788
-2342:4791
-2342:4792
-2342:4793
-2342:4794
-2344:4797
-2344:4798
-2344:4799
-2344:4800
-2346:4803
-2346:4804
-2346:4805
-2346:4806
-2348:4809
-2348:4810
-2348:4811
-2348:4812
-2351:4530
-2351:4531
-2351:4532
-2351:4533
-2354:4536
-2354:4537
-2354:4538
-2354:4539
-2356:4815
-2356:4816
-2356:4817
-2356:4818
-2359:4542
-2359:4543
-2359:4544
-2359:4545
-2361:4401
-2361:4402
-2361:4403
-2361:4404
-2363:4548
-2363:4549
-2363:4550
-2363:4551
-2365:4821
-2365:4822
-2365:4823
-2365:4824
-2367:4554
-2367:4555
-2367:4556
-2367:4557
-2369:4407
-2369:4408
-2369:4409
-2369:4410
-2371:4560
-2371:4561
-2372:4562
-2373:4564
-2377:4568
-2377:4569
-2378:4570
-2379:4572
-2380:4573
-2381:4574
-2384:4827
-2384:4828
-2384:4829
-2384:4830
-2387:4844
-2387:4845
-2387:4846
-2387:4847
-2387:4892
-2387:4893
-2387:4894
-2387:4895
-2387:4896
-2387:4897
-2389:4850
-2389:4851
-2389:4852
-2389:4853
-2389:4856
-2389:4857
-2389:4858
-2389:4859
-2389:4860
-2389:4864
-2389:4865
-2389:4866
-2389:4869
-2389:4870
-2389:4871
-2389:4872
-2389:4873
-2389:4874
-2389:4875
-2389:4876
-2389:4877
-2389:4880
-2389:4881
-2389:4882
-2389:4883
-2389:4884
-2389:4885
-2389:4886
-2389:4887
-2389:4888
-2389:4889
-2389:4890
-2392:807
-2392:808
-2392:809
-2392:810
-2392:2286
-2392:2287
-2392:2288
-2392:2289
-2392:2290
-2392:2291
-2394:813
-2394:2274
-2394:2277
-2394:2280
-2394:2281
-2394:2282
-2394:2283
-2394:2284
-2395:814
-2395:815
-2395:816
-2395:817
-2395:818
-2395:819
-2395:820
-2395:821
-2395:822
-2397:825
-2397:826
-2397:827
-2397:828
-2397:829
-2397:830
-2397:831
-2397:832
-2397:833
-2399:836
-2399:837
-2399:838
-2399:839
-2399:840
-2399:841
-2399:842
-2399:843
-2401:846
-2401:847
-2401:848
-2401:849
-2401:850
-2401:851
-2401:852
-2401:853
-2401:854
-2401:855
-2403:858
-2403:859
-2403:860
-2403:861
-2405:864
-2405:865
-2405:866
-2405:867
-2405:868
-2405:869
-2405:870
-2405:871
-2405:872
-2405:873
-2405:874
-2405:875
-2405:876
-2405:877
-2405:878
-2407:881
-2407:882
-2407:883
-2407:884
-2407:885
-2409:888
-2409:889
-2409:890
-2409:891
-2411:894
-2411:895
-2411:896
-2411:897
-2411:898
-2411:899
-2411:900
-2411:901
-2411:902
-2411:903
-2411:904
-2411:905
-2411:906
-2411:907
-2411:908
-2411:909
-2413:912
-2413:913
-2413:914
-2413:915
-2413:916
-2413:917
-2413:918
-2413:919
-2413:920
-2413:921
-2413:922
-2413:923
-2413:924
-2413:925
-2413:926
-2413:927
-2413:928
-2413:929
-2413:930
-2415:933
-2415:934
-2415:935
-2415:936
-2415:937
-2415:938
-2415:939
-2415:940
-2415:941
-2415:942
-2415:943
-2417:946
-2417:947
-2417:948
-2419:951
-2419:952
-2419:953
-2419:954
-2419:955
-2419:956
-2419:957
-2419:958
-2419:959
-2419:960
-2421:963
-2421:964
-2421:965
-2421:966
-2421:967
-2421:968
-2421:969
-2421:970
-2421:971
-2421:972
-2421:973
-2421:974
-2421:975
-2421:976
-2421:977
-2421:978
-2421:979
-2421:980
-2421:981
-2421:982
-2421:983
-2421:984
-2421:985
-2421:986
-2421:987
-2423:990
-2423:991
-2423:992
-2423:993
-2425:996
-2425:997
-2425:998
-2427:1001
-2427:1002
-2427:1003
-2429:1006
-2429:1007
-2429:1008
-2431:1011
-2431:1012
-2431:1013
-2431:1014
-2431:1015
-2431:1016
-2431:1017
-2433:1020
-2433:1021
-2433:1022
-2433:1023
-2433:1024
-2433:1025
-2433:1026
-2433:1027
-2433:1028
-2433:1029
-2433:1030
-2433:1031
-2433:1032
-2435:1035
-2435:1036
-2435:1037
-2435:1038
-2437:1041
-2437:1042
-2437:1043
-2439:1046
-2439:1047
-2439:1048
-2441:1051
-2441:1052
-2441:1053
-2443:1056
-2443:1057
-2443:1058
-2445:1061
-2445:1062
-2445:1063
-2445:1064
-2445:1065
-2445:1066
-2445:1067
-2447:1070
-2447:1071
-2447:1072
-2447:1073
-2447:1074
-2449:1077
-2449:1078
-2449:1079
-2449:1080
-2449:1081
-2449:1082
-2449:1083
-2449:1084
-2449:1085
-2449:1086
-2449:1087
-2449:1088
-2449:1089
-2449:1090
-2449:1091
-2449:1092
-2449:1093
-2449:1094
-2449:1095
-2451:1098
-2451:1099
-2451:1100
-2451:1101
-2451:1102
-2453:1105
-2453:1106
-2453:1107
-2453:1108
-2453:1109
-2453:1110
-2453:1111
-2453:1112
-2453:1113
-2453:1114
-2453:1115
-2455:1118
-2455:1119
-2455:1120
-2455:1121
-2455:1122
-2455:1123
-2455:1124
-2455:1125
-2455:1126
-2455:1127
-2455:1128
-2455:1129
-2455:1130
-2455:1131
-2455:1132
-2455:1133
-2457:1136
-2457:1137
-2457:1138
-2459:1141
-2459:1142
-2459:1143
-2461:1146
-2461:1147
-2461:1148
-2461:1149
-2461:1150
-2461:1151
-2461:1152
-2461:1153
-2461:1154
-2463:1157
-2463:1158
-2463:1159
-2463:1160
-2465:1163
-2465:1164
-2465:1165
-2467:1168
-2467:1169
-2467:1170
-2467:1171
-2467:1172
-2467:1173
-2467:1174
-2467:1175
-2467:1176
-2467:1177
-2467:1178
-2467:1179
-2469:1182
-2469:1183
-2469:1184
-2471:1187
-2471:1188
-2471:1189
-2471:1190
-2471:1191
-2471:1192
-2471:1193
-2471:1194
-2471:1195
-2471:1196
-2471:1197
-2471:1198
-2473:1201
-2473:1202
-2473:1203
-2473:1204
-2473:1205
-2473:1206
-2473:1207
-2473:1208
-2473:1209
-2475:1212
-2475:1213
-2475:1214
-2477:1217
-2477:1218
-2477:1219
-2477:1220
-2477:1221
-2477:1222
-2477:1223
-2477:1224
-2477:1225
-2479:1228
-2479:1229
-2479:1230
-2479:1231
-2479:1232
-2481:1235
-2481:1236
-2481:1237
-2481:1238
-2481:1239
-2481:1240
-2481:1241
-2481:1242
-2481:1243
-2481:1244
-2481:1245
-2481:1246
-2481:1247
-2481:1248
-2481:1249
-2481:1250
-2481:1251
-2481:1252
-2481:1253
-2481:1254
-2483:1257
-2483:1258
-2483:1259
-2483:1260
-2485:1263
-2485:1264
-2485:1265
-2485:1266
-2485:1267
-2485:1268
-2487:1271
-2487:1272
-2487:1273
-2489:1276
-2489:1277
-2489:1278
-2491:1281
-2491:1282
-2491:1283
-2493:1286
-2493:1287
-2493:1288
-2493:1289
-2493:1290
-2493:1291
-2493:1292
-2493:1293
-2493:1294
-2493:1295
-2493:1296
-2493:1297
-2493:1298
-2493:1299
-2493:1300
-2493:1301
-2495:1304
-2495:1305
-2495:1306
-2497:1309
-2497:1310
-2497:1311
-2497:1312
-2497:1313
-2499:1316
-2499:1317
-2499:1318
-2499:1319
-2501:1322
-2501:1323
-2501:1324
-2503:1327
-2503:1328
-2503:1329
-2503:1330
-2503:1331
-2503:1332
-2503:1333
-2503:1334
-2505:1337
-2505:1338
-2505:1339
-2505:1340
-2507:1343
-2507:1344
-2507:1345
-2509:1348
-2509:1349
-2509:1350
-2511:1353
-2511:1354
-2511:1355
-2513:1358
-2513:1359
-2513:1360
-2515:1363
-2515:1364
-2515:1365
-2517:1368
-2517:1369
-2517:1370
-2517:1371
-2519:1374
-2519:1375
-2519:1376
-2521:1379
-2521:1380
-2521:1381
-2521:1382
-2521:1383
-2521:1384
-2521:1385
-2521:1386
-2523:1389
-2523:1390
-2523:1391
-2523:1392
-2525:1395
-2525:1396
-2525:1397
-2527:1400
-2527:1401
-2527:1402
-2529:1405
-2529:1406
-2529:1407
-2531:1410
-2531:1411
-2531:1412
-2533:1415
-2533:1416
-2533:1417
-2535:1420
-2535:1421
-2535:1422
-2537:1425
-2537:1426
-2537:1427
-2537:1428
-2539:1431
-2539:1432
-2539:1433
-2541:1436
-2541:1437
-2541:1438
-2543:1441
-2543:1442
-2543:1443
-2543:1444
-2543:1445
-2543:1446
-2543:1447
-2543:1448
-2545:1451
-2545:1452
-2545:1453
-2545:1454
-2547:1457
-2547:1458
-2547:1459
-2549:1462
-2549:1463
-2549:1464
-2549:1465
-2551:1468
-2551:1469
-2551:1470
-2553:1473
-2553:1474
-2553:1475
-2555:1478
-2555:1479
-2555:1480
-2555:1481
-2557:1484
-2557:1485
-2557:1486
-2559:1489
-2559:1490
-2559:1491
-2559:1492
-2559:1493
-2559:1494
-2559:1495
-2559:1496
-2561:1499
-2561:1500
-2561:1501
-2561:1502
-2563:1505
-2563:1506
-2563:1507
-2565:1510
-2565:1511
-2565:1512
-2567:1515
-2567:1516
-2567:1517
-2569:1520
-2569:1521
-2569:1522
-2571:1525
-2571:1526
-2571:1527
-2573:1530
-2573:1531
-2573:1532
-2573:1533
-2575:1536
-2575:1537
-2575:1538
-2577:1541
-2577:1542
-2577:1543
-2579:1546
-2579:1547
-2579:1548
-2581:1551
-2581:1552
-2581:1553
-2583:1556
-2583:1557
-2583:1558
-2585:1561
-2585:1562
-2585:1563
-2587:1566
-2587:1567
-2587:1568
-2589:1571
-2589:1572
-2589:1573
-2589:1574
-2591:1577
-2591:1578
-2591:1579
-2593:1582
-2593:1583
-2593:1584
-2593:1585
-2595:1588
-2595:1589
-2595:1590
-2597:1593
-2597:1594
-2597:1595
-2597:1596
-2597:1597
-2597:1598
-2597:1599
-2597:1600
-2599:1603
-2599:1604
-2599:1605
-2599:1606
-2599:1607
-2601:1610
-2601:1611
-2601:1612
-2601:1613
-2603:1616
-2603:1617
-2603:1618
-2605:1621
-2605:1622
-2605:1623
-2605:1624
-2607:1627
-2607:1628
-2607:1629
-2609:1632
-2609:1633
-2609:1634
-2609:1635
-2609:1636
-2609:1637
-2609:1638
-2609:1639
-2611:1642
-2611:1643
-2611:1644
-2611:1645
-2611:1646
-2613:1649
-2613:1650
-2613:1651
-2613:1652
-2615:1655
-2615:1656
-2615:1657
-2617:1660
-2617:1661
-2617:1662
-2619:1665
-2619:1666
-2619:1667
-2619:1668
-2621:1671
-2621:1672
-2621:1673
-2623:1676
-2623:1677
-2623:1678
-2623:1679
-2623:1680
-2623:1681
-2623:1682
-2623:1683
-2625:1686
-2625:1687
-2625:1688
-2625:1689
-2625:1690
-2625:1691
-2627:1694
-2627:1695
-2627:1696
-2629:1699
-2629:1700
-2629:1701
-2629:1702
-2629:1703
-2629:1704
-2629:1705
-2629:1706
-2629:1707
-2629:1708
-2629:1709
-2629:1710
-2629:1711
-2629:1712
-2631:1715
-2631:1716
-2631:1717
-2633:1720
-2633:1721
-2633:1722
-2635:1725
-2635:1726
-2635:1727
-2635:1728
-2637:1731
-2637:1732
-2637:1733
-2639:1736
-2639:1737
-2639:1738
-2641:1741
-2641:1742
-2641:1743
-2643:1746
-2643:1747
-2643:1748
-2645:1751
-2645:1752
-2645:1753
-2647:1756
-2647:1757
-2647:1758
-2649:1761
-2649:1762
-2649:1763
-2649:1764
-2651:1767
-2651:1768
-2651:1769
-2653:1772
-2653:1773
-2653:1774
-2655:1777
-2655:1778
-2655:1779
-2657:1782
-2657:1783
-2657:1784
-2659:1787
-2659:1788
-2659:1789
-2661:1792
-2661:1793
-2661:1794
-2663:1797
-2663:1798
-2663:1799
-2665:1802
-2665:1803
-2665:1804
-2667:1807
-2667:1808
-2667:1809
-2667:1810
-2669:1813
-2669:1814
-2669:1815
-2669:1816
-2671:1819
-2671:1820
-2671:1821
-2671:1822
-2671:1823
-2671:1824
-2671:1825
-2671:1826
-2671:1827
-2671:1828
-2671:1829
-2673:1832
-2673:1833
-2673:1834
-2673:1835
-2673:1836
-2673:1837
-2673:1838
-2673:1839
-2673:1840
-2673:1841
-2673:1842
-2673:1843
-2675:1846
-2675:1847
-2675:1848
-2675:1849
-2675:1850
-2675:1851
-2675:1852
-2675:1853
-2675:1854
-2675:1855
-2675:1856
-2675:1857
-2677:1860
-2677:1861
-2677:1862
-2679:1865
-2679:1866
-2679:1867
-2681:1870
-2681:1871
-2681:1872
-2683:1875
-2683:1876
-2683:1877
-2685:1880
-2685:1881
-2685:1882
-2687:1885
-2687:1886
-2687:1887
-2687:1888
-2689:1891
-2689:1892
-2689:1893
-2691:1896
-2691:1897
-2691:1898
-2693:1901
-2693:1902
-2693:1903
-2695:1906
-2695:1907
-2695:1908
-2697:1911
-2697:1912
-2697:1913
-2699:1916
-2699:1917
-2699:1918
-2701:1921
-2701:1922
-2701:1923
-2703:1926
-2703:1927
-2703:1928
-2705:1931
-2705:1932
-2705:1933
-2707:1936
-2707:1937
-2707:1938
-2709:1941
-2709:1942
-2709:1943
-2711:1946
-2711:1947
-2711:1948
-2713:1951
-2713:1952
-2713:1953
-2715:1956
-2715:1957
-2715:1958
-2717:1961
-2717:1962
-2717:1963
-2719:1966
-2719:1967
-2719:1968
-2721:1971
-2721:1972
-2721:1973
-2723:1976
-2723:1977
-2723:1978
-2725:1981
-2725:1982
-2725:1983
-2727:1986
-2727:1987
-2727:1988
-2729:1991
-2729:1992
-2729:1993
-2731:1996
-2731:1997
-2731:1998
-2733:2001
-2733:2002
-2733:2003
-2733:2004
-2735:2007
-2735:2008
-2735:2009
-2737:2012
-2737:2013
-2737:2014
-2739:2017
-2739:2018
-2739:2019
-2741:2275
-2741:2276
-2743:2022
-2743:2023
-2743:2024
-2743:2025
-2743:2026
-2743:2027
-2743:2028
-2743:2029
-2743:2030
-2743:2031
-2743:2032
-2743:2033
-2743:2034
-2743:2035
-2743:2036
-2743:2037
-2743:2038
-2743:2039
-2743:2040
-2743:2041
-2743:2042
-2743:2043
-2743:2044
-2743:2045
-2743:2046
-2745:2049
-2745:2050
-2745:2051
-2745:2052
-2745:2053
-2745:2054
-2745:2055
-2745:2056
-2747:2059
-2747:2060
-2747:2061
-2747:2062
-2749:2065
-2749:2066
-2749:2067
-2749:2068
-2749:2069
-2749:2070
-2749:2071
-2749:2072
-2749:2073
-2749:2074
-2749:2075
-2749:2076
-2751:2079
-2751:2080
-2751:2081
-2751:2082
-2753:2085
-2753:2086
-2753:2087
-2753:2088
-2755:2091
-2755:2092
-2755:2093
-2757:2096
-2757:2097
-2757:2098
-2759:2101
-2759:2102
-2759:2103
-2761:2106
-2761:2107
-2761:2108
-2761:2109
-2761:2110
-2761:2111
-2761:2112
-2761:2113
-2761:2114
-2761:2115
-2763:2118
-2763:2119
-2763:2120
-2763:2121
-2763:2122
-2763:2123
-2763:2124
-2763:2125
-2763:2126
-2763:2127
-2763:2128
-2763:2129
-2763:2130
-2763:2131
-2763:2132
-2763:2133
-2765:2136
-2765:2137
-2765:2138
-2765:2139
-2767:2142
-2767:2143
-2767:2144
-2769:2147
-2769:2148
-2769:2149
-2771:2152
-2771:2153
-2771:2154
-2771:2155
-2773:2158
-2773:2159
-2773:2160
-2775:2163
-2775:2164
-2775:2165
-2775:2166
-2777:2169
-2777:2170
-2777:2171
-2777:2172
-2777:2173
-2777:2174
-2779:2177
-2779:2178
-2779:2179
-2781:2182
-2781:2183
-2781:2184
-2781:2185
-2783:2188
-2783:2189
-2783:2190
-2785:2193
-2785:2194
-2785:2195
-2787:2198
-2787:2199
-2787:2200
-2789:2203
-2789:2204
-2789:2205
-2791:2208
-2791:2209
-2791:2210
-2791:2211
-2791:2212
-2791:2213
-2791:2214
-2791:2215
-2791:2216
-2791:2217
-2791:2218
-2791:2219
-2791:2220
-2791:2221
-2791:2222
-2791:2223
-2791:2224
-2791:2225
-2791:2226
-2791:2227
-2791:2228
-2791:2229
-2791:2230
-2793:2233
-2793:2234
-2793:2235
-2793:2236
-2793:2237
-2793:2238
-2793:2239
-2793:2240
-2793:2241
-2793:2242
-2793:2243
-2793:2244
-2793:2245
-2793:2246
-2793:2247
-2793:2248
-2793:2249
-2793:2250
-2793:2251
-2793:2252
-2793:2253
-2793:2254
-2793:2255
-2793:2256
-2793:2257
-2795:2260
-2795:2261
-2795:2262
-2795:2263
-2795:2264
-2795:2265
-2795:2266
-2795:2267
-2795:2268
-2795:2269
-2795:2270
-2795:2271
-2797:2278
-2797:2279
-2801:2293
-2801:2294
-2801:2295
-2801:2296
-2801:2321
-2801:2322
-2801:2323
-2801:2324
-2801:2325
-2801:2326
-2803:2299
-2803:2300
-2803:2301
-2803:2302
-2803:2305
-2803:2306
-2803:2307
-2803:2308
-2803:2309
-2803:2312
-2803:2313
-2803:2314
-2803:2315
-2803:2316
-2803:2317
-2803:2318
-2803:2319
-2806:2600
-2806:2601
-2806:2602
-2806:2603
-2806:3147
-2806:3148
-2806:3149
-2806:3150
-2806:3151
-2806:3152
-2808:2606
-2808:3141
-2808:3142
-2808:3143
-2808:3144
-2808:3145
-2809:2607
-2809:2608
-2809:2609
-2809:2610
-2809:2611
-2809:2612
-2809:2613
-2809:2614
-2809:2615
-2809:2616
-2809:2617
-2809:2618
-2809:2619
-2809:2620
-2809:2621
-2809:2622
-2809:2623
-2809:2624
-2809:2625
-2809:2626
-2811:2629
-2811:2630
-2811:2631
-2813:2634
-2813:2635
-2813:2636
-2815:2639
-2815:2640
-2815:2641
-2815:2642
-2815:2643
-2815:2644
-2815:2645
-2817:2648
-2817:2649
-2817:2650
-2817:2651
-2817:2652
-2817:2653
-2817:2654
-2817:2655
-2819:2658
-2819:2659
-2819:2660
-2821:2663
-2821:2664
-2821:2665
-2823:2668
-2823:2669
-2823:2670
-2825:2673
-2825:2674
-2825:2675
-2827:2678
-2827:2679
-2827:2680
-2827:2681
-2829:2684
-2829:2685
-2829:2686
-2831:2689
-2831:2690
-2831:2691
-2831:2692
-2833:2695
-2833:2696
-2833:2697
-2835:2700
-2835:2701
-2835:2702
-2835:2703
-2837:2706
-2837:2707
-2837:2708
-2839:2711
-2839:2712
-2839:2713
-2841:2716
-2841:2717
-2841:2718
-2843:2721
-2843:2722
-2843:2723
-2845:2726
-2845:2727
-2845:2728
-2845:2729
-2845:2730
-2845:2731
-2847:2734
-2847:2735
-2847:2736
-2849:2739
-2849:2740
-2849:2741
-2851:2744
-2851:2745
-2851:2746
-2853:2749
-2853:2750
-2853:2751
-2855:2754
-2855:2755
-2855:2756
-2857:2759
-2857:2760
-2857:2761
-2859:2764
-2859:2765
-2859:2766
-2861:2769
-2861:2770
-2861:2771
-2861:2772
-2863:2775
-2863:2776
-2863:2777
-2865:2780
-2865:2781
-2865:2782
-2867:2785
-2867:2786
-2867:2787
-2869:2790
-2869:2791
-2869:2792
-2871:2795
-2871:2796
-2871:2797
-2873:2800
-2873:2801
-2873:2802
-2875:2805
-2875:2806
-2875:2807
-2877:2810
-2877:2811
-2877:2812
-2879:2815
-2879:2816
-2879:2817
-2881:2820
-2881:2821
-2881:2822
-2883:2825
-2883:2826
-2883:2827
-2885:2830
-2885:2831
-2885:2832
-2887:2835
-2887:2836
-2887:2837
-2889:2840
-2889:2841
-2889:2842
-2891:2845
-2891:2846
-2891:2847
-2891:2848
-2893:2851
-2893:2852
-2893:2853
-2895:2856
-2895:2857
-2895:2858
-2897:2861
-2897:2862
-2897:2863
-2899:2866
-2899:2867
-2899:2868
-2901:2871
-2901:2872
-2901:2873
-2901:2874
-2903:2877
-2903:2878
-2903:2879
-2905:2882
-2905:2883
-2905:2884
-2907:2887
-2907:2888
-2907:2889
-2909:2892
-2909:2893
-2909:2894
-2911:2897
-2911:2898
-2911:2899
-2911:2900
-2913:2903
-2913:2904
-2913:2905
-2915:2908
-2915:2909
-2915:2910
-2917:2913
-2917:2914
-2917:2915
-2919:2918
-2919:2919
-2919:2920
-2921:2923
-2921:2924
-2921:2925
-2921:2926
-2923:2929
-2923:2930
-2923:2931
-2925:2934
-2925:2935
-2925:2936
-2927:2939
-2927:2940
-2927:2941
-2929:2944
-2929:2945
-2929:2946
-2931:2949
-2931:2950
-2931:2951
-2931:2952
-2933:2955
-2933:2956
-2933:2957
-2935:2960
-2935:2961
-2935:2962
-2937:2965
-2937:2966
-2937:2967
-2939:2970
-2939:2971
-2939:2972
-2941:2975
-2941:2976
-2941:2977
-2941:2978
-2943:2981
-2943:2982
-2943:2983
-2945:2986
-2945:2987
-2945:2988
-2947:2991
-2947:2992
-2947:2993
-2949:2996
-2949:2997
-2949:2998
-2951:3001
-2951:3002
-2951:3003
-2951:3004
-2953:3007
-2953:3008
-2953:3009
-2953:3010
-2955:3013
-2955:3014
-2955:3015
-2957:3018
-2957:3019
-2957:3020
-2957:3021
-2959:3024
-2959:3025
-2959:3026
-2961:3029
-2961:3030
-2961:3031
-2961:3032
-2963:3035
-2963:3036
-2963:3037
-2965:3040
-2965:3041
-2965:3042
-2967:3045
-2967:3046
-2967:3047
-2969:3050
-2969:3051
-2969:3052
-2971:3055
-2971:3056
-2971:3057
-2973:3060
-2973:3061
-2973:3062
-2975:3065
-2975:3066
-2975:3067
-2975:3068
-2975:3069
-2975:3070
-2975:3071
-2977:3074
-2977:3075
-2977:3076
-2977:3077
-2979:3080
-2979:3081
-2979:3082
-2979:3083
-2981:3086
-2981:3087
-2981:3088
-2983:3091
-2983:3092
-2983:3093
-2983:3094
-2983:3095
-2983:3096
-2983:3097
-2983:3098
-2985:3101
-2985:3102
-2985:3103
-2985:3104
-2987:3107
-2987:3108
-2987:3109
-2989:3112
-2989:3113
-2989:3114
-2989:3115
-2989:3116
-2989:3117
-2991:3120
-2991:3121
-2991:3122
-2993:3125
-2993:3126
-2993:3127
-2993:3128
-2995:3131
-2995:3132
-2995:3133
-2997:3136
-2997:3137
-2997:3138
-3001:2354
-3001:2355
-3001:2356
-3001:2357
-3001:2472
-3001:2473
-3001:2474
-3001:2475
-3001:2476
-3001:2477
-3003:2360
-3003:2466
-3003:2467
-3003:2468
-3003:2469
-3003:2470
-3004:2361
-3004:2362
-3004:2363
-3004:2364
-3004:2365
-3006:2368
-3006:2369
-3006:2370
-3006:2371
-3006:2372
-3008:2375
-3008:2376
-3008:2377
-3008:2378
-3008:2379
-3010:2382
-3010:2383
-3010:2384
-3010:2385
-3010:2386
-3012:2389
-3012:2390
-3012:2391
-3012:2392
-3012:2393
-3014:2396
-3014:2397
-3014:2398
-3014:2399
-3014:2400
-3016:2403
-3016:2404
-3016:2405
-3016:2406
-3016:2407
-3018:2410
-3018:2411
-3018:2412
-3018:2413
-3018:2414
-3020:2417
-3020:2418
-3020:2419
-3020:2420
-3020:2421
-3022:2424
-3022:2425
-3022:2426
-3022:2427
-3022:2428
-3024:2431
-3024:2432
-3024:2433
-3024:2434
-3024:2435
-3026:2438
-3026:2439
-3026:2440
-3026:2441
-3026:2442
-3028:2445
-3028:2446
-3028:2447
-3028:2448
-3028:2449
-3030:2452
-3030:2453
-3030:2454
-3030:2455
-3030:2456
-3032:2459
-3032:2460
-3032:2461
-3032:2462
-3032:2463
-3036:3154
-3036:3155
-3036:3156
-3036:3157
-3036:3223
-3036:3224
-3036:3225
-3036:3226
-3036:3227
-3036:3228
-3038:3160
-3038:3217
-3038:3218
-3038:3219
-3038:3220
-3038:3221
-3039:3161
-3039:3162
-3039:3163
-3041:3166
-3041:3167
-3041:3168
-3043:3171
-3043:3172
-3043:3173
-3045:3176
-3045:3177
-3045:3178
-3047:3181
-3047:3182
-3047:3183
-3049:3186
-3049:3187
-3049:3188
-3051:3191
-3051:3192
-3051:3193
-3053:3196
-3053:3197
-3053:3198
-3055:3201
-3055:3202
-3055:3203
-3055:3204
-3057:3207
-3057:3208
-3057:3209
-3059:3212
-3059:3213
-3059:3214
+1918:55
+1919:56
+1920:57
+1921:58
+1922:59
+1923:60
+1924:61
+1925:62
+1926:63
+1928:65
+1929:66
+1930:67
+1931:68
+1933:70
+1934:71
+1935:72
+1936:73
+1937:74
+1939:76
+1940:77
+1941:78
+1942:79
+1943:80
+1944:81
+1945:82
+1946:83
+1949:248
+1949:249
+1949:250
+1949:251
+1949:253
+1949:254
+1949:255
+1949:256
+1949:257
+1949:258
+1949:259
+1950:261
+1950:262
+1950:263
+1950:264
+1950:266
+1950:267
+1950:268
+1950:269
+1950:270
+1950:271
+1950:272
+1950:273
+1951:275
+1951:276
+1951:277
+1951:278
+1951:280
+1951:281
+1951:282
+1951:283
+1951:284
+1951:285
+1951:286
+1952:288
+1952:289
+1952:290
+1952:291
+1952:293
+1952:294
+1952:295
+1952:296
+1952:297
+1952:298
+1952:299
+1953:301
+1953:302
+1953:303
+1953:304
+1953:306
+1953:307
+1953:308
+1953:309
+1953:310
+1953:311
+1953:312
+1954:314
+1954:315
+1954:316
+1954:317
+1954:319
+1954:320
+1954:321
+1954:322
+1954:323
+1954:324
+1954:325
+1955:327
+1955:328
+1955:329
+1955:330
+1955:332
+1955:333
+1955:334
+1955:335
+1955:336
+1955:337
+1955:338
+1956:340
+1956:341
+1956:342
+1956:343
+1956:345
+1956:346
+1956:347
+1956:348
+1956:349
+1956:350
+1956:351
+1957:353
+1957:354
+1957:355
+1957:356
+1957:358
+1957:359
+1957:360
+1957:361
+1957:362
+1957:363
+1957:364
+1958:366
+1958:367
+1958:368
+1958:369
+1958:371
+1958:372
+1958:373
+1958:374
+1958:375
+1958:376
+1958:377
+1959:379
+1959:380
+1959:381
+1959:382
+1959:384
+1959:385
+1959:386
+1959:387
+1959:388
+1959:389
+1959:390
+1960:392
+1960:393
+1960:394
+1960:395
+1960:397
+1960:398
+1960:399
+1960:400
+1960:401
+1960:402
+1960:403
+1961:405
+1961:406
+1961:407
+1961:408
+1961:410
+1961:411
+1961:412
+1961:413
+1961:414
+1961:415
+1961:416
+1962:418
+1962:419
+1962:420
+1962:421
+1962:423
+1962:424
+1962:425
+1962:426
+1962:427
+1962:428
+1962:429
+1963:431
+1963:432
+1963:433
+1963:434
+1963:436
+1963:437
+1963:438
+1963:439
+1963:440
+1963:441
+1963:442
+1964:444
+1964:445
+1964:446
+1964:447
+1964:449
+1964:450
+1964:451
+1964:452
+1964:453
+1964:454
+1964:455
+1965:457
+1965:458
+1965:459
+1965:460
+1965:462
+1965:463
+1965:464
+1965:465
+1965:466
+1965:467
+1965:468
+1966:470
+1966:471
+1966:472
+1966:473
+1966:475
+1966:476
+1966:477
+1966:478
+1966:479
+1966:480
+1966:481
+1967:483
+1967:484
+1967:485
+1967:486
+1967:488
+1967:489
+1967:490
+1967:491
+1967:492
+1967:493
+1967:494
+1968:496
+1968:497
+1968:498
+1968:499
+1968:501
+1968:502
+1968:503
+1968:504
+1968:505
+1968:506
+1968:507
+1968:508
+1969:510
+1969:511
+1969:512
+1969:513
+1969:515
+1969:516
+1969:517
+1969:518
+1969:519
+1969:520
+1969:521
+1970:523
+1970:524
+1970:525
+1970:526
+1970:528
+1970:529
+1970:530
+1970:531
+1970:532
+1970:533
+1970:534
+1971:536
+1971:537
+1971:538
+1971:539
+1971:541
+1971:542
+1971:543
+1971:544
+1971:545
+1971:546
+1971:547
+1972:549
+1972:550
+1972:551
+1972:552
+1972:554
+1972:555
+1972:556
+1972:557
+1972:558
+1972:559
+1972:560
+1973:562
+1973:563
+1973:564
+1973:565
+1973:567
+1973:568
+1973:569
+1973:570
+1973:571
+1973:572
+1973:573
+1974:575
+1974:576
+1974:577
+1974:578
+1974:580
+1974:581
+1974:582
+1974:583
+1974:584
+1974:585
+1974:586
+1975:588
+1975:589
+1975:590
+1975:591
+1975:593
+1975:594
+1975:595
+1975:596
+1975:597
+1975:598
+1975:599
+1976:601
+1976:602
+1976:603
+1976:604
+1976:606
+1976:607
+1976:608
+1976:609
+1976:610
+1976:611
+1976:612
+1977:614
+1977:615
+1977:616
+1977:617
+1977:619
+1977:620
+1977:621
+1977:622
+1977:623
+1977:624
+1977:625
+1978:627
+1978:628
+1978:629
+1978:630
+1978:632
+1978:633
+1978:634
+1978:635
+1978:636
+1978:637
+1978:638
+1980:640
+1980:641
+1980:642
+1980:643
+1980:645
+1980:646
+1980:647
+1980:648
+1980:649
+1980:650
+1980:651
+1981:653
+1981:654
+1981:655
+1981:656
+1981:658
+1981:659
+1981:660
+1981:661
+1981:662
+1981:663
+1981:664
+1983:666
+1983:667
+1983:668
+1983:669
+1983:671
+1983:672
+1983:673
+1983:674
+1983:675
+1983:676
+1983:677
+1985:679
+1985:680
+1985:681
+1985:682
+1985:685
+1985:686
+1985:687
+1985:688
+1985:689
+1985:690
+1986:684
+1988:692
+1988:693
+1988:694
+1988:695
+1988:697
+1988:698
+1988:699
+1988:700
+1988:701
+1988:702
+1988:703
+1989:705
+1989:706
+1989:707
+1989:708
+1989:710
+1989:711
+1989:712
+1989:713
+1989:714
+1989:715
+1989:716
+1991:718
+1991:719
+1991:720
+1991:721
+1991:723
+1991:724
+1991:725
+1991:726
+1991:727
+1991:728
+1991:729
+1992:731
+1992:732
+1992:733
+1992:734
+1992:736
+1992:737
+1992:738
+1992:739
+1992:740
+1992:741
+1992:742
+1993:744
+1993:745
+1993:746
+1993:747
+1993:749
+1993:750
+1993:751
+1993:752
+1993:753
+1993:754
+1993:755
+1994:757
+1994:758
+1994:759
+1994:760
+1994:762
+1994:763
+1994:764
+1994:765
+1994:766
+1994:767
+1994:768
+1995:770
+1995:771
+1995:772
+1995:773
+1995:775
+1995:776
+1995:777
+1995:778
+1995:779
+1995:780
+1995:781
+1997:783
+1997:784
+1997:785
+1997:786
+1997:800
+1997:801
+1997:802
+1997:803
+1997:804
+1997:805
+1999:789
+1999:790
+1999:791
+1999:792
+1999:793
+1999:794
+1999:795
+1999:796
+1999:797
+2002:2328
+2002:2329
+2002:2330
+2002:2331
+2002:2347
+2002:2348
+2002:2349
+2002:2350
+2002:2351
+2002:2352
+2004:2334
+2004:2335
+2004:2336
+2004:2337
+2004:2338
+2004:2339
+2004:2340
+2004:2341
+2004:2342
+2004:2344
+2004:2345
+2004:2346
+2007:2479
+2007:2480
+2007:2481
+2007:2482
+2007:2516
+2007:2517
+2007:2518
+2007:2519
+2007:2520
+2007:2521
+2009:2485
+2009:2486
+2009:2487
+2009:2488
+2009:2489
+2009:2490
+2009:2491
+2009:2492
+2009:2493
+2009:2496
+2009:2497
+2009:2498
+2009:2499
+2009:2502
+2009:2503
+2009:2504
+2009:2505
+2009:2508
+2009:2509
+2009:2510
+2009:2511
+2009:2512
+2009:2513
+2009:2514
+2009:2515
+2012:2523
+2012:2524
+2012:2525
+2012:2526
+2012:2540
+2012:2541
+2012:2542
+2012:2543
+2012:2544
+2012:2545
+2014:2529
+2014:2530
+2014:2531
+2014:2532
+2014:2533
+2014:2534
+2014:2535
+2014:2536
+2014:2537
+2017:2547
+2017:2548
+2017:2549
+2017:2550
+2017:2593
+2017:2594
+2017:2595
+2017:2596
+2017:2597
+2017:2598
+2019:2553
+2019:2554
+2019:2555
+2019:2556
+2019:2559
+2019:2560
+2019:2561
+2019:2564
+2019:2565
+2019:2566
+2019:2569
+2019:2570
+2019:2571
+2019:2572
+2019:2573
+2019:2574
+2019:2575
+2019:2578
+2019:2579
+2019:2580
+2019:2581
+2019:2582
+2019:2583
+2019:2584
+2019:2585
+2019:2586
+2019:2587
+2019:2588
+2019:2589
+2019:2590
+2019:2591
+2022:3230
+2022:3231
+2022:3232
+2022:3233
+2022:3248
+2022:3249
+2022:3250
+2022:3251
+2022:3252
+2022:3253
+2022:3254
+2028:3235
+2028:3236
+2028:3237
+2028:3238
+2028:3239
+2028:3240
+2028:3241
+2028:3242
+2028:3243
+2028:3244
+2028:3246
+2028:3247
+2031:3256
+2031:3257
+2031:3258
+2031:3259
+2031:3287
+2031:3288
+2031:3289
+2031:3290
+2031:3291
+2031:3292
+2033:3262
+2033:3263
+2033:3264
+2033:3267
+2033:3270
+2033:3276
+2033:3279
+2033:3280
+2033:3281
+2033:3282
+2033:3284
+2033:3285
+2033:3286
+2035:3265
+2035:3266
+2037:3268
+2037:3269
+2039:3271
+2039:3272
+2039:3273
+2039:3274
+2041:3277
+2041:3278
+2045:3294
+2045:3295
+2045:3296
+2045:3297
+2045:3326
+2045:3327
+2045:3328
+2045:3329
+2045:3330
+2045:3331
+2051:3299
+2051:3300
+2051:3301
+2051:3302
+2051:3303
+2051:3304
+2051:3305
+2051:3307
+2051:3308
+2051:3309
+2051:3310
+2051:3311
+2051:3312
+2051:3313
+2051:3314
+2051:3315
+2051:3318
+2051:3319
+2051:3320
+2051:3321
+2051:3323
+2051:3324
+2051:3325
+2054:3333
+2054:3334
+2054:3335
+2054:3336
+2054:3365
+2054:3366
+2054:3367
+2054:3368
+2054:3369
+2054:3370
+2060:3338
+2060:3339
+2060:3340
+2060:3341
+2060:3342
+2060:3343
+2060:3344
+2060:3346
+2060:3347
+2060:3348
+2060:3349
+2060:3350
+2060:3351
+2060:3352
+2060:3353
+2060:3354
+2060:3357
+2060:3358
+2060:3359
+2060:3360
+2060:3362
+2060:3363
+2060:3364
+2063:3372
+2063:3373
+2063:3374
+2063:3375
+2063:3377
+2063:3378
+2063:3380
+2063:3381
+2063:3382
+2063:3383
+2063:3384
+2063:3385
+2064:3379
+2066:3387
+2066:3388
+2066:3389
+2066:3390
+2066:3392
+2066:3393
+2066:3479
+2066:3480
+2066:3481
+2066:3482
+2066:3483
+2066:3484
+2069:3395
+2069:3397
+2069:3398
+2069:3400
+2069:3401
+2069:3403
+2069:3405
+2069:3406
+2069:3407
+2069:3408
+2069:3409
+2069:3410
+2069:3411
+2069:3412
+2069:3413
+2069:3414
+2069:3415
+2069:3416
+2069:3417
+2069:3419
+2069:3420
+2069:3427
+2069:3428
+2069:3429
+2069:3430
+2069:3431
+2069:3434
+2069:3435
+2069:3436
+2069:3437
+2069:3441
+2069:3442
+2069:3443
+2069:3444
+2069:3447
+2069:3448
+2069:3449
+2069:3452
+2069:3453
+2069:3454
+2069:3455
+2069:3456
+2069:3459
+2069:3460
+2069:3461
+2069:3462
+2069:3465
+2069:3466
+2069:3467
+2069:3470
+2069:3472
+2069:3473
+2069:3474
+2069:3475
+2069:3476
+2069:3478
+2072:3486
+2072:3487
+2072:3488
+2072:3489
+2072:3496
+2072:3521
+2072:3522
+2072:3523
+2072:3524
+2072:3526
+2072:3527
+2072:3528
+2072:3529
+2072:3530
+2072:3531
+2075:3491
+2075:3493
+2075:3494
+2075:3497
+2075:3499
+2075:3501
+2075:3502
+2075:3503
+2075:3504
+2075:3505
+2075:3506
+2075:3507
+2075:3508
+2075:3509
+2075:3510
+2075:3511
+2075:3513
+2075:3514
+2075:3515
+2075:3517
+2078:3533
+2078:3534
+2078:3535
+2078:3536
+2078:3569
+2078:3570
+2078:3571
+2078:3572
+2078:3573
+2078:3574
+2080:3538
+2080:3540
+2080:3541
+2080:3542
+2080:3543
+2080:3546
+2080:3547
+2080:3548
+2080:3551
+2080:3552
+2080:3553
+2080:3556
+2080:3557
+2080:3558
+2080:3559
+2080:3560
+2080:3561
+2080:3562
+2080:3563
+2080:3564
+2080:3565
+2080:3566
+2080:3568
+2083:3576
+2083:3577
+2083:3578
+2083:3579
+2083:3599
+2083:3600
+2083:3601
+2083:3602
+2083:3603
+2083:3604
+2085:3581
+2085:3582
+2085:3584
+2085:3585
+2085:3586
+2085:3587
+2085:3589
+2085:3590
+2085:3592
+2085:3593
+2085:3594
+2085:3595
+2085:3598
+2088:3606
+2088:3607
+2088:3608
+2088:3609
+2088:3611
+2088:3688
+2088:3689
+2088:3690
+2088:3691
+2088:3692
+2088:3693
+2088:3694
+2088:3695
+2088:3696
+2088:3697
+2088:3698
+2094:3612
+2094:3613
+2094:3614
+2094:3615
+2094:3616
+2094:3617
+2094:3618
+2094:3619
+2094:3620
+2094:3621
+2094:3622
+2094:3623
+2094:3624
+2094:3625
+2094:3626
+2094:3628
+2094:3629
+2094:3630
+2094:3631
+2094:3633
+2094:3634
+2094:3636
+2094:3638
+2094:3639
+2094:3640
+2094:3641
+2094:3643
+2094:3644
+2095:3645
+2095:3646
+2095:3647
+2097:3650
+2097:3651
+2097:3652
+2097:3653
+2097:3654
+2097:3655
+2097:3656
+2097:3657
+2097:3658
+2097:3659
+2097:3660
+2097:3661
+2097:3662
+2097:3663
+2097:3664
+2097:3666
+2097:3667
+2097:3668
+2097:3669
+2097:3671
+2097:3672
+2097:3674
+2097:3676
+2097:3677
+2097:3678
+2097:3679
+2097:3681
+2097:3682
+2098:3683
+2098:3684
+2098:3685
+2101:3700
+2101:3701
+2101:3702
+2101:3703
+2101:3721
+2101:3722
+2101:3723
+2101:3724
+2101:3725
+2101:3726
+2106:3706
+2106:3707
+2106:3708
+2106:3709
+2106:3711
+2106:3713
+2106:3714
+2106:3715
+2106:3716
+2106:3718
+2106:3719
+2106:3720
+2115:3728
+2115:3734
+2115:3735
+2115:3736
+2115:3737
+2115:3755
+2115:3756
+2115:3757
+2115:3758
+2115:3759
+2115:3760
+2116:3729
+2117:3730
+2118:3731
+2119:3732
+2120:3733
+2120:3740
+2120:3741
+2120:3742
+2120:3743
+2120:3745
+2120:3747
+2120:3748
+2120:3749
+2120:3750
+2120:3752
+2120:3753
+2120:3754
+2123:3762
+2123:3763
+2123:3764
+2123:3765
+2123:3769
+2123:3770
+2123:3771
+2123:3772
+2123:3773
+2123:3774
+2125:3767
+2125:3768
+2128:3776
+2128:3777
+2128:3778
+2128:3779
+2128:3783
+2128:3784
+2128:3785
+2128:3786
+2128:3787
+2128:3788
+2130:3781
+2130:3782
+2139:3790
+2139:3796
+2139:3797
+2139:3798
+2139:3799
+2139:3871
+2139:3872
+2139:3873
+2139:3874
+2139:3875
+2139:3876
+2140:3791
+2141:3792
+2141:3802
+2141:3803
+2141:3804
+2141:3805
+2141:3806
+2141:3807
+2141:3808
+2141:3811
+2141:3812
+2141:3813
+2141:3816
+2141:3817
+2141:3818
+2141:3819
+2141:3820
+2141:3824
+2141:3825
+2141:3826
+2141:3827
+2141:3828
+2141:3829
+2141:3830
+2141:3831
+2141:3832
+2141:3835
+2141:3836
+2141:3837
+2141:3838
+2141:3839
+2141:3840
+2141:3841
+2141:3842
+2141:3843
+2141:3844
+2141:3845
+2141:3846
+2141:3847
+2141:3848
+2141:3849
+2141:3850
+2141:3851
+2141:3852
+2141:3855
+2141:3856
+2141:3857
+2141:3860
+2141:3861
+2141:3862
+2141:3863
+2141:3864
+2141:3865
+2141:3866
+2141:3867
+2141:3868
+2141:3869
+2141:3870
+2142:3793
+2143:3794
+2144:3795
+2144:3878
+2144:3879
+2144:3880
+2144:3881
+2144:3923
+2144:3924
+2144:3925
+2144:3926
+2144:3927
+2144:3928
+2150:3883
+2150:3884
+2150:3885
+2150:3886
+2150:3887
+2150:3888
+2150:3889
+2150:3891
+2150:3893
+2150:3894
+2150:3895
+2150:3896
+2150:3897
+2150:3898
+2150:3899
+2150:3900
+2150:3902
+2150:3904
+2150:3907
+2150:3908
+2150:3909
+2150:3910
+2150:3911
+2150:3912
+2150:3913
+2150:3914
+2150:3915
+2150:3916
+2150:3917
+2150:3918
+2150:3919
+2150:3920
+2150:3921
+2150:3922
+2153:3930
+2153:3931
+2153:3932
+2153:3933
+2153:3984
+2153:3985
+2153:3986
+2153:3987
+2153:3988
+2153:3989
+2159:3935
+2159:3936
+2159:3937
+2159:3938
+2159:3940
+2159:3941
+2159:3942
+2159:3943
+2159:3944
+2159:3945
+2159:3947
+2159:3949
+2159:3950
+2159:3951
+2159:3952
+2159:3953
+2159:3954
+2159:3955
+2159:3956
+2159:3958
+2159:3960
+2159:3963
+2159:3964
+2159:3965
+2159:3966
+2159:3967
+2159:3968
+2159:3969
+2159:3970
+2159:3971
+2159:3972
+2159:3973
+2159:3974
+2159:3975
+2159:3976
+2159:3977
+2159:3978
+2159:3979
+2159:3981
+2162:3991
+2162:3992
+2162:3993
+2162:3994
+2162:4065
+2162:4066
+2162:4067
+2162:4068
+2162:4069
+2162:4070
+2167:3996
+2167:3997
+2167:3998
+2168:3999
+2168:4000
+2168:4001
+2168:4002
+2168:4003
+2168:4004
+2168:4005
+2168:4006
+2168:4007
+2168:4009
+2168:4011
+2168:4014
+2168:4015
+2168:4016
+2168:4017
+2168:4018
+2168:4019
+2168:4020
+2168:4021
+2168:4022
+2168:4023
+2168:4024
+2168:4025
+2168:4026
+2168:4027
+2168:4028
+2168:4029
+2168:4030
+2168:4032
+2168:4033
+2168:4035
+2168:4038
+2168:4039
+2168:4040
+2168:4041
+2168:4042
+2168:4043
+2168:4044
+2168:4045
+2168:4047
+2168:4048
+2168:4050
+2168:4051
+2168:4053
+2168:4055
+2168:4056
+2168:4057
+2168:4058
+2168:4059
+2168:4060
+2168:4061
+2169:4062
+2169:4063
+2169:4064
+2172:4072
+2172:4073
+2172:4074
+2172:4075
+2172:4078
+2172:4079
+2172:4080
+2172:4081
+2172:4083
+2172:4084
+2172:4085
+2172:4086
+2172:4089
+2172:4090
+2172:4091
+2172:4094
+2172:4095
+2172:4096
+2172:4099
+2172:4100
+2172:4101
+2172:4104
+2172:4105
+2172:4106
+2172:4107
+2172:4108
+2172:4110
+2172:4111
+2172:4112
+2172:4113
+2172:4115
+2172:4116
+2172:4117
+2172:4118
+2172:4119
+2172:4120
+2172:4121
+2172:4122
+2172:4123
+2175:4125
+2175:4126
+2175:4127
+2175:4128
+2175:4142
+2175:4143
+2175:4144
+2175:4145
+2175:4146
+2175:4147
+2176:4130
+2176:4132
+2176:4133
+2176:4134
+2176:4136
+2177:4139
+2177:4140
+2179:4149
+2179:4150
+2179:4151
+2179:4152
+2179:4190
+2179:4191
+2179:4192
+2179:4193
+2179:4194
+2179:4195
+2184:4155
+2184:4181
+2184:4182
+2184:4183
+2184:4184
+2184:4185
+2185:4156
+2185:4157
+2185:4158
+2185:4159
+2185:4160
+2186:4161
+2186:4162
+2186:4163
+2186:4164
+2186:4165
+2186:4166
+2186:4167
+2186:4168
+2186:4169
+2186:4170
+2186:4171
+2186:4173
+2186:4174
+2188:4187
+2188:4188
+2188:4189
+2196:4197
+2196:4202
+2196:4203
+2196:4204
+2196:4205
+2196:4208
+2196:4229
+2196:4260
+2196:4273
+2196:4283
+2196:4289
+2196:4331
+2196:4400
+2196:4406
+2196:4412
+2196:4435
+2196:4445
+2196:4451
+2196:4457
+2196:4463
+2196:4469
+2196:4475
+2196:4499
+2196:4523
+2196:4529
+2196:4535
+2196:4541
+2196:4547
+2196:4553
+2196:4559
+2196:4567
+2196:4577
+2196:4586
+2196:4592
+2196:4598
+2196:4604
+2196:4610
+2196:4616
+2196:4628
+2196:4635
+2196:4641
+2196:4665
+2196:4688
+2196:4712
+2196:4718
+2196:4724
+2196:4730
+2196:4736
+2196:4742
+2196:4748
+2196:4754
+2196:4760
+2196:4766
+2196:4772
+2196:4778
+2196:4784
+2196:4790
+2196:4796
+2196:4802
+2196:4808
+2196:4814
+2196:4820
+2196:4826
+2196:4832
+2196:4833
+2196:4834
+2196:4835
+2196:4836
+2196:4837
+2196:4838
+2196:4839
+2196:4840
+2196:4841
+2196:4842
+2197:4198
+2198:4199
+2199:4200
+2200:4201
+2201:4274
+2201:4275
+2202:4276
+2203:4278
+2204:4279
+2205:4280
+2208:4413
+2208:4414
+2208:4415
+2208:4416
+2208:4417
+2208:4418
+2208:4419
+2208:4421
+2208:4423
+2208:4424
+2208:4425
+2208:4426
+2208:4427
+2208:4428
+2208:4429
+2208:4430
+2209:4431
+2209:4432
+2209:4433
+2211:4284
+2211:4285
+2211:4286
+2211:4287
+2213:4436
+2213:4437
+2214:4438
+2215:4440
+2216:4441
+2217:4442
+2220:4446
+2220:4447
+2220:4448
+2220:4449
+2222:4578
+2222:4579
+2223:4580
+2224:4582
+2225:4583
+2228:4452
+2228:4453
+2228:4454
+2228:4455
+2230:4209
+2230:4210
+2230:4211
+2231:4212
+2232:4214
+2233:4215
+2234:4216
+2237:4221
+2237:4222
+2237:4223
+2237:4224
+2237:4225
+2240:4458
+2240:4459
+2240:4460
+2240:4461
+2243:4464
+2243:4465
+2243:4466
+2243:4467
+2246:4587
+2246:4588
+2247:4589
+2247:4590
+2250:4593
+2250:4594
+2251:4595
+2251:4596
+2254:4599
+2254:4600
+2254:4601
+2254:4602
+2257:4605
+2257:4606
+2257:4607
+2257:4608
+2260:4611
+2260:4612
+2261:4613
+2261:4614
+2264:4617
+2264:4618
+2265:4619
+2266:4621
+2267:4622
+2268:4623
+2269:4624
+2270:4625
+2273:4230
+2273:4231
+2273:4232
+2273:4233
+2273:4234
+2273:4235
+2273:4237
+2273:4238
+2273:4239
+2273:4241
+2273:4242
+2273:4243
+2273:4244
+2273:4245
+2273:4246
+2273:4247
+2273:4248
+2273:4249
+2274:4250
+2275:4252
+2276:4253
+2277:4254
+2278:4255
+2279:4256
+2280:4257
+2283:4261
+2283:4262
+2284:4263
+2285:4265
+2286:4266
+2287:4267
+2288:4268
+2289:4269
+2290:4270
+2293:4206
+2293:4629
+2293:4630
+2293:4631
+2293:4632
+2293:4633
+2296:4470
+2296:4471
+2296:4472
+2296:4473
+2298:4476
+2298:4477
+2298:4478
+2298:4479
+2298:4480
+2298:4481
+2298:4482
+2298:4484
+2298:4485
+2298:4487
+2298:4488
+2298:4489
+2298:4490
+2298:4491
+2298:4492
+2298:4493
+2298:4494
+2299:4495
+2299:4496
+2299:4497
+2301:4636
+2301:4637
+2301:4638
+2301:4639
+2303:4500
+2303:4501
+2303:4502
+2303:4503
+2303:4504
+2303:4505
+2303:4506
+2303:4508
+2303:4509
+2303:4511
+2303:4512
+2303:4513
+2303:4514
+2303:4515
+2303:4516
+2303:4517
+2303:4518
+2305:4519
+2305:4520
+2305:4521
+2307:4290
+2307:4291
+2307:4292
+2307:4293
+2307:4294
+2307:4295
+2307:4296
+2307:4298
+2307:4299
+2307:4301
+2307:4302
+2307:4303
+2307:4304
+2307:4307
+2307:4308
+2307:4309
+2307:4312
+2307:4313
+2307:4314
+2307:4315
+2307:4316
+2307:4319
+2307:4320
+2307:4321
+2307:4322
+2307:4323
+2307:4324
+2307:4325
+2307:4326
+2308:4327
+2308:4328
+2308:4329
+2310:4642
+2310:4643
+2310:4644
+2310:4645
+2310:4646
+2310:4647
+2310:4648
+2310:4650
+2310:4651
+2310:4653
+2310:4654
+2310:4655
+2310:4656
+2310:4657
+2310:4658
+2310:4659
+2310:4660
+2311:4661
+2311:4662
+2311:4663
+2313:4666
+2313:4667
+2313:4668
+2313:4669
+2313:4670
+2313:4671
+2313:4672
+2313:4674
+2313:4676
+2313:4677
+2313:4678
+2313:4679
+2313:4680
+2313:4681
+2313:4682
+2313:4683
+2314:4684
+2314:4685
+2314:4686
+2316:4332
+2316:4333
+2316:4334
+2316:4335
+2316:4336
+2316:4337
+2316:4338
+2316:4340
+2316:4342
+2316:4343
+2316:4344
+2316:4345
+2316:4347
+2316:4348
+2316:4349
+2316:4351
+2316:4352
+2316:4353
+2316:4354
+2316:4363
+2316:4364
+2316:4365
+2316:4366
+2316:4367
+2316:4370
+2316:4371
+2316:4372
+2316:4373
+2316:4376
+2316:4377
+2316:4378
+2316:4381
+2316:4382
+2316:4383
+2316:4384
+2316:4385
+2316:4388
+2316:4389
+2316:4390
+2316:4391
+2316:4392
+2316:4393
+2316:4394
+2316:4395
+2317:4396
+2318:4397
+2318:4398
+2320:4689
+2320:4690
+2320:4691
+2320:4692
+2320:4693
+2320:4694
+2320:4695
+2320:4697
+2320:4698
+2320:4700
+2320:4701
+2320:4702
+2320:4703
+2320:4704
+2320:4705
+2320:4706
+2320:4707
+2321:4708
+2322:4709...
[truncated message content] |
|
From: <wol...@us...> - 2013-03-25 21:59:14
|
Revision: 18334
http://sourceforge.net/p/exist/code/18334
Author: wolfgang_m
Date: 2013-03-25 21:59:09 +0000 (Mon, 25 Mar 2013)
Log Message:
-----------
[bugfix] Avoid NPE in ft:get-field if document does not exist. Port of rev 18314.
Revision Links:
--------------
http://sourceforge.net/p/exist/code/18314
Modified Paths:
--------------
stable/eXist-2.0.x/extensions/indexes/lucene/src/org/exist/xquery/modules/lucene/GetField.java
Modified: stable/eXist-2.0.x/extensions/indexes/lucene/src/org/exist/xquery/modules/lucene/GetField.java
===================================================================
--- stable/eXist-2.0.x/extensions/indexes/lucene/src/org/exist/xquery/modules/lucene/GetField.java 2013-03-25 20:16:06 UTC (rev 18333)
+++ stable/eXist-2.0.x/extensions/indexes/lucene/src/org/exist/xquery/modules/lucene/GetField.java 2013-03-25 21:59:09 UTC (rev 18334)
@@ -51,7 +51,9 @@
DocumentImpl doc = null;
try {
doc = context.getBroker().getXMLResource(uri, Lock.READ_LOCK);
-
+ if (doc == null) {
+ return Sequence.EMPTY_SEQUENCE;
+ }
// Get the lucene worker
LuceneIndexWorker index = (LuceneIndexWorker) context.getBroker().getIndexController().getWorkerByIndexId(LuceneIndex.ID);
String content = index.getFieldContent(context, doc.getDocId(), field);
|
|
From: Adam R. <ad...@ex...> - 2013-03-25 21:14:59
|
Yea yea I get that my friend, but I guess I am saying that 2.x should
not leak outside of the 2.x branch.
On 25 March 2013 20:37, Dannes Wessels <di...@ex...> wrote:
> On 25 Mar 2013, at 21:36 , Dannes Wessels <di...@ex...> wrote:
>
> 2.x is now 2.0.1 ..... Not 2.1
>
>
> the rationale: the current changes are fixes, no new features......
>
> D.
>
--
Adam Retter
eXist Developer
{ United Kingdom }
ad...@ex...
irc://irc.freenode.net/existdb
|
|
From: Dannes W. <di...@ex...> - 2013-03-25 20:37:23
|
On 25 Mar 2013, at 21:36 , Dannes Wessels <di...@ex...> wrote: > 2.x is now 2.0.1 ..... Not 2.1 the rationale: the current changes are fixes, no new features...... D. |
|
From: Dannes W. <di...@ex...> - 2013-03-25 20:34:57
|
We did not really agree on 3.x right? There was a proposal ..... 2.x is now 2.0.1 ..... Not 2.1 -- Dannes Wessels On 25 mrt. 2013, at 21:29, Adam Retter <ad...@ex...> wrote: > Shouldnt this be 3.0-dev and then things are merged back to stable 2.x > which is now 2.1-dev > > On 25 March 2013 19:53, <di...@us...> wrote: >> Revision: 18331 >> http://sourceforge.net/p/exist/code/18331 >> Author: dizzzz >> Date: 2013-03-25 19:53:10 +0000 (Mon, 25 Mar 2013) >> Log Message: >> ----------- >> [ignore] move trunk to 2.1dev >> >> Modified Paths: >> -------------- >> trunk/eXist/build.properties >> >> Modified: trunk/eXist/build.properties >> =================================================================== >> --- trunk/eXist/build.properties 2013-03-25 16:18:38 UTC (rev 18330) >> +++ trunk/eXist/build.properties 2013-03-25 19:53:10 UTC (rev 18331) >> @@ -4,8 +4,8 @@ >> # >> # $Id$ >> project.name = eXist-db >> -project.version = 2.0RC2 >> -project.version.numeric = 2.0.0 >> +project.version = 2.1dev >> +project.version.numeric = 2.1.0 >> project.codename = Ruesselsheim >> >> # build settings >> >> >> ------------------------------------------------------------------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_d2d_mar >> _______________________________________________ >> Exist-commits mailing list >> Exi...@li... >> https://lists.sourceforge.net/lists/listinfo/exist-commits > > > > -- > Adam Retter > > eXist Developer > { United Kingdom } > ad...@ex... > irc://irc.freenode.net/existdb |