Current File : /home/mmdealscpanel/yummmdeals.com/tests.zip
PK&;�Z��@�	info.phptnu�[���--TEST--
Test phpinfo() displays brotli info
--SKIPIF--
--FILE--
<?php
if (!extension_loaded('brotli')) {
    dl('brotli.' . PHP_SHLIB_SUFFIX);
}

phpinfo();
--EXPECTF--
%a
brotli

Brotli support => enabled
Extension Version => %d.%d.%d
Library Version => %d.%d.%d
%a
PK&;�Z
��	�	roundtrip.phptnu�[���--TEST--
Test compatibility
--SKIPIF--
--FILE--
<?php
if (!extension_loaded('brotli')) {
    dl('brotli.' . PHP_SHLIB_SUFFIX);
}

$dir = __DIR__ . '/../brotli/';
$files = array(
    'tests/testdata/alice29.txt',
    'tests/testdata/asyoulik.txt',
    'tests/testdata/lcet10.txt',
    'tests/testdata/plrabn12.txt',
    '/c/enc/encode.c',
    '/c/common/dictionary.h',
    '/c/dec/decode.c',
);

$qualities = array(1, 6, 9, 11);

foreach ($files as $filename) {
    foreach ($qualities as $quality) {
        echo 'Roundtrip testing file ', basename($filename), ' at quality ', $quality, PHP_EOL;

        $expected = $dir . $filename;

        if (file_exists($expected)) {
            $data = file_get_contents($expected);
            $expected_data = brotli_uncompress(brotli_compress($data, $quality));
            if ($data !== $expected_data) {
                echo "  NG\n";
                exit(1);
            } else {
                echo "  OK\n";
            }
        }
    }
}

--EXPECTF--
Roundtrip testing file alice29.txt at quality 1
  OK
Roundtrip testing file alice29.txt at quality 6
  OK
Roundtrip testing file alice29.txt at quality 9
  OK
Roundtrip testing file alice29.txt at quality 11
  OK
Roundtrip testing file asyoulik.txt at quality 1
  OK
Roundtrip testing file asyoulik.txt at quality 6
  OK
Roundtrip testing file asyoulik.txt at quality 9
  OK
Roundtrip testing file asyoulik.txt at quality 11
  OK
Roundtrip testing file lcet10.txt at quality 1
  OK
Roundtrip testing file lcet10.txt at quality 6
  OK
Roundtrip testing file lcet10.txt at quality 9
  OK
Roundtrip testing file lcet10.txt at quality 11
  OK
Roundtrip testing file plrabn12.txt at quality 1
  OK
Roundtrip testing file plrabn12.txt at quality 6
  OK
Roundtrip testing file plrabn12.txt at quality 9
  OK
Roundtrip testing file plrabn12.txt at quality 11
  OK
Roundtrip testing file encode.c at quality 1
  OK
Roundtrip testing file encode.c at quality 6
  OK
Roundtrip testing file encode.c at quality 9
  OK
Roundtrip testing file encode.c at quality 11
  OK
Roundtrip testing file dictionary.h at quality 1
  OK
Roundtrip testing file dictionary.h at quality 6
  OK
Roundtrip testing file dictionary.h at quality 9
  OK
Roundtrip testing file dictionary.h at quality 11
  OK
Roundtrip testing file decode.c at quality 1
  OK
Roundtrip testing file decode.c at quality 6
  OK
Roundtrip testing file decode.c at quality 9
  OK
Roundtrip testing file decode.c at quality 11
  OK
PK&;�Z+�\\compatibility.phptnu�[���--TEST--
Test compatibility
--SKIPIF--
--FILE--
<?php
if (!extension_loaded('brotli')) {
    dl('brotli.' . PHP_SHLIB_SUFFIX);
}

$dir = __DIR__ . '/../brotli/tests/testdata/*.compressed*';

foreach (glob($dir) as $filename) {
    echo 'Testing decompression of file ', basename($filename), PHP_EOL;

    $split =  explode('.compressed', $filename);
    $expected = $split[0];
    $quality = -1;

    if (isset($split[1])) {
        $quality = (int)$split[1];
    }

    if (file_exists($expected)) {
        $data = file_get_contents($expected);
        $compressed_data = file_get_contents($filename);

        $expected_data = brotli_uncompress($compressed_data);
        if ($data !== $expected_data) {
            echo "  read uncompressed .. NG\n";
            exit(1);
        } else {
            echo "  read uncompressed .. OK\n";
        }

        $expected_data = brotli_compress($data, $quality);
        if (!$expected_data) {
            echo "  compressed        .. NG\n";
            exit(1);
        } else {
            echo "  compressed        .. OK\n";
        }

        $expected_data = brotli_uncompress($compressed_data);
        if ($data !== $expected_data) {
            echo "  uncompressed      .. NG\n";
            exit(1);
        } else {
            echo "  uncompressed      .. OK\n";
        }

    }
}

--EXPECTF--
Testing decompression of file 10x10y.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file 64x.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file alice29.txt.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file asyoulik.txt.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file backward65536.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file compressed_file.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file compressed_repeated.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.00
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.01
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.02
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.03
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.04
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.05
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.06
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.07
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.08
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.09
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.10
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.11
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.12
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.13
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.14
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.15
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.16
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.17
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file empty.compressed.18
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file lcet10.txt.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file mapsdatazrh.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file monkey.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file plrabn12.txt.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file quickfox.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file quickfox_repeated.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file random_org_10k.bin.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file ukkonooa.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file x.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file x.compressed.00
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file x.compressed.01
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file x.compressed.02
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file x.compressed.03
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file xyzzy.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
Testing decompression of file zeros.compressed
  read uncompressed .. OK
  compressed        .. OK
  uncompressed      .. OK
PKV�[M%�dSSyaml_parse_spec_bool.phptnu�[���--TEST--
Yaml 1.1 Spec - bool
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
canonical: y
answer: NO
logical: True
option: on
'));
?>
--EXPECT--
array(4) {
  ["canonical"]=>
  bool(true)
  ["answer"]=>
  bool(false)
  ["logical"]=>
  bool(true)
  ["option"]=>
  bool(true)
}
PKV�[�SS��&yaml_parse_wiki_YtsBasicTests_006.phptnu�[���--TEST--
Yaml YtsBasicTests - Sequence in a Mapping
--DESCRIPTION--
A value in a mapping can be a sequence.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('foo: whatever
bar:
 - uno
 - dos
'));
?>
--EXPECT--
array(2) {
  ["foo"]=>
  string(8) "whatever"
  ["bar"]=>
  array(2) {
    [0]=>
    string(3) "uno"
    [1]=>
    string(3) "dos"
  }
}
PKV�[�����bug_75029.phptnu�[���--TEST--
Test PECL bug #75029
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
var_dump(yaml_parse(''));
var_dump(yaml_parse('# Empty', -1));
$doc = <<<EOD
doc
---
---
doc
EOD;
var_dump(yaml_parse($doc, -1));
var_dump(yaml_parse($doc, 1));
?>
--EXPECT--
NULL
array(1) {
  [0]=>
  NULL
}
array(3) {
  [0]=>
  string(3) "doc"
  [1]=>
  NULL
  [2]=>
  string(3) "doc"
}
NULL
PKV�[J�n0""bug_69465.phptnu�[���--TEST--
Test PECL bug #69465
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
yaml.decode_timestamp=1
date.timezone=UTC
--FILE--
<?php
$yaml_code = <<<YAML
date1: 2015-05-15
date2: "2015-05-15"
date3: ! 2015-05-15
bool1: true
bool2: "true"
bool3: ! true
int1: 1
int2: "1"
int3: ! 1
float1: 1.5
float2: "1.5"
float3: ! 1.5
YAML;

var_dump(yaml_parse($yaml_code));
?>
--EXPECT--
array(12) {
  ["date1"]=>
  int(1431648000)
  ["date2"]=>
  string(10) "2015-05-15"
  ["date3"]=>
  string(10) "2015-05-15"
  ["bool1"]=>
  bool(true)
  ["bool2"]=>
  string(4) "true"
  ["bool3"]=>
  string(4) "true"
  ["int1"]=>
  int(1)
  ["int2"]=>
  string(1) "1"
  ["int3"]=>
  string(1) "1"
  ["float1"]=>
  float(1.5)
  ["float2"]=>
  string(3) "1.5"
  ["float3"]=>
  string(3) "1.5"
}
PKV�[$�$77&yaml_parse_wiki_YtsBasicTests_007.phptnu�[���--TEST--
Yaml YtsBasicTests - Nested Mappings
--DESCRIPTION--
A value in a mapping can be another mapping.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('foo: whatever
bar:
 fruit: apple
 name: steve
 sport: baseball
'));
?>
--EXPECT--
array(2) {
  ["foo"]=>
  string(8) "whatever"
  ["bar"]=>
  array(3) {
    ["fruit"]=>
    string(5) "apple"
    ["name"]=>
    string(5) "steve"
    ["sport"]=>
    string(8) "baseball"
  }
}
PKV�[E�B��'yaml_parse_wiki_YtsStrangeKeys_001.phptnu�[���--TEST--
Yaml YtsStrangeKeys - Quoted line noise key
--DESCRIPTION--
Check that quoted line noise parses as key.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
"!@#%" : bar baz
'));
?>
--EXPECT--
array(1) {
  ["!@#%"]=>
  string(7) "bar baz"
}
PKV�[���VVyaml_parse_spec_seq.phptnu�[���--TEST--
Yaml 1.1 Spec - seq
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
# Ordered sequence of nodes
Block style: !!seq
- Mercury   # Rotates - no light/dark sides.
- Venus     # Deadliest. Aptly named.
- Earth     # Mostly dirt.
- Mars      # Seems empty.
- Jupiter   # The king.
- Saturn    # Pretty.
- Uranus    # Where the sun hardly shines.
- Neptune   # Boring. No rings.
- Pluto     # You call this a planet?
Flow style: !!seq [ Mercury, Venus, Earth, Mars,      # Rocks
                    Jupiter, Saturn, Uranus, Neptune, # Gas
                    Pluto ]                           # Overrated
'));
?>
--EXPECT--
array(2) {
  ["Block style"]=>
  array(9) {
    [0]=>
    string(7) "Mercury"
    [1]=>
    string(5) "Venus"
    [2]=>
    string(5) "Earth"
    [3]=>
    string(4) "Mars"
    [4]=>
    string(7) "Jupiter"
    [5]=>
    string(6) "Saturn"
    [6]=>
    string(6) "Uranus"
    [7]=>
    string(7) "Neptune"
    [8]=>
    string(5) "Pluto"
  }
  ["Flow style"]=>
  array(9) {
    [0]=>
    string(7) "Mercury"
    [1]=>
    string(5) "Venus"
    [2]=>
    string(5) "Earth"
    [3]=>
    string(4) "Mars"
    [4]=>
    string(7) "Jupiter"
    [5]=>
    string(6) "Saturn"
    [6]=>
    string(6) "Uranus"
    [7]=>
    string(7) "Neptune"
    [8]=>
    string(5) "Pluto"
  }
}
PKV�[�~��PPyaml_emit_004.phptnu�[���--TEST--
yaml_emit - datetime
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
if(!class_exists('DateTime')) die('skip DateTime n/a');
?>
--INI--
date.timezone=GMT
--FILE--
<?php
$d = new DateTime('2008-08-03T14:52:10Z');
var_dump(yaml_emit($d));
?>
--EXPECT--
string(41) "--- 2008-08-03T14:52:10.000000+00:00
...
"
PKV�[�ͫh&yaml_parse_wiki_YtsBasicTests_004.phptnu�[���--TEST--
Yaml YtsBasicTests - Deeply Nested Sequences
--DESCRIPTION--
Sequences can be nested even deeper, with each
level of indentation representing a level of
depth.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('-
 -
  - uno
  - dos
'));
?>
--EXPECT--
array(1) {
  [0]=>
  array(1) {
    [0]=>
    array(2) {
      [0]=>
      string(3) "uno"
      [1]=>
      string(3) "dos"
    }
  }
}
PKV�[-E+ yaml_parse_spec_float.phptnu�[���--TEST--
Yaml 1.1 Spec - float
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
canonical: 6.8523015e+5
exponentioal: 685.230_15e+03
fixed: 685_230.15
sexagesimal: 190:20:30.15
negative infinity: -.inf
not a number: .NaN
'));
?>
--EXPECT--
array(6) {
  ["canonical"]=>
  float(685230.15)
  ["exponentioal"]=>
  float(685230.15)
  ["fixed"]=>
  float(685230.15)
  ["sexagesimal"]=>
  float(685230.15)
  ["negative infinity"]=>
  float(-INF)
  ["not a number"]=>
  float(NAN)
}
PKV�[|�I;--&yaml_parse_wiki_YtsBasicTests_009.phptnu�[���--TEST--
Yaml YtsBasicTests - Sequence-Mapping Shortcut
--DESCRIPTION--
If you are adding a mapping to a sequence, you
can place the mapping on the same line as the
dash as a shortcut.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('- work on YAML.py:
   - work on Store
'));
?>
--EXPECT--
array(1) {
  [0]=>
  array(1) {
    ["work on YAML.py"]=>
    array(1) {
      [0]=>
      string(13) "work on Store"
    }
  }
}
PKV�[��(yaml_parse_wiki_YtsBlockMapping_003.phptnu�[���--TEST--
Yaml YtsBlockMapping - Values aligned
--DESCRIPTION--
Often times human editors of documents will align the values even
though YAML emitters generally don't.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
red:   baron
white: walls
blue:  berries
'));
?>
--EXPECT--
array(3) {
  ["red"]=>
  string(5) "baron"
  ["white"]=>
  string(5) "walls"
  ["blue"]=>
  string(7) "berries"
}
PKV�[]A���$yaml_parse_wiki_YtsMapInSeq_002.phptnu�[���--TEST--
Yaml YtsMapInSeq - Multiple keys
--DESCRIPTION--
Test a map with multiple keys.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
- foo: bar
  baz: bug
'));
?>
--EXPECT--
array(1) {
  [0]=>
  array(2) {
    ["foo"]=>
    string(3) "bar"
    ["baz"]=>
    string(3) "bug"
  }
}
PKV�[(�#m��bug_60628.phptnu�[���--TEST--
Test PECL bug #260628
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$data = <<<YAML
#yaml
---
data: !mytag
  - look upper
...
YAML;

function tag_callback ($value, $tag, $flags) {
  echo "-- callback value --\n";
  var_dump($value);
  var_dump($tag);
  var_dump($flags);
  echo "-- end callback value --\n";
  return array(
      'data' => $value,
      'another' => 'test',
    );
}

/* baseline. do like operation in native php. */
$native = array(
  "data" => array("look upper"),
);
$native["data"] = tag_callback($native["data"], "!mytag", 0);

echo "-- native value --\n";
var_dump($native);
echo "-- end native value --\n";

$cnt = null;
$array = yaml_parse($data, 0, $cnt, array(
    '!mytag' => 'tag_callback',
  ));

echo "-- parsed value --\n";
var_dump($array);
echo "-- end parsed value --\n";
?>
--EXPECT--
-- callback value --
array(1) {
  [0]=>
  string(10) "look upper"
}
string(6) "!mytag"
int(0)
-- end callback value --
-- native value --
array(1) {
  ["data"]=>
  array(2) {
    ["data"]=>
    array(1) {
      [0]=>
      string(10) "look upper"
    }
    ["another"]=>
    string(4) "test"
  }
}
-- end native value --
-- callback value --
array(1) {
  [0]=>
  string(10) "look upper"
}
string(6) "!mytag"
int(0)
-- end callback value --
-- parsed value --
array(1) {
  ["data"]=>
  array(2) {
    ["data"]=>
    array(1) {
      [0]=>
      string(10) "look upper"
    }
    ["another"]=>
    string(4) "test"
  }
}
-- end parsed value --
PKV�[��yaml_parse_spec_omap.phptnu�[���--TEST--
Yaml 1.1 Spec - omap
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
# Explicitly typed ordered map (dictionary).
Bestiary: !!omap
  - aardvark: African pig-like ant eater. Ugly.
  - anteater: South-American ant eater. Two species.
  - anaconda: South-American constrictor snake. Scaly.
  # Etc.
# Flow style
Numbers: !!omap [ one: 1, two: 2, three : 3 ]
'));
?>
--EXPECT--
array(2) {
  ["Bestiary"]=>
  array(3) {
    [0]=>
    array(1) {
      ["aardvark"]=>
      string(33) "African pig-like ant eater. Ugly."
    }
    [1]=>
    array(1) {
      ["anteater"]=>
      string(38) "South-American ant eater. Two species."
    }
    [2]=>
    array(1) {
      ["anaconda"]=>
      string(40) "South-American constrictor snake. Scaly."
    }
  }
  ["Numbers"]=>
  array(3) {
    [0]=>
    array(1) {
      ["one"]=>
      int(1)
    }
    [1]=>
    array(1) {
      ["two"]=>
      int(2)
    }
    [2]=>
    array(1) {
      ["three"]=>
      int(3)
    }
  }
}
PKV�[����yaml_parse_005.phptnu�[���--TEST--
yaml_parse - syck bug #12656
--CREDITS--
From syck bug #12656
http://pecl.php.net/bugs/bug.php?id=12656
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
models : [ /usr/home/enovodk/data/core/easyworks/current/models/ ]
behaviors : [
/usr/home/enovodk/data/core/easyworks/current/models/behaviors/ ]
controllers : [
/usr/home/enovodk/data/core/easyworks/current/controllers/ ]
components : [
/usr/home/enovodk/data/core/easyworks/current/controllers/components/ ]
apis : [ /usr/home/enovodk/data/core/easyworks/current/controllers/api/
]
views : [ /usr/home/enovodk/data/core/easyworks/current/views/ ]
helpers : [ /usr/home/enovodk/data/core/easyworks/current/views/helpers/
]
libs : [ /usr/home/enovodk/data/core/easyworks/current/libs/ ]
plugins : [ /usr/home/enovodk/data/core/easyworks/current/plugins/ ]

'));
?>
--EXPECT--
array(9) {
  ["models"]=>
  array(1) {
    [0]=>
    string(53) "/usr/home/enovodk/data/core/easyworks/current/models/"
  }
  ["behaviors"]=>
  array(1) {
    [0]=>
    string(63) "/usr/home/enovodk/data/core/easyworks/current/models/behaviors/"
  }
  ["controllers"]=>
  array(1) {
    [0]=>
    string(58) "/usr/home/enovodk/data/core/easyworks/current/controllers/"
  }
  ["components"]=>
  array(1) {
    [0]=>
    string(69) "/usr/home/enovodk/data/core/easyworks/current/controllers/components/"
  }
  ["apis"]=>
  array(1) {
    [0]=>
    string(62) "/usr/home/enovodk/data/core/easyworks/current/controllers/api/"
  }
  ["views"]=>
  array(1) {
    [0]=>
    string(52) "/usr/home/enovodk/data/core/easyworks/current/views/"
  }
  ["helpers"]=>
  array(1) {
    [0]=>
    string(60) "/usr/home/enovodk/data/core/easyworks/current/views/helpers/"
  }
  ["libs"]=>
  array(1) {
    [0]=>
    string(51) "/usr/home/enovodk/data/core/easyworks/current/libs/"
  }
  ["plugins"]=>
  array(1) {
    [0]=>
    string(54) "/usr/home/enovodk/data/core/easyworks/current/plugins/"
  }
}
PKV�[^	4K��yaml_parse_002.phptnu�[���--TEST--
yaml_parse - multiple documents
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
---
time: !!str 20:03:20
player: Sammy Sosa
action: strike (miss)
...

%YAML 1.1
---
time: "20:03:47"
player: Sammy Sosa
action: grand slam
...
', -1));
?>
--EXPECT--
array(2) {
  [0]=>
  array(3) {
    ["time"]=>
    string(8) "20:03:20"
    ["player"]=>
    string(10) "Sammy Sosa"
    ["action"]=>
    string(13) "strike (miss)"
  }
  [1]=>
  array(3) {
    ["time"]=>
    string(8) "20:03:47"
    ["player"]=>
    string(10) "Sammy Sosa"
    ["action"]=>
    string(10) "grand slam"
  }
}
PKV�[�k&��yaml_parse_spec_binary.phptnu�[���--TEST--
Yaml 1.1 Spec - binary
--SKIPIF--
<?php
  if(!extension_loaded('yaml')) die('skip yaml n/a');
  if(!function_exists('md5')) die('skip md5 unavailable');
?>
--INI--
yaml.decode_binary=1
--FILE--
<?php
  $y = yaml_parse('
canonical: !!binary "\
 R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\
 OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\
 +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\
 AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="
generic: !!binary |
 R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
 OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
 +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
 AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
description:
 The binary value above is a tiny arrow encoded as a gif image.
');
  var_dump($y['canonical'] === $y['generic']);
  var_dump(md5($y['canonical']));
?>
--EXPECT--
bool(true)
string(32) "a8363b3d0e4e39d9e77e244e216c7840"
PKV�[�Vc�YYyaml_emit_005.phptnu�[���--TEST--
yaml_emit - serializable
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
?>
--FILE--
<?php
class A {
  public $one = 1;

  public function show_one() {
    echo $this->one;
  }
}
$a = new A;

var_dump(yaml_emit(array('a' => $a)));
?>
--EXPECT--
string(56) "---
a: !php/object "O:1:\"A\":1:{s:3:\"one\";i:1;}"
...
"
PKV�[c�m���bug_64019.phptnu�[���--TEST--
Test PECL bug #64019
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$yaml_code = <<<YAML
configAnchors:
  - &wrongAnchor:   # This last colon (:) makes the script die
    configKey: configValue

config:
  <<: *wrongAnchor
YAML;

var_dump(yaml_parse($yaml_code));

$yaml_code = <<<YAML
config:
  <<:
YAML;

var_dump(yaml_parse($yaml_code));
?>
--EXPECT--
array(2) {
  ["configAnchors"]=>
  array(1) {
    [0]=>
    array(2) {
      [""]=>
      NULL
      ["configKey"]=>
      string(11) "configValue"
    }
  }
  ["config"]=>
  array(1) {
    ["<<"]=>
    NULL
  }
}
array(1) {
  ["config"]=>
  array(1) {
    ["<<"]=>
    NULL
  }
}
PKV�[`�F��$yaml_parse_wiki_YtsMapInSeq_001.phptnu�[���--TEST--
Yaml YtsMapInSeq - Single key
--DESCRIPTION--
Test maps with just one key.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
- foo: bar
- baz: bug
'));
?>
--EXPECT--
array(2) {
  [0]=>
  array(1) {
    ["foo"]=>
    string(3) "bar"
  }
  [1]=>
  array(1) {
    ["baz"]=>
    string(3) "bug"
  }
}
PKV�[e��M��bug_72204.phptnu�[���--TEST--
Test PECL bug #72204
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$yaml_code = <<<YAML
foo: &ref
    bar: true
baz: &ref2
    <<: *ref
    bar: false
YAML;
$yaml = yaml_parse($yaml_code);
var_dump($yaml);
?>
--EXPECT--
array(2) {
  ["foo"]=>
  array(1) {
    ["bar"]=>
    bool(true)
  }
  ["baz"]=>
  array(1) {
    ["bar"]=>
    bool(false)
  }
}
PKV�[�!�zzyaml_parse_spec_set.phptnu�[���--TEST--
Yaml 1.1 Spec - set
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('baseball players: !!set
  ? Mark McGwire
  ? Sammy Sosa
  ? Ken Griffey
'));
?>
--EXPECT--
array(1) {
  ["baseball players"]=>
  array(3) {
    ["Mark McGwire"]=>
    NULL
    ["Sammy Sosa"]=>
    NULL
    ["Ken Griffey"]=>
    NULL
  }
}
PKV�[�޳��yaml_emit_006.phptnu�[���--TEST--
yaml_emit - ini settings
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
?>
--INI--
yaml.output_canonical=0
yaml.output_indent=2
yaml.output_width=80
serialize_precision=-1
--FILE--
<?php
$addr = array(
    "given" => "Chris",
    "family"=> "Dumars",
    "address"=> array(
        "lines"=> "458 Walkman Dr.
        Suite #292",
        "city"=> "Royal Oak",
        "state"=> "MI",
        "postal"=> 48046,
      ),
  );
$invoice = array (
    "invoice"=> 34843,
    "date"=> 980208000,
    "bill-to"=> $addr,
    "ship-to"=> $addr,
    "product"=> array(
        array(
            "sku"=> "BL394D",
            "quantity"=> 4,
            "description"=> "Basketball",
            "price"=> 450,
          ),
        array(
            "sku"=> "BL4438H",
            "quantity"=> 1,
            "description"=> "Super Hoop",
            "price"=> 2392,
          ),
      ),
    "tax"=> 251.42,
    "total"=> 4443.52,
    "comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
  );
var_dump(yaml_emit($invoice));

ini_set("yaml.output_canonical", "1");
ini_set("yaml.output_indent", "4");
ini_set("yaml.output_width", "40");
echo "== CANONICAL ==\n";
var_dump(yaml_emit($invoice));

?>
--EXPECT--
string(620) "---
invoice: 34843
date: 980208000
bill-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.42
total: 4443.52
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
"
== CANONICAL ==
string(1822) "---
!!map {
    ? !!str "invoice"
    : !!int "34843",
    ? !!str "date"
    : !!int "980208000",
    ? !!str "bill-to"
    : !!map {
        ? !!str "given"
        : !!str "Chris",
        ? !!str "family"
        : !!str "Dumars",
        ? !!str "address"
        : !!map {
            ? !!str "lines"
            : !!str "458 Walkman Dr.\n        Suite
                #292",
            ? !!str "city"
            : !!str "Royal Oak",
            ? !!str "state"
            : !!str "MI",
            ? !!str "postal"
            : !!int "48046",
        },
    },
    ? !!str "ship-to"
    : !!map {
        ? !!str "given"
        : !!str "Chris",
        ? !!str "family"
        : !!str "Dumars",
        ? !!str "address"
        : !!map {
            ? !!str "lines"
            : !!str "458 Walkman Dr.\n        Suite
                #292",
            ? !!str "city"
            : !!str "Royal Oak",
            ? !!str "state"
            : !!str "MI",
            ? !!str "postal"
            : !!int "48046",
        },
    },
    ? !!str "product"
    : !!seq [
        !!map {
            ? !!str "sku"
            : !!str "BL394D",
            ? !!str "quantity"
            : !!int "4",
            ? !!str "description"
            : !!str "Basketball",
            ? !!str "price"
            : !!int "450",
        },
        !!map {
            ? !!str "sku"
            : !!str "BL4438H",
            ? !!str "quantity"
            : !!int "1",
            ? !!str "description"
            : !!str "Super Hoop",
            ? !!str "price"
            : !!int "2392",
        },
    ],
    ? !!str "tax"
    : !!float "251.42",
    ? !!str "total"
    : !!float "4443.52",
    ? !!str "comments"
    : !!str "Late afternoon is best. Backup
        contact is Nancy Billsmer @ 338-4338.",
}
...
"
PKV�[��Ҟ�yaml_parse_spec_pairs.phptnu�[���--TEST--
Yaml 1.1 Spec - pairs
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
# Explicitly typed pairs.
Block tasks: !!pairs
  - meeting: with team.
  - meeting: with boss.
  - break: lunch.
  - meeting: with client.
Flow tasks: !!pairs [ meeting: with team, meeting: with boss ]
'));
?>
--EXPECT--
array(2) {
  ["Block tasks"]=>
  array(4) {
    [0]=>
    array(1) {
      ["meeting"]=>
      string(10) "with team."
    }
    [1]=>
    array(1) {
      ["meeting"]=>
      string(10) "with boss."
    }
    [2]=>
    array(1) {
      ["break"]=>
      string(6) "lunch."
    }
    [3]=>
    array(1) {
      ["meeting"]=>
      string(12) "with client."
    }
  }
  ["Flow tasks"]=>
  array(2) {
    [0]=>
    array(1) {
      ["meeting"]=>
      string(9) "with team"
    }
    [1]=>
    array(1) {
      ["meeting"]=>
      string(9) "with boss"
    }
  }
}
PKV�[��&QQ
yaml_001.phptnu�[���--TEST--
yaml - emit -> parse roundtrip
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$addr = array(
    "given" => "Chris",
    "family"=> "Dumars",
    "address"=> array(
        "lines"=> "458 Walkman Dr.
        Suite #292",
        "city"=> "Royal Oak",
        "state"=> "MI",
        "postal"=> 48046,
      ),
  );
$invoice = array (
    "invoice"=> 34843,
    "date"=> 980208000,
    "bill-to"=> $addr,
    "ship-to"=> $addr,
    "product"=> array(
        array(
            "sku"=> "BL394D",
            "quantity"=> 4,
            "description"=> "Basketball",
            "price"=> 450,
          ),
        array(
            "sku"=> "BL4438H",
            "quantity"=> 1,
            "description"=> "Super Hoop",
            "price"=> 2392,
          ),
      ),
    "tax"=> 251.42,
    "total"=> 4443.52,
    "comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
    "tags" => array("a","b","c"),
  );
$yaml = yaml_emit($invoice);
$parsed = yaml_parse($yaml);
var_dump($parsed == $invoice);
?>
--EXPECT--
bool(true)
PKV�[�|��yaml_parse_spec_map.phptnu�[���--TEST--
Yaml 1.1 Spec - map
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
# Unordered set of key: value pairs.
Block style: !!map
  Clark : Evans
  Brian : Ingerson
  Oren  : Ben-Kiki
Flow style: !!map { Clark: Evans, Brian: Ingerson, Oren: Ben-Kiki }
'));
?>
--EXPECT--
array(2) {
  ["Block style"]=>
  array(3) {
    ["Clark"]=>
    string(5) "Evans"
    ["Brian"]=>
    string(8) "Ingerson"
    ["Oren"]=>
    string(8) "Ben-Kiki"
  }
  ["Flow style"]=>
  array(3) {
    ["Clark"]=>
    string(5) "Evans"
    ["Brian"]=>
    string(8) "Ingerson"
    ["Oren"]=>
    string(8) "Ben-Kiki"
  }
}
PKV�[�t�aabug_79494.phptnu�[���--TEST--
Test PECL bug #74949
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
serialize_precision=-1
--FILE--
<?php
$data = array (
    'audio' =>
    array (
        'audioEnabled' =>
        array (
          0 => 132317787432502136,
          1 => 0,
    ),
    'eveampGain' =>
    array (
          0 => 132316833510704299,
          1 => 0.25,
        ),
    ),
);

print yaml_emit($data);
?>
--EXPECTF--
---
audio:
  audioEnabled:
  - %r(132317787432502136|1\.3231778743250214E\+17)%r
  - 0
  eveampGain:
  - %r(132316833510704299|1\.323168335107043E\+17)%r
  - 0.25
...
PKV�[�L�+KKbug_79567.phptnu�[���--TEST--
Test PECL bug #79567
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$data = [
    'audioEnabled' => [
        0 => 132317787432502136,
        1 => 0,
    ],
];
$yaml = yaml_emit($data);
$result = yaml_parse($yaml);
print $result == $data ? "Yes!\n" : "No...\n";
?>
--EXPECT--
Yes!
PKV�[?i��ttbug_59860.phptnu�[���--TEST--
Test PECL bug #59860
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
/**
 * Parsing callback for yaml tag.
 * @param mixed $value Data from yaml file
 * @param string $tag Tag that triggered callback
 * @param int $flags Scalar entity style (see YAML_*_SCALAR_STYLE)
 * @return mixed Value that YAML parser should emit for the given value
 */
function tag_callback ($value, $tag, $flags) {
  var_dump(func_get_args());
  return $tag;
}

$yaml = <<<YAML
implicit_map:
  a: b
explicit_map: !!map
  c: d
implicit_seq: [e, f]
explicit_seq: !!seq [g, h]
YAML;

yaml_parse($yaml, 0, $ndocs, array(
    YAML_MAP_TAG => 'tag_callback',
    YAML_SEQ_TAG => 'tag_callback',
  ));
?>
--EXPECT--
array(3) {
  [0]=>
  array(1) {
    ["a"]=>
    string(1) "b"
  }
  [1]=>
  string(21) "tag:yaml.org,2002:map"
  [2]=>
  int(0)
}
array(3) {
  [0]=>
  array(1) {
    ["c"]=>
    string(1) "d"
  }
  [1]=>
  string(21) "tag:yaml.org,2002:map"
  [2]=>
  int(0)
}
array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(1) "e"
    [1]=>
    string(1) "f"
  }
  [1]=>
  string(21) "tag:yaml.org,2002:seq"
  [2]=>
  int(0)
}
array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(1) "g"
    [1]=>
    string(1) "h"
  }
  [1]=>
  string(21) "tag:yaml.org,2002:seq"
  [2]=>
  int(0)
}
array(3) {
  [0]=>
  array(4) {
    ["implicit_map"]=>
    string(21) "tag:yaml.org,2002:map"
    ["explicit_map"]=>
    string(21) "tag:yaml.org,2002:map"
    ["implicit_seq"]=>
    string(21) "tag:yaml.org,2002:seq"
    ["explicit_seq"]=>
    string(21) "tag:yaml.org,2002:seq"
  }
  [1]=>
  string(21) "tag:yaml.org,2002:map"
  [2]=>
  int(0)
}
PKV�[J���bug_61770.phptnu�[���--TEST--
Test PECL bug #61770
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
var_dump(yaml_emit("\xc2"));
?>
--EXPECTF--
Warning: yaml_emit(): Invalid UTF-8 sequence in argument in %sbug_61770.php on line 2
bool(false)
PKV�[6K��77yaml_parse_url_001.phptnu�[���--TEST--
yaml_parse_url - general
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
yaml.decode_timestamp=1
date.timezone=GMT
--FILE--
<?php
var_dump(yaml_parse_url('file://' . __DIR__ . '/yaml_parse_file_001.yaml'));
?>
--EXPECT--
array(8) {
  ["invoice"]=>
  int(34843)
  ["date"]=>
  int(980208000)
  ["bill-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(27) "458 Walkman Dr.
Suite #292
"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["ship-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(27) "458 Walkman Dr.
Suite #292
"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["product"]=>
  array(2) {
    [0]=>
    array(4) {
      ["sku"]=>
      string(6) "BL394D"
      ["quantity"]=>
      int(4)
      ["description"]=>
      string(10) "Basketball"
      ["price"]=>
      float(450)
    }
    [1]=>
    array(4) {
      ["sku"]=>
      string(7) "BL4438H"
      ["quantity"]=>
      int(1)
      ["description"]=>
      string(10) "Super Hoop"
      ["price"]=>
      float(2392)
    }
  }
  ["tax"]=>
  float(251.42)
  ["total"]=>
  float(4443.52)
  ["comments"]=>
  string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
}
PKV�[1M���bug_80324.phptnu�[���--TEST--
Bug #80324 (Segfault in YAML with anonymous functions)
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$yaml = <<<YAML
- !env ENV
- !path PATH
YAML;

$result = yaml_parse($yaml, 0, $ndocs, array(
    '!env' => function ($str) {return $str;},
    '!path' => function ($str) {return $str;},
  ));

var_dump($result);
?>
--EXPECT--
array(2) {
  [0]=>
  string(3) "ENV"
  [1]=>
  string(4) "PATH"
}
PKV�[-0��bug_61923.phptnu�[���--TEST--
Test PECL bug #61923
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
serialize_precision=-1
--FILE--
<?php
$yaml_code = <<<YAML
---
strings:
  - '1:0'
  - '0:1'
  - '1:0:0'
  - '+1:0:0'
  - '-1:0:0'
  - ':01'
  - ':1'
  - '18:53:17.00037'
numbers:
  - 1:0
  - 0:1
  - 1:0:0
  - +1:0:0
  - -1:0:0
  - :01
  - :1
  - 18:53:17.00037
YAML;

$parsed = yaml_parse($yaml_code);
var_dump($parsed);
var_dump(yaml_emit($parsed));
?>
--EXPECT--
array(2) {
  ["strings"]=>
  array(8) {
    [0]=>
    string(3) "1:0"
    [1]=>
    string(3) "0:1"
    [2]=>
    string(5) "1:0:0"
    [3]=>
    string(6) "+1:0:0"
    [4]=>
    string(6) "-1:0:0"
    [5]=>
    string(3) ":01"
    [6]=>
    string(2) ":1"
    [7]=>
    string(14) "18:53:17.00037"
  }
  ["numbers"]=>
  array(8) {
    [0]=>
    int(60)
    [1]=>
    int(1)
    [2]=>
    int(3600)
    [3]=>
    int(3600)
    [4]=>
    int(-3600)
    [5]=>
    int(1)
    [6]=>
    int(1)
    [7]=>
    float(67997.00037)
  }
}
string(161) "---
strings:
- "1:0"
- "0:1"
- "1:0:0"
- "+1:0:0"
- "-1:0:0"
- ":01"
- ":1"
- "18:53:17.00037"
numbers:
- 60
- 1
- 3600
- 3600
- -3600
- 1
- 1
- 67997.00037
...
"
PKV�[uT���bug_64694.phptnu�[���--TEST--
Test PECL bug #64694
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$yaml_code = <<<YAML
"[a]": 1
YAML;

var_dump(yaml_parse($yaml_code));

$yaml_code = <<<YAML
[a]: 1
YAML;

var_dump(yaml_parse($yaml_code));
?>
--EXPECTF--
array(1) {
  ["[a]"]=>
  int(1)
}

Warning: yaml_parse(): Illegal offset type array (line 1, column 7) in %sbug_64694.php on line 12
array(0) {
}
PKV�[�::bug_69617.phptnu�[���--TEST--
Test PECL bug #69617
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$yaml_code = <<<YAML
---
a: !php/object "O:1:\"A\":1:{s:3:\"one\";i:1;}"
...
YAML;

var_dump(yaml_parse($yaml_code));
?>
--EXPECT--
array(1) {
  ["a"]=>
  string(26) "O:1:"A":1:{s:3:"one";i:1;}"
}
PKV�[�9V��yaml_parse_spec_timestamp.phptnu�[���--TEST--
Yaml 1.1 Spec - timestamp
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
yaml.decode_timestamp=1
date.timezone=GMT
--FILE--
<?php
  var_dump(yaml_parse('
canonical:         2001-12-15T02:59:43.1Z
valid iso8601:     2001-12-14t21:59:43.10-05:00
alternate iso8601: 2001-12-14T21:59:43.10-0500
space separated:   2001-12-14 21:59:43.10 -5
no time zone (Z):  2001-12-15 2:59:43.10
date (00:00:00Z):  2002-12-14
'));
?>
--EXPECT--
array(6) {
  ["canonical"]=>
  int(1008385183)
  ["valid iso8601"]=>
  int(1008385183)
  ["alternate iso8601"]=>
  int(1008385183)
  ["space separated"]=>
  int(1008385183)
  ["no time zone (Z)"]=>
  int(1008385183)
  ["date (00:00:00Z)"]=>
  int(1039824000)
}
PKV�[3iM_��bug_21995.phptnu�[���--TEST--
Test PECL bug #21995
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
function yaml_cbk ($a) {
  var_dump($a);
  return $a;
}

$yaml_code = <<<YAML
boo: doo
a: [1,2,3,4]
d: []
YAML;

$yaml = yaml_parse($yaml_code, 0, $ndocs, array(
    YAML_STR_TAG => "yaml_cbk",
    ));
?>
--EXPECT--
string(3) "boo"
string(3) "doo"
string(1) "a"
string(1) "d"
PKV�[1_R�**yaml_parse_file_001.phptnu�[���--TEST--
yaml_parse_file - general
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
yaml.decode_timestamp=1
date.timezone=GMT
--FILE--
<?php
var_dump(yaml_parse_file(__DIR__ . '/yaml_parse_file_001.yaml'));
--EXPECT--
array(8) {
  ["invoice"]=>
  int(34843)
  ["date"]=>
  int(980208000)
  ["bill-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(27) "458 Walkman Dr.
Suite #292
"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["ship-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(27) "458 Walkman Dr.
Suite #292
"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["product"]=>
  array(2) {
    [0]=>
    array(4) {
      ["sku"]=>
      string(6) "BL394D"
      ["quantity"]=>
      int(4)
      ["description"]=>
      string(10) "Basketball"
      ["price"]=>
      float(450)
    }
    [1]=>
    array(4) {
      ["sku"]=>
      string(7) "BL4438H"
      ["quantity"]=>
      int(1)
      ["description"]=>
      string(10) "Super Hoop"
      ["price"]=>
      float(2392)
    }
  }
  ["tax"]=>
  float(251.42)
  ["total"]=>
  float(4443.52)
  ["comments"]=>
  string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
}
PKV�[q<>�
�
yaml_parse_001.phptnu�[���--TEST--
yaml_parse - general
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
yaml.decode_timestamp=1
date.timezone=GMT
--FILE--
<?php
  var_dump(yaml_parse('
--- !<tag:clarkevans.com,2002:invoice>
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.
'));
  var_dump(yaml_parse('
---
Time: 2001-11-23 15:01:42 -5
User: ed
Warning:
  This is an error message
  for the log file
---
Time: 2001-11-23 15:02:31 -5
User: ed
Warning:
  A slightly different error
  message.
---
Date: 2001-11-23 15:03:17 -5
User: ed
Fatal:
  Unknown variable "bar"
Stack:
  - file: TopClass.py
    line: 23
    code: |
      x = MoreObject("345\n")
  - file: MoreClass.py
    line: 58
    code: |-
      foo = bar
', -1));
?>
--EXPECT--
array(8) {
  ["invoice"]=>
  int(34843)
  ["date"]=>
  int(980208000)
  ["bill-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(27) "458 Walkman Dr.
Suite #292
"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["ship-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(27) "458 Walkman Dr.
Suite #292
"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["product"]=>
  array(2) {
    [0]=>
    array(4) {
      ["sku"]=>
      string(6) "BL394D"
      ["quantity"]=>
      int(4)
      ["description"]=>
      string(10) "Basketball"
      ["price"]=>
      float(450)
    }
    [1]=>
    array(4) {
      ["sku"]=>
      string(7) "BL4438H"
      ["quantity"]=>
      int(1)
      ["description"]=>
      string(10) "Super Hoop"
      ["price"]=>
      float(2392)
    }
  }
  ["tax"]=>
  float(251.42)
  ["total"]=>
  float(4443.52)
  ["comments"]=>
  string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
}
array(3) {
  [0]=>
  array(3) {
    ["Time"]=>
    int(1006545702)
    ["User"]=>
    string(2) "ed"
    ["Warning"]=>
    string(41) "This is an error message for the log file"
  }
  [1]=>
  array(3) {
    ["Time"]=>
    int(1006545751)
    ["User"]=>
    string(2) "ed"
    ["Warning"]=>
    string(35) "A slightly different error message."
  }
  [2]=>
  array(4) {
    ["Date"]=>
    int(1006545797)
    ["User"]=>
    string(2) "ed"
    ["Fatal"]=>
    string(22) "Unknown variable "bar""
    ["Stack"]=>
    array(2) {
      [0]=>
      array(3) {
        ["file"]=>
        string(11) "TopClass.py"
        ["line"]=>
        int(23)
        ["code"]=>
        string(24) "x = MoreObject("345\n")
"
      }
      [1]=>
      array(3) {
        ["file"]=>
        string(12) "MoreClass.py"
        ["line"]=>
        int(58)
        ["code"]=>
        string(9) "foo = bar"
      }
    }
  }
}
PKV�[E�#
bug_74799.yamlnu�[���---
key:
  !value
...PKW�[��..yaml_parse_file_002.phptnu�[���--TEST--
yaml_parse_file - error cases
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
yaml.decode_timestamp=1
date.timezone=GMT
; E_ALL - E_DEPRECATED to hide Deprecated: yaml_parse_file(): Passing null to parameter #1...
error_reporting=24575
--FILE--
<?php
try {
  // PHP7 emits a Warning here
  yaml_parse_file(NULL);
} catch (ValueError $e) {
  // PHP8 raises this exception
  echo "\nWarning: yaml_parse_file(): {$e->getMessage()} in " . __FILE__ . " on line 4\n";
}
try {
  // PHP7 emits a Warning here
  yaml_parse_file('');
} catch (ValueError $e) {
  // PHP8 raises this exception
  echo "\nWarning: yaml_parse_file(): {$e->getMessage()} in " . __FILE__ . " on line 11\n";
}
yaml_parse_file('invalid');
try {
  // PHP7 emits a Warning here
  yaml_parse_file();
} catch (ArgumentCountError $e) {
  // PHP8 raises this exception
  echo "\nWarning: {$e->getMessage()} in " . __FILE__ . " on line 19\n";
}
--EXPECTF--
Warning: yaml_parse_file(): %r(Filename|Path)%r cannot be empty in %s on line %d

Warning: yaml_parse_file(): %r(Filename|Path)%r cannot be empty in %s on line %d

Warning: yaml_parse_file(invalid): %r[Ff]%railed to open stream: No such file or directory in %s on line %d

Warning: yaml_parse_file() expects at least 1 %r(argument|parameter)%r, 0 given in %s on line %d
PKW�[���&yaml_parse_wiki_YtsBasicTests_001.phptnu�[���--TEST--
Yaml YtsBasicTests - Simple Sequence
--DESCRIPTION--
You can specify a list in YAML by placing each
member of the list on a new line with an opening
dash. These lists are called sequences.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('- apple
- banana
- carrot
'));
?>
--EXPECT--
array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(6) "carrot"
}
PKW�[�M5��yaml_parse_007.phptnu�[���--TEST--
yaml_parse - serializable
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
?>
--INI--
yaml.decode_php=1
--FILE--
<?php
class A {
  public $one = 1;

  public function show_one() {
    echo $this->one;
  }
}

var_dump(yaml_parse('
---
a: !php/object "O:1:\"A\":1:{s:3:\"one\";i:1;}"
...
'));
?>
--EXPECTF--
array(1) {
  ["a"]=>
  object(A)#%d (1) {
    ["one"]=>
    int(1)
  }
}
PKW�[�:��||yaml_emit_file_basic.phptnu�[���--TEST--
Test Github pull request #1
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
serialize_precision=-1
--FILE--
<?php
$addr = array(
    "given" => "Chris",
    "family"=> "Dumars",
    "address"=> array(
        "lines"=> "458 Walkman Dr.
        Suite #292",
        "city"=> "Royal Oak",
        "state"=> "MI",
        "postal"=> 48046,
      ),
  );
$invoice = array (
    "invoice"=> 34843,
    "date"=> 980208000,
    "bill-to"=> $addr,
    "ship-to"=> $addr,
    "product"=> array(
        array(
            "sku"=> "BL394D",
            "quantity"=> 4,
            "description"=> "Basketball",
            "price"=> 450,
          ),
        array(
            "sku"=> "BL4438H",
            "quantity"=> 1,
            "description"=> "Super Hoop",
            "price"=> 2392,
          ),
      ),
    "tax"=> 251.42,
    "total"=> 4443.52,
    "comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
  );

$temp_filename = dirname(__FILE__) . 'yaml_emit_file_basic.tmp';
var_dump(yaml_emit_file($temp_filename, $invoice));
var_dump(file_get_contents($temp_filename));
?>
--CLEAN--
<?php
$temp_filename = dirname(__FILE__) . 'yaml_emit_file_basic.tmp';
unlink($temp_filename);
?>
--EXPECT--
bool(true)
string(620) "---
invoice: 34843
date: 980208000
bill-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.42
total: 4443.52
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
"
PKW�[w7jj(yaml_parse_wiki_YtsBlockMapping_001.phptnu�[���--TEST--
Yaml YtsBlockMapping - One Element Mapping
--DESCRIPTION--
A mapping with one key/value pair
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
foo: bar
'));
?>
--EXPECT--
array(1) {
  ["foo"]=>
  string(3) "bar"
}
PKW�[#����yaml_emit_009.phptnu�[���--TEST--
yaml_emit - custom tags with closures
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
if (version_compare(PHP_VERSION, '5.3.0', '<')) die('skip Closure unsupported');
?>
--FILE--
<?php
$emit_callbacks = array(
  'Emit009Example' => function ($o) {
    return array(
      'tag' => '!emit009',
      'data' => $o->data,
    );
  },
);

class Emit009Example {
  public $data;    // data may be in any pecl/yaml suitable type
}

$t = new Emit009Example();
$t->data = array ('a','b','c');
$yaml = yaml_emit(
  array(
    'callback' => $t,
  ),
  YAML_ANY_ENCODING,
  YAML_ANY_BREAK,
  $emit_callbacks
);
var_dump($yaml);

/* make sure you can undo the custome serialization */
function parse_009 ($value, $tag, $flags) {
  $ret = new Emit009Example();
  $ret->data = $value;
  return $ret;
}
$parse_callbacks = array(
  '!emit009' => 'parse_009',
);
$array = yaml_parse($yaml, 0, $cnt, $parse_callbacks);
var_dump($array['callback'] == $t);

/* roundtrip with raw object */
var_dump($t == yaml_parse(
  yaml_emit($t, YAML_ANY_ENCODING, YAML_ANY_BREAK, $emit_callbacks),
  0, $cnt, $parse_callbacks));
?>
--EXPECT--
string(39) "---
callback: !emit009
- a
- b
- c
...
"
bool(true)
bool(true)
PKW�[�����bug_79866.phptnu�[���--TEST--
Test PECL bug #79866
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
precision=14
serialize_precision=-1
--FILE--
<?php
$floats = [
  "0"            => 0,
  "1"            => 1,
  "-1"           => -1,
  "2."           => 2.,
  "2.0"          => 2.0,
  "2.00"         => 2.00,
  "2.000"        => 2.000,
  "0.123456789"  => 0.123456789,
  "-0.123456789" => -0.123456789,
  "2.3e6"        => 2.3e6,
  "-2.3e6"       => -2.3e6,
  "2.3e-6"       => 2.3e-6,
  "-2.3e-6"      => -2.3e-6,
  "INF"          => INF,
  "NAN"          => NAN,
  "0.000021"     => 0.000021,
];

foreach( $floats as $idx => $float ) {
  $float = floatval($float);
  ob_start();
  echo $float;
  $native = ob_get_clean();

  $expect = "--- {$native}\n...\n";
  $got = yaml_emit($float);
  if ( $got !== $expect ) {
    echo "== FAIL! {$idx} ==\n";
    echo "expected:\n{$expect}\n";
    echo "got:{$got}\n";
  }
}
?>
--EXPECT--
PKW�[w�b�&yaml_parse_wiki_YtsBasicTests_002.phptnu�[���--TEST--
Yaml YtsBasicTests - Nested Sequences
--DESCRIPTION--
You can include a sequence within another
sequence by giving the sequence an empty
dash, followed by an indented list.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('-
 - foo
 - bar
 - baz
'));
?>
--EXPECT--
array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(3) "foo"
    [1]=>
    string(3) "bar"
    [2]=>
    string(3) "baz"
  }
}
PKW�[�[#d��&yaml_parse_wiki_YtsBasicTests_008.phptnu�[���--TEST--
Yaml YtsBasicTests - Mixed Mapping
--DESCRIPTION--
A mapping can contain any assortment
of mappings and sequences as values.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('foo: whatever
bar:
 -
  fruit: apple
  name: steve
  sport: baseball
 - more
 -
  python: rocks
  perl: papers
  ruby: scissorses
'));
?>
--EXPECT--
array(2) {
  ["foo"]=>
  string(8) "whatever"
  ["bar"]=>
  array(3) {
    [0]=>
    array(3) {
      ["fruit"]=>
      string(5) "apple"
      ["name"]=>
      string(5) "steve"
      ["sport"]=>
      string(8) "baseball"
    }
    [1]=>
    string(4) "more"
    [2]=>
    array(3) {
      ["python"]=>
      string(5) "rocks"
      ["perl"]=>
      string(6) "papers"
      ["ruby"]=>
      string(10) "scissorses"
    }
  }
}
PKW�[���.��$yaml_parse_wiki_YtsMapInSeq_003.phptnu�[���--TEST--
Yaml YtsMapInSeq - Strange keys
--DESCRIPTION--
Test a map with "line noise" keys.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
- "!@#$" : foo
  -+!@ :   bar
'));
?>
--EXPECT--
array(1) {
  [0]=>
  array(2) {
    ["!@#$"]=>
    string(3) "foo"
    ["-+!@"]=>
    string(3) "bar"
  }
}
PKW�[�43��yaml_emit_007.phptnu�[���--TEST--
yaml_emit - recursive structures
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
?>
--FILE--
<?php
$recursive = array(
  "a" => "a",
  "b" => "b",
  "c" => &$recursive,
);
var_dump(yaml_emit($recursive));

// clean up a little or we may see false memory leak reports
unset($recursive['c']);
?>
--EXPECT--
string(56) "---
a: a
b: b
c: &refid1
  a: a
  b: b
  c: *refid1
...
"
PKW�[�X�zzyaml_parse_006.phptnu�[���--TEST--
yaml_parse - syck bug #14384
--CREDITS--
From syck bug #14384
http://pecl.php.net/bugs/bug.php?id=14384
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
	"leading tab"
...
'));
  var_dump(yaml_parse('---
  	"space and tab"
...
'));
var_dump(yaml_parse('---
  "key":	"tab before value"
...
'));
var_dump(yaml_parse('---
  "key":  	"space and tab before value"
...
'));
var_dump(yaml_parse('---
-	"tab before value"
...
'));
var_dump(yaml_parse('---
-  	"space and tab before value"
...
'));
?>
--EXPECTF--
Warning: yaml_parse(): scanning error encountered during parsing: found character that cannot start any token (line 2, column 1), context while scanning for the next token (line 2, column 1) in %syaml_parse_006.php on line %d
bool(false)

Warning: yaml_parse(): scanning error encountered during parsing: found character that cannot start any token (line 2, column 3), context while scanning for the next token (line 2, column 3) in %syaml_parse_006.php on line %d
bool(false)
array(1) {
  ["key"]=>
  string(16) "tab before value"
}
array(1) {
  ["key"]=>
  string(26) "space and tab before value"
}

Warning: yaml_parse(): scanning error encountered during parsing: found character that cannot start any token (line 2, column 2), context while scanning for the next token (line 2, column 2) in %syaml_parse_006.php on line %d
bool(false)

Warning: yaml_parse(): scanning error encountered during parsing: found character that cannot start any token (line 2, column 4), context while scanning for the next token (line 2, column 4) in %syaml_parse_006.php on line %d
bool(false)
PKW�[^
�bug_72540.phptnu�[���--TEST--
Test PECL bug #72540
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$tmpfname = tempnam(sys_get_temp_dir(), 'bug_72540.yaml');
var_dump(yaml_parse_url($tmpfname));
unlink($tmpfname);
?>
--EXPECT--
bool(false)
PKW�[R��G��yaml_parse_003.phptnu�[���--TEST--
yaml_parse - parse errors
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
commercial-at: @text
'));
  var_dump(yaml_parse('---
grave-accent: `text
'));
?>
--EXPECTF--
Warning: yaml_parse(): scanning error encountered during parsing: found character that cannot start any token (line 2, column 16), context while scanning for the next token (line 2, column 16) in %syaml_parse_003.php on line %d
bool(false)

Warning: yaml_parse(): scanning error encountered during parsing: found character that cannot start any token (line 2, column 15), context while scanning for the next token (line 2, column 15) in %syaml_parse_003.php on line %d
bool(false)
PKW�[$�]�yaml_parse_spec_null.phptnu�[���--TEST--
Yaml 1.1 Spec - null
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
# A document may be null.
---
---
# This mapping has four keys,
# one has a value.
empty:
canonical: ~
english: null
~: null key
---
# This sequence has five
# entries, two have values.
sparse:
  - ~
  - 2nd entry
  -
  - 4th entry
  - Null
', -1));
?>
--EXPECT--
array(3) {
  [0]=>
  NULL
  [1]=>
  array(4) {
    ["empty"]=>
    NULL
    ["canonical"]=>
    NULL
    ["english"]=>
    NULL
    [""]=>
    string(8) "null key"
  }
  [2]=>
  array(1) {
    ["sparse"]=>
    array(5) {
      [0]=>
      NULL
      [1]=>
      string(9) "2nd entry"
      [2]=>
      NULL
      [3]=>
      string(9) "4th entry"
      [4]=>
      NULL
    }
  }
}
PKW�[� o��bug_parsing_alias.phptnu�[���--TEST--
Test PECL strange alias bug
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php

$yaml_code = <<<YAML
basic:
  - &external {value: 22 }
keylevel0:
  keylevel1:
    value: 1
  keylevel1.1:
    keylevel2: &strange
      value: 2
      <<: *external
YAML;
var_dump(yaml_parse($yaml_code));
?>
--EXPECT--
array(2) {
  ["basic"]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      int(22)
    }
  }
  ["keylevel0"]=>
  array(2) {
    ["keylevel1"]=>
    array(1) {
      ["value"]=>
      int(1)
    }
    ["keylevel1.1"]=>
    array(1) {
      ["keylevel2"]=>
      array(1) {
        ["value"]=>
        int(2)
      }
    }
  }
}
PKW�[�9���yaml_parse_spec_str.phptnu�[���--TEST--
Yaml 1.1 Spec - str
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
string: abcd
'));
?>
--EXPECT--
array(1) {
  ["string"]=>
  string(4) "abcd"
}
PKW�[ �H-RRyaml_parse_spec_merge.phptnu�[���--TEST--
Yaml 1.1 Spec - merge
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
var_dump(yaml_parse('
---
- &CENTER { x: 1, "y": 2 }
- &LEFT { x: 0, "y": 2 }
- &BIG { r: 10 }
- &SMALL { r: 1 }

# All the following maps are equal:

- # Explicit keys
  x: 1
  "y": 2
  r: 10
  label: center/big

- # Merge one map
  << : *CENTER
  r: 10
  label: center/big

- # Merge multiple maps
  << : [ *CENTER, *BIG ]
  label: center/big

- # Override
  << : [ *BIG, *LEFT, *SMALL ]
  x: 1
  label: center/big
'));
?>
--EXPECT--
array(8) {
  [0]=>
  array(2) {
    ["x"]=>
    int(1)
    ["y"]=>
    int(2)
  }
  [1]=>
  array(2) {
    ["x"]=>
    int(0)
    ["y"]=>
    int(2)
  }
  [2]=>
  array(1) {
    ["r"]=>
    int(10)
  }
  [3]=>
  array(1) {
    ["r"]=>
    int(1)
  }
  [4]=>
  array(4) {
    ["x"]=>
    int(1)
    ["y"]=>
    int(2)
    ["r"]=>
    int(10)
    ["label"]=>
    string(10) "center/big"
  }
  [5]=>
  array(4) {
    ["x"]=>
    int(1)
    ["y"]=>
    int(2)
    ["r"]=>
    int(10)
    ["label"]=>
    string(10) "center/big"
  }
  [6]=>
  array(4) {
    ["x"]=>
    int(1)
    ["y"]=>
    int(2)
    ["r"]=>
    int(10)
    ["label"]=>
    string(10) "center/big"
  }
  [7]=>
  array(4) {
    ["r"]=>
    int(10)
    ["x"]=>
    int(1)
    ["y"]=>
    int(2)
    ["label"]=>
    string(10) "center/big"
  }
}
PKW�[5�jh��yaml_parse_file_001.yamlnu�[���--- !<tag:clarkevans.com,2002:invoice>
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.
PKW�[��"(K1K1bug_77720.phptnu�[���--TEST--
Test PECL bug #77720
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
$key_laughs = <<<YAML
- &a ["lol","lol","lol","lol","lol","lol","lol","lol","lol"]
- ? &b [{*a:1},{*a:1},{*a:1},{*a:1},{*a:1},{*a:1},{*a:1},{*a:1},{*a:}] : "foo"
- ? &c [{*b:1},{*b:1},{*b:1},{*b:1},{*b:1},{*b:1},{*b:1},{*b:1},{*b:}] : "foo"
- ? &d [{*c:1},{*c:1},{*c:1},{*c:1},{*c:1},{*c:1},{*c:1},{*c:1},{*c:}] : "foo"
- ? &e [{*d:1},{*d:1},{*d:1},{*d:1},{*d:1},{*d:1},{*d:1},{*d:1},{*d:}] : "foo"
- ? &f [{*e:1},{*e:1},{*e:1},{*e:1},{*e:1},{*e:1},{*e:1},{*e:1},{*e:}] : "foo"
- ? &g [{*f:1},{*f:1},{*f:1},{*f:1},{*f:1},{*f:1},{*f:1},{*f:1},{*f:}] : "foo"
- ? &h [{*g:1},{*g:1},{*g:1},{*g:1},{*g:1},{*g:1},{*g:1},{*g:1},{*g:}] : "foo"
- ? &i [{*h:1},{*h:1},{*h:1},{*h:1},{*h:1},{*h:1},{*h:1},{*h:1},{*h:}] : "foo"
- ? &j [{*i:1},{*i:1},{*i:1},{*i:1},{*i:1},{*i:1},{*i:1},{*i:1},{*i:}] : "foo"
- ? &k [{*j:1},{*j:1},{*j:1},{*j:1},{*j:1},{*j:1},{*j:1},{*j:1},{*j:}] : "foo"
YAML;
var_dump(yaml_parse($key_laughs));
?>
--EXPECTF--

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 2, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 3, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 4, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 5, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 6, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 7, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 8, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 9, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 10, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 2) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 73) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 11, column 79) in %sbug_77720.php on line 15

Warning: yaml_parse(): Illegal offset type array (line 12, column 1) in %sbug_77720.php on line 15
array(11) {
  [0]=>
  array(9) {
    [0]=>
    string(3) "lol"
    [1]=>
    string(3) "lol"
    [2]=>
    string(3) "lol"
    [3]=>
    string(3) "lol"
    [4]=>
    string(3) "lol"
    [5]=>
    string(3) "lol"
    [6]=>
    string(3) "lol"
    [7]=>
    string(3) "lol"
    [8]=>
    string(3) "lol"
  }
  [1]=>
  array(0) {
  }
  [2]=>
  array(0) {
  }
  [3]=>
  array(0) {
  }
  [4]=>
  array(0) {
  }
  [5]=>
  array(0) {
  }
  [6]=>
  array(0) {
  }
  [7]=>
  array(0) {
  }
  [8]=>
  array(0) {
  }
  [9]=>
  array(0) {
  }
  [10]=>
  array(0) {
  }
}
PKW�["�#�NNbug_76309.phptnu�[���--TEST--
Test PECL bug #76309
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
serialize_precision=-1
--FILE--
<?php
echo yaml_emit([
  'a' => '1.0',
  'b' => '2.',
  'c' => '3',
  'd' => '.',
  'e' => 1.0,
  'f' => 2.,
  'g' => 3,
] );
?>
--EXPECT--
---
a: "1.0"
b: "2."
c: "3"
d: .
e: 1
f: 2
g: 3
...
PKW�['�բ�bug_69616.phptnu�[���--TEST--
Test PECL bug #69616
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
yaml.decode_php=1
--FILE--
<?php
$yaml_code = <<<YAML
a: !php/object O:0:1
b: !php/object



YAML;

$yaml = yaml_parse($yaml_code);
?>
--EXPECTF--
Notice: yaml_parse(): Failed to unserialize class in %sbug_69616.php on line 10

Notice: yaml_parse(): Failed to unserialize class in %sbug_69616.php on line 10
PKW�[Q6��+	+	yaml_parse_008.phptnu�[���--TEST--
yaml_parse - callbacks
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
?>
--FILE--
<?php
/**
 * Parsing callback for yaml tag.
 * @param mixed $value Data from yaml file
 * @param string $tag Tag that triggered callback
 * @param int $flags Scalar entity style (see YAML_*_SCALAR_STYLE)
 * @return mixed Value that YAML parser should emit for the given value
 */
function tag_callback ($value, $tag, $flags) {
  if (is_array($value)) {
    $new_value = '';
    foreach ($value as $k => $v) {
      $new_value .= "'{$k}' => '{$v}', ";
    }
    $value = trim($new_value, ', ');
  }
  return "<value=[{$value}], tag=[{$tag}], flags=[{$flags}]>";
}

// yaml with some custom tags
$yaml_str = <<<YAML
%TAG ! test-
%TAG !! test2-
---
key_a : !tag_a value_a
key_b : !!tag_b 'value_b'
key_c : !<tag:example.com,2011:test/tag_c> "value_c"
key_d : !tag_d |
  some
  text
key_e : !tag_e >
  some
  text
key_f : !tag_f [ one, two ]
key_g : !tag_g { sky: blue, sea: green }
key_h : !tag_h
  - one
  - two
key_i : !tag_i
  sky: blue
  sea: green
...
YAML;


$yaml = yaml_parse($yaml_str, 0, $ndocs, array(
    "test-tag_a" => "tag_callback",
    "test2-tag_b" => "tag_callback",
    "tag:example.com,2011:test/tag_c" => "tag_callback",
    "test-tag_d" => "tag_callback",
    "test-tag_e" => "tag_callback",
    "test-tag_f" => "tag_callback",
    "test-tag_g" => "tag_callback",
    "test-tag_h" => "tag_callback",
    "test-tag_i" => "tag_callback",
  ));

var_dump($yaml);
var_dump($ndocs);
?>
--EXPECT--
array(9) {
  ["key_a"]=>
  string(46) "<value=[value_a], tag=[test-tag_a], flags=[1]>"
  ["key_b"]=>
  string(47) "<value=[value_b], tag=[test2-tag_b], flags=[2]>"
  ["key_c"]=>
  string(67) "<value=[value_c], tag=[tag:example.com,2011:test/tag_c], flags=[3]>"
  ["key_d"]=>
  string(49) "<value=[some
text
], tag=[test-tag_d], flags=[4]>"
  ["key_e"]=>
  string(49) "<value=[some text
], tag=[test-tag_e], flags=[5]>"
  ["key_f"]=>
  string(65) "<value=['0' => 'one', '1' => 'two'], tag=[test-tag_f], flags=[0]>"
  ["key_g"]=>
  string(72) "<value=['sky' => 'blue', 'sea' => 'green'], tag=[test-tag_g], flags=[0]>"
  ["key_h"]=>
  string(65) "<value=['0' => 'one', '1' => 'two'], tag=[test-tag_h], flags=[0]>"
  ["key_i"]=>
  string(72) "<value=['sky' => 'blue', 'sea' => 'green'], tag=[test-tag_i], flags=[0]>"
}
int(1)
PKW�[��GG
yaml_002.phptnu�[���--TEST--
yaml - emit -> parse roundtrip with datetime
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
if(!class_exists('DateTime')) die('skip DateTime n/a');
?>
--INI--
date.timezone=GMT
yaml.decode_timestamp=2
--FILE--
<?php
$original = array(
  "canonical" => new DateTime("2001-12-15T02:59:43.1Z"),
  "valid iso8601" => new DateTime("2001-12-14t21:59:43.10-05:00"),
  "alternate iso8601" => new DateTime("2001-12-14T21:59:43.10-0500"),
  "space separated" => new DateTime("2001-12-14 21:59:43.10 -5"),
  "no time zone (Z)" => new DateTime("2001-12-15 2:59:43.10"),
  "date (0000:00Z)" => new DateTime("2002-12-14"),
);

$yaml = yaml_emit($original);
var_dump($yaml);
$parsed = yaml_parse($yaml);
var_dump($parsed == $original);
?>
--EXPECT--
string(303) "---
canonical: 2001-12-15T02:59:43.100000+00:00
valid iso8601: 2001-12-14T21:59:43.100000-05:00
alternate iso8601: 2001-12-14T21:59:43.100000-05:00
space separated: 2001-12-14T21:59:43.100000-05:00
no time zone (Z): 2001-12-15T02:59:43.100000+00:00
date (0000:00Z): 2002-12-14T00:00:00.000000+00:00
...
"
bool(true)
PKW�[(~̛AAbug_74799.phptnu�[���--TEST--
Memory leak check
--CREDITS--
Gleb Svitelskiy <gleb.svitelskiy@gmail.com>
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
function tag_callback($value, $tag, $flags) {
    return 'callback value';
}

$base_memory = memory_get_usage();

$yamlString ="---\nkey: !value\n...\n";
$ndocs = null;
yaml_parse($yamlString, 0, $ndocs, ['!value' => 'tag_callback']);
unset($yamlString, $ndocs);

$ndocs = null;
yaml_parse_file(__DIR__.'/bug_74799.yaml', 0, $ndocs, ['!value' => 'tag_callback']);
unset($ndocs);

$array = ['key' => 'value'];
yaml_emit($array);
unset($array);

$array = ['key' => 'value'];
yaml_emit_file(__DIR__.'/bug_74799.tmp', $array);
unset($array);

var_dump($base_memory == memory_get_usage());
?>
--CLEAN--
<?php
unlink(__DIR__.'/bug_74799.tmp');
?>
--EXPECT--
bool(true)
PKW�[J�Ba��(yaml_parse_wiki_YtsBlockMapping_002.phptnu�[���--TEST--
Yaml YtsBlockMapping - Multi Element Mapping
--DESCRIPTION--
More than one key/value pair
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
red: baron
white: walls
blue: berries
'));
?>
--EXPECT--
array(3) {
  ["red"]=>
  string(5) "baron"
  ["white"]=>
  string(5) "walls"
  ["blue"]=>
  string(7) "berries"
}
PKW�[�����'yaml_parse_wiki_YtsStrangeKeys_002.phptnu�[���--TEST--
Yaml YtsStrangeKeys - Unquoted line noise key
--DESCRIPTION--
Check that unquoted line noise parses as key.
This requires the line noise be tame enough
to pass as an implicit plain key.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
-+!@#% : bar baz
'));
?>
--EXPECT--
array(1) {
  ["-+!@#%"]=>
  string(7) "bar baz"
}
PKX�[�;���(yaml_parse_wiki_YtsBlockMapping_004.phptnu�[���--TEST--
Yaml YtsBlockMapping - Colons aligned
--DESCRIPTION--
Spaces can come before the ': ' key/value separator.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
red   : baron
white : walls
blue  : berries
'));
?>
--EXPECT--
array(3) {
  ["red"]=>
  string(5) "baron"
  ["white"]=>
  string(5) "walls"
  ["blue"]=>
  string(7) "berries"
}
PKX�[�����yaml_parse_spec_int.phptnu�[���--TEST--
Yaml 1.1 Spec - int
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('
canonical: 685230
decimal: +685_230
octal: 02472256
hexadecimal: 0x_0A_74_AE
binary: 0b1010_0111_0100_1010_1110
sexagesimal: 190:20:30
'));
?>
--EXPECT--
array(6) {
  ["canonical"]=>
  int(685230)
  ["decimal"]=>
  int(685230)
  ["octal"]=>
  int(685230)
  ["hexadecimal"]=>
  int(685230)
  ["binary"]=>
  int(685230)
  ["sexagesimal"]=>
  int(685230)
}
PKX�[�5|T��yaml_emit_008.phptnu�[���--TEST--
yaml_emit - custom tags
--SKIPIF--
<?php
if(!extension_loaded('yaml')) die('skip yaml n/a');
?>
--FILE--
<?php
class Emit008Example {
  public $data;    // data may be in any pecl/yaml suitable type

  /**
   * Yaml emit callback function, referred on yaml_emit call by class name.
   *
   * Expected to return an array with 2 values:
   *   - 'tag': custom tag for this serialization
   *   - 'data': value to convert to yaml (array, string, bool, number)
   *
   * @return array
   */
  public static function yamlEmit (Emit008Example $obj) {
    return array(
      'tag' => '!emit008',
      'data' => $obj->data,
    );
  }
}

$emit_callbacks = array(
  'Emit008Example' => array('Emit008Example', 'yamlEmit')
);

$t = new Emit008Example();
$t->data = array ('a','b','c');
$yaml = yaml_emit(
  array(
    'callback' => $t,
  ),
  YAML_ANY_ENCODING,
  YAML_ANY_BREAK,
  $emit_callbacks
);
var_dump($yaml);

/* make sure you can undo the custome serialization */
function parse_008 ($value, $tag, $flags) {
  $ret = new Emit008Example();
  $ret->data = $value;
  return $ret;
}
$parse_callbacks = array(
  '!emit008' => 'parse_008',
);
$array = yaml_parse($yaml, 0, $cnt, $parse_callbacks);
var_dump($array['callback'] == $t);

/* roundtrip with raw object */
var_dump($t == yaml_parse(
  yaml_emit($t, YAML_ANY_ENCODING, YAML_ANY_BREAK, $emit_callbacks),
  0, $cnt, $parse_callbacks));
?>
--EXPECT--
string(39) "---
callback: !emit008
- a
- b
- c
...
"
bool(true)
bool(true)
PKX�[�[_zzyaml_emit_003.phptnu�[���--TEST--
yaml_emit - mappings
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
serialize_precision=-1
--FILE--
<?php
$addr = array(
    "given" => "Chris",
    "family"=> "Dumars",
    "address"=> array(
        "lines"=> "458 Walkman Dr.
        Suite #292",
        "city"=> "Royal Oak",
        "state"=> "MI",
        "postal"=> 48046,
      ),
  );
$invoice = array (
    "invoice"=> 34843,
    "date"=> 980208000,
    "bill-to"=> $addr,
    "ship-to"=> $addr,
    "product"=> array(
        array(
            "sku"=> "BL394D",
            "quantity"=> 4,
            "description"=> "Basketball",
            "price"=> 450,
          ),
        array(
            "sku"=> "BL4438H",
            "quantity"=> 1,
            "description"=> "Super Hoop",
            "price"=> 2392,
          ),
      ),
    "tax"=> 251.42,
    "total"=> 4443.52,
    "comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
  );
var_dump(yaml_emit($invoice));
?>
--EXPECT--
string(620) "---
invoice: 34843
date: 980208000
bill-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.42
total: 4443.52
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
"
PKX�[3�=S��yaml_emit_001.phptnu�[���--TEST--
yaml_emit - scalars
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
serialize_precision=-1
--FILE--
<?php
var_dump(yaml_emit(null));
var_dump(yaml_emit(true));
var_dump(yaml_emit(false));
var_dump(yaml_emit(10));
var_dump(yaml_emit(-10));
var_dump(yaml_emit(123.456));
var_dump(yaml_emit(-123.456));
var_dump(yaml_emit("yes"));
var_dump(yaml_emit("no"));
var_dump(yaml_emit("~"));
var_dump(yaml_emit("-"));
var_dump(yaml_emit("'"));
var_dump(yaml_emit('"'));
var_dump(yaml_emit("I\\xF1t\\xEBrn\\xE2ti\\xF4n\\xE0liz\\xE6ti\\xF8n"));
var_dump(yaml_emit("# looks like a comment"));
var_dump(yaml_emit("@looks_like_a_ref"));
var_dump(yaml_emit("&looks_like_a_alias"));
var_dump(yaml_emit("!!str"));
var_dump(yaml_emit("%TAG ! tag:looks.like.one,999:"));
var_dump(yaml_emit("!something"));
var_dump(yaml_emit("Hello world!"));
var_dump(yaml_emit("This is a string with\nan embedded newline."));
$str = <<<EOD
This string was made with a here doc.

It contains embedded newlines.
  		It also has some embedded tabs.

Here are some symbols:
`~!@#$%^&*()_-+={}[]|\:";'<>,.?/

These are extended characters: Iñtërnâtiônàlizætiøn


EOD;
var_dump(yaml_emit($str));
?>
--EXPECT--
string(10) "--- ~
...
"
string(13) "--- true
...
"
string(14) "--- false
...
"
string(11) "--- 10
...
"
string(12) "--- -10
...
"
string(16) "--- 123.456
...
"
string(17) "--- -123.456
...
"
string(14) "--- "yes"
...
"
string(13) "--- "no"
...
"
string(12) "--- "~"
...
"
string(12) "--- '-'
...
"
string(13) "--- ''''
...
"
string(12) "--- '"'
...
"
string(50) "--- I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n
...
"
string(33) "--- '# looks like a comment'
...
"
string(28) "--- '@looks_like_a_ref'
...
"
string(30) "--- '&looks_like_a_alias'
...
"
string(16) "--- '!!str'
...
"
string(41) "--- '%TAG ! tag:looks.like.one,999:'
...
"
string(21) "--- '!something'
...
"
string(21) "--- Hello world!
...
"
string(58) "--- |-
  This is a string with
  an embedded newline.
...
"
string(267) "--- "This string was made with a here doc.\n\nIt contains embedded newlines.\n  \t\tIt
  also has some embedded tabs.\n\nHere are some symbols:\n`~!@#$%^&*()_-+={}[]|\\:\";'<>,.?/\n\nThese
  are extended characters: I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n\n\n"
...
"
PKX�[c���TT&yaml_parse_wiki_YtsBasicTests_005.phptnu�[���--TEST--
Yaml YtsBasicTests - Simple Mapping
--DESCRIPTION--
You can add a keyed list "also known as a dictionary or
hash" to your document by placing each member of the
list on a new line, with a colon seperating the key
from its value.  In YAML, this type of list is called
a mapping.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('foo: whatever
bar: stuff
'));
?>
--EXPECT--
array(2) {
  ["foo"]=>
  string(8) "whatever"
  ["bar"]=>
  string(5) "stuff"
}
PKX�[O����yaml_parse_004.phptnu�[���--TEST--
yaml_parse - syck bug #11585
--CREDITS--
From syck bug #11585
http://pecl.php.net/bugs/bug.php?id=11585
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('---
define: &pointer_to_define
   - 1
   - 2
   - 3
reference: *broken_pointer_to_define
'));
?>
--EXPECTF--
Warning: yaml_parse(): alias broken_pointer_to_define is not registered (line 6, column 37) in %syaml_parse_004.php on line %d
bool(false)
PKX�[û��__&yaml_parse_wiki_YtsBasicTests_003.phptnu�[���--TEST--
Yaml YtsBasicTests - Mixed Sequences
--DESCRIPTION--
Sequences can contain any YAML data,
including strings and other sequences.
--CREDITS--
Bryan Davis bd808@bd808.com
# yaml.kwiki.org import/conversion
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--FILE--
<?php
  var_dump(yaml_parse('- apple
-
 - foo
 - bar
 - x123
- banana
- carrot
'));
?>
--EXPECT--
array(4) {
  [0]=>
  string(5) "apple"
  [1]=>
  array(3) {
    [0]=>
    string(3) "foo"
    [1]=>
    string(3) "bar"
    [2]=>
    string(4) "x123"
  }
  [2]=>
  string(6) "banana"
  [3]=>
  string(6) "carrot"
}
PKX�[�6Ƥ�yaml_emit_002.phptnu�[���--TEST--
yaml_emit - sequences
--SKIPIF--
<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
--INI--
serialize_precision=-1
--FILE--
<?php
$str = <<<EOD
This string was made with a here doc.

It contains embedded newlines.
  		It also has some embedded tabs.

Here are some symbols:
`~!@#$%^&*()_-+={}[]|\:";'<>,.?/

These are extended characters: Iñtërnâtiônàlizætiøn


EOD;
$doc = array(
    null,
    true,
    false,
    10,
    -10,
    123.456,
    -123.456,
    "yes",
    "no",
    "~",
    "-",
    "'",
    '"',
    "I\\xF1t\\xEBrn\\xE2ti\\xF4n\\xE0liz\\xE6ti\\xF8n",
    "# looks like a comment",
    "@looks_like_a_ref",
    "&looks_like_a_alias",
    "!!str",
    "%TAG ! tag:looks.like.one,999:",
    "!something",
    "Hello world!",
    "This is a string with\nan embedded newline.",
    $str,
  );
echo  "=== Array of scalars ===\n";
var_dump(yaml_emit($doc));

echo  "=== Nested ===\n";
var_dump(yaml_emit(array(
    "top level",
    array(
        "in array",
      ),
    array(
        "in array",
        array(
            "in array",
          ),
      ),
)));

echo  "=== Degenerate ===\n";
var_dump(yaml_emit(array()));

?>
--EXPECT--
=== Array of scalars ===
string(604) "---
- ~
- true
- false
- 10
- -10
- 123.456
- -123.456
- "yes"
- "no"
- "~"
- '-'
- ''''
- '"'
- I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n
- '# looks like a comment'
- '@looks_like_a_ref'
- '&looks_like_a_alias'
- '!!str'
- '%TAG ! tag:looks.like.one,999:'
- '!something'
- Hello world!
- |-
  This is a string with
  an embedded newline.
- "This string was made with a here doc.\n\nIt contains embedded newlines.\n  \t\tIt
  also has some embedded tabs.\n\nHere are some symbols:\n`~!@#$%^&*()_-+={}[]|\\:\";'<>,.?/\n\nThese
  are extended characters: I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n\n\n"
...
"
=== Nested ===
string(61) "---
- top level
- - in array
- - in array
  - - in array
...
"
=== Degenerate ===
string(11) "--- []
...
"
PKݼ[."�00ssh2_sftp_002.phptnu�[���--TEST--
ssh2_sftp - SFTP tests
--SKIPIF--
<?php
  require('ssh2_skip.inc');
  ssh2t_needs_auth();
  ssh2t_writes_remote();
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
ssh2t_auth($ssh);
$sftp = ssh2_sftp($ssh);

$filename = ssh2t_tempnam();

$fp = fopen("ssh2.sftp://$sftp/$filename", 'w');
fwrite($fp, "Hello World\n");
fwrite($fp, "Goodbye Planet\n");
fclose($fp);

readfile("ssh2.sftp://$sftp/$filename");

var_dump(ssh2_sftp_unlink($sftp, $filename));
--EXPECT--
Hello World
Goodbye Planet
bool(true)
PKݼ[�Cc�??ssh2_auth_pubkey_file.phptnu�[���--TEST--
ssh2_auth_pubkey_file() - Tests authentication with a key
--SKIPIF--
<?php require('ssh2_skip.inc'); ?>
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);

var_dump(ssh2_auth_pubkey_file($ssh, TEST_SSH2_USER, TEST_SSH2_PUB_KEY, TEST_SSH2_PRIV_KEY));

$cmd=ssh2_exec($ssh, 'echo "testing echo with key auth"' . PHP_EOL);

var_dump($cmd);

stream_set_blocking($cmd, true);
$response = stream_get_contents($cmd);
echo $response . PHP_EOL;

--EXPECTF--
bool(true)
resource(%d) of type (stream)
testing echo with key auth

PKݼ[s���}}testkey_rsa.pubnu�[���ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCcOpvkriEX0jbnvVSLN2vA/Nu3injPZixYcgLEctvubxRgZisqNmdtvpKN3I+BviIDnznocc+E7BWm+aF6BvQDYGcozpljjIhia27lXBB+xldJcuEvPKI1DUamwy8ZwvGXGaCLC7MBbXzdqJcnoIp3ci1JQlUOZJ+rCNkMLLbwGWI45xr3kOUzR2Mb0B3EEVtRZL4S8ZvypdZ6WmNhI2WnuJp6QobEPMti01J6LkWQDVyk2Mj+EI8+RuEPfRgYMa2lEI5/BYWIX6uHAdbiDcxmwSn4JOu0LqQvodawXt5fA8g7JchOMht4Rq0haMI5VERWziq9ERu5ShoY3WSFgmLH
PKݼ[�n?��
bug63480.phptnu�[���--TEST--
Bug #63480 (Warning on using the SSH2 Session resource in the uri)
--SKIPIF--
<?php
require('ssh2_skip.inc');
ssh2t_needs_auth();
ssh2t_writes_remote();
?>
--FILE--
<?php
require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
ssh2t_auth($ssh);

$filename = ssh2t_tempnam();
file_put_contents("ssh2.sftp://$ssh/$filename", "yada yada");

readfile("ssh2.sftp://$ssh/$filename");

unlink("ssh2.sftp://$ssh/$filename");
?>
--EXPECT--
yada yada
PKݼ[7���$$ssh2_connect.phptnu�[���--TEST--
ssh2_connect() Basic connection and pre-authentication
--SKIPIF--
<?php require('ssh2_skip.inc'); ?>
--FILE--
<?php require('ssh2_test.inc');

echo "**Connect\n";
$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
var_dump(is_resource($ssh));
var_dump(get_resource_type($ssh));

echo "**Fingerprint MD5\n";
$md5 = ssh2_fingerprint($ssh);
var_dump(is_string($md5));
var_dump(strlen($md5));
var_dump(ctype_xdigit($md5));

echo "**Fingerprint SHA1\n";
$sha1 = ssh2_fingerprint($ssh, SSH2_FINGERPRINT_SHA1 | SSH2_FINGERPRINT_HEX);
var_dump(is_string($sha1));
var_dump(strlen($sha1));
var_dump(ctype_xdigit($sha1));

function ssh2t_strset($v) {
  return is_string($v) && (strlen($v) > 0);
}

echo "**Negotiation\n";
$mn = ssh2_methods_negotiated($ssh);
var_dump(ssh2t_strset($mn['kex']));
var_dump(ssh2t_strset($mn['hostkey']));
foreach(array('client_to_server', 'server_to_client') as $direction) {
  $mnd = $mn[$direction];
  var_dump(ssh2t_strset($mnd['crypt']));
  var_dump(ssh2t_strset($mnd['comp']));
  var_dump(ssh2t_strset($mnd['mac']));
}
--EXPECT--
**Connect
bool(true)
string(12) "SSH2 Session"
**Fingerprint MD5
bool(true)
int(32)
bool(true)
**Fingerprint SHA1
bool(true)
int(40)
bool(true)
**Negotiation
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

PKݼ[)�)�jj
bug79631.phptnu�[���--TEST--
Bug 79631 (SSH disconnect segfault with SFTP (assertion failed))
--SKIPIF--
<?php
require('ssh2_skip.inc');
ssh2t_needs_auth();
ssh2t_writes_remote();
?>
--FILE--
<?php
require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
ssh2t_auth($ssh);
$sftp = ssh2_sftp($ssh);
ssh2_disconnect($ssh);
echo "done\n";
?>
--EXPECT--
done
PKݼ[秧�EEssh2_send_eof.phptnu�[���--TEST--
ssh2_send_eof() - Tests closing standard input
--SKIPIF--
<?php require('ssh2_skip.inc'); ssh2t_needs_auth(); ?>
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
var_dump(ssh2t_auth($ssh));

$cmd=ssh2_exec($ssh, "cat\n");

var_dump($cmd);

stream_set_blocking($cmd, true);

$content = "foo";

fwrite($cmd, $content);
fflush($cmd);
ssh2_send_eof($cmd);

$response = stream_get_contents($cmd);
var_dump($response === $content);
echo $response . PHP_EOL;

--EXPECTF--
bool(true)
resource(%d) of type (stream)
bool(true)
foo

PKݼ[x���
ssh2_skip.incnu�[���<?php
  require('ssh2_test.inc');

  if (!extension_loaded("ssh2")) print "skip extension not loaded";
  if (TEST_SSH2_HOSTNAME === false) print "skip TEST_SSH2_HOSTNAME not set";

function ssh2t_needs_auth() {
  if (TEST_SSH2_AUTH == 'none') {
    print "skip TEST_SSH2_AUTH == 'none'";
  }
}

function ssh2t_writes_remote() {
  if (!TEST_SSH2_TEMPDIR) {
    print "skip TEST_SSH2_TEMPDIR is empty";
  }
}
PK�[��%��ssh2_shell.phptnu�[���--TEST--
ssh2_shell_test() - Tests opening a shell
--SKIPIF--
<?php require('ssh2_skip.inc'); ssh2t_needs_auth(); ?>
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
var_dump(ssh2t_auth($ssh));
$shell = ssh2_shell($ssh);
var_dump($shell);

fwrite( $shell, 'echo "foo bar"'.PHP_EOL);
sleep(1);
while($line = fgets($shell)) {
    echo $line;
}

--EXPECTF--
bool(true)
resource(%d) of type (stream)
%a
foo bar
%aPK�[�O�1[[ssh2_auth_pubkey.phptnu�[���--TEST--
ssh2_auth_pubkey() - Tests authentication with a key
--SKIPIF--
<?php require('ssh2_skip.inc'); ?>
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);

var_dump(ssh2_auth_pubkey($ssh, TEST_SSH2_USER, file_get_contents(TEST_SSH2_PUB_KEY), file_get_contents(TEST_SSH2_PRIV_KEY)));

$cmd=ssh2_exec($ssh, 'echo "testing echo with key auth"' . PHP_EOL);

var_dump($cmd);

stream_set_blocking($cmd, true);
$response = stream_get_contents($cmd);
echo $response . PHP_EOL;

--EXPECTF--
bool(true)
resource(%d) of type (stream)
testing echo with key auth

PK�[���t��
ssh2_test.incnu�[���<?php

function ssh2t_getenv($env, $def=false) {
  $v = getenv($env);
  return ($v === false) ? $def : $v;
}

function ssh2t_defenv($env, $def=false, $name=null) {
  define(($name === null) ? $env : $name, ssh2t_getenv($env, $def));
}

ssh2t_defenv('TEST_SSH2_HOSTNAME');
ssh2t_defenv('TEST_SSH2_PORT', 22);
ssh2t_defenv('TEST_SSH2_USER', getenv('USER'));
ssh2t_defenv('TEST_SSH2_PASS');
ssh2t_defenv('TEST_SSH2_TEMPDIR', '/tmp');
ssh2t_defenv('TEST_SSH2_AUTH', TEST_SSH2_PASS ? 'password' : 'none');
ssh2t_defenv('TEST_SSH2_PUB_KEY', dirname(__FILE__) . "/testkey_rsa.pub");
ssh2t_defenv('TEST_SSH2_PRIV_KEY', dirname(__FILE__) . "/testkey_rsa");

function ssh2t_auth($ssh) {
  if (!TEST_SSH2_USER) {
    return false;
  }

  switch (TEST_SSH2_AUTH) {
    case 'none':     return (ssh2_auth_none($ssh, TEST_SSH2_USER) === true) ? true : false;
    case 'agent':    return ssh2_auth_agent($ssh, TEST_SSH2_USER);
    case 'password': return ssh2_auth_password($ssh, TEST_SSH2_USER, TEST_SSH2_PASS);
  }

  return false;
}

function ssh2t_tempnam($escape = false) {
  $fn = TEST_SSH2_TEMPDIR . '/php-ssh2-test-' . uniqid();
  return $escape ? escapeshellarg($fn) : $fn;
}
PK�[�R-��testkey_rsanu�[���-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAnDqb5K4hF9I2571UizdrwPzbt4p4z2YsWHICxHLb7m8UYGYr
KjZnbb6SjdyPgb4iA5856HHPhOwVpvmhegb0A2BnKM6ZY4yIYmtu5VwQfsZXSXLh
LzyiNQ1GpsMvGcLxlxmgiwuzAW183aiXJ6CKd3ItSUJVDmSfqwjZDCy28BliOOca
95DlM0djG9AdxBFbUWS+EvGb8qXWelpjYSNlp7iaekKGxDzLYtNSei5FkA1cpNjI
/hCPPkbhD30YGDGtpRCOfwWFiF+rhwHW4g3MZsEp+CTrtC6kL6HWsF7eXwPIOyXI
TjIbeEatIWjCOVREVs4qvREbuUoaGN1khYJixwIDAQABAoIBAH9Ysux0GBufygua
ZAjbEyWLt9njsNh2U52AycqySZ4Qw45Umcjd8e8eEb47VGsQvg8vwnc8FkkmW/vw
rfSXKF58PXqg9Z2U1zNKmWmyYuvD5zDCyNXFWf9epAGZRpJ8OovNYvUUg0Sdp9PS
8etmTJhS5KE7xbNmyFQVcT8gT7pj4IEHzEcZZQuO0w8jmKSnn8E4k5leasSR7+U3
GNRASAmuOPVsG4rp4pl4CIvUlpEPK7yuIAWD6Qwhh4nkqiZflcZ+tNDKUhMIRbez
5URX3dgZnG7fbZZI++LTRM4M09LojbdFOdT95lWJr0Pm+3h51s965F+zwkR2vYMS
6g4WcUkCgYEAyscCArrg1nocKx5ubFJVyxe/YT328Et6GhKRqTyYDMq8eznFE8of
01KiVg1+48YMb2Wc94zjsRBgHsjEz/A/f0hRtLBx3LCaYNwVF5o4DI6LqmAnOlnE
an9yYnhh8Ux4nw9PjszjdpGglIJkf0o9nP6biBgq7TAXzLfSIOxSnFsCgYEAxTvs
sE+PiF3mD4U9bWoBqRyFywDMW9mPueX9TltNqpQksaS1FzP08pCi6fTUIrsxQtXE
78N5uxiRo1OiNsPm8pluPu2Na7yfI1MQJZE8OmEadqdyPWPVYZVkUVIo13iHGovo
2eMHirb3k9y2y4WJJBPA2hOZ8azF7u1epD70DwUCgYBT4kWDqZkvQG58q+cUKm9R
R66k5IRN3XtSY9IcB3QC/q8/7qMHT7sgqXN8U7LlON2WC5wGkCL08YhB094PAxzR
Y7JhJAjGOcxzOzgCfoqnLyS5w3MW4WGuiLBh6djigDb53dSUh0+lkhKyvMokGiso
0e63OwAvBJEj3/suIXT/NwKBgGY+uGZ1+BxjQP5OvhdYWuAGDz27fjUnRaDDH1td
bZe+EH+euNn8b0DHxgyuhMI0dEcHdn4swZBCHk2i73age7rL2yD4GNX/BChVyQsQ
jT5eVE+qYkh81oMt5MFbbBy3OKKEYQOC88fvLc0TIBfFc+Cl9NWYT7e/LyS7HNLc
Z7zZAoGBAKhDfPMvGXeTjha/nBArD8rp9W7R7VrZd/VUIBOmnWhiQCRTv1KVQGKh
OGQ1taWdRt98wbnVkMxFHN4oCrnDv7cpXQNvw9m/WGZxXMgWWX0f1cpJSwewiNBt
Bb4jmKhkeAe8LwTPoxNYXxnzzf0UQox2HhcbKNP17Np/Y22NQPEf
-----END RSA PRIVATE KEY-----
PK�[IV��ssh2_stream_select.phptnu�[���--TEST--
ssh2_stream_select() - Tests opening a shell and using stream_select
--SKIPIF--
<?php require('ssh2_skip.inc'); ssh2t_needs_auth(); ?>
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
var_dump(ssh2t_auth($ssh));
$shell = ssh2_shell($ssh);
var_dump($shell);

fwrite($shell, "echo \"howdy\"\n");
sleep(1);

$read = [$shell];
$write = null;
$except = null;
$timeout = 5;
$start = time();
if (stream_select($read, $write, $except, $timeout) !== false && count($read) > 0) {
	while($line = fgets($shell)) {
	    echo $line;
	}
}
$elapsed = time() - $start;
var_dump(($elapsed < $timeout));

--EXPECTF--
bool(true)
resource(%d) of type (stream)
%a
%a
%a
howdy
%sbool(true)PK�[r�)Vssh2_auth.phptnu�[���--TEST--
ssh2_auth_FOO() - Attempt to authenticate to a remote host
--SKIPIF--
<?php require('ssh2_skip.inc'); ssh2t_needs_auth(); ?>
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
var_dump(ssh2t_auth($ssh));
--EXPECT--
bool(true)
PK�[=(�ssh2_sftp_001.phptnu�[���--TEST--
ssh2_sftp - SFTP tests
--SKIPIF--
<?php
  require('ssh2_skip.inc');
  ssh2t_needs_auth();
  ssh2t_writes_remote();
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
ssh2t_auth($ssh);
$sftp = ssh2_sftp($ssh);

$filename = ssh2t_tempnam();
$linkname = ssh2t_tempnam();

var_dump(ssh2_sftp_mkdir($sftp, $filename, 0644, true));
var_dump(ssh2_sftp_symlink($sftp, $filename, $linkname));
var_dump(ssh2_sftp_readlink($sftp, $linkname) == $filename);
$stat =  ssh2_sftp_stat ($sftp, $filename);
var_dump(ssh2_sftp_rmdir($sftp, $filename));
var_dump(ssh2_sftp_unlink($sftp, $linkname));
var_dump(($stat['mode'] & 040000) == 040000); // is_dir()
--EXPECT--
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
PK�[��ω��ssh2_exec.phptnu�[���--TEST--
ssh2_shell_test() - Tests opening a shell
--SKIPIF--
<?php require('ssh2_skip.inc'); ssh2t_needs_auth(); ?>
--FILE--
<?php require('ssh2_test.inc');

$ssh = ssh2_connect(TEST_SSH2_HOSTNAME, TEST_SSH2_PORT);
var_dump(ssh2t_auth($ssh));

$cmd=ssh2_exec($ssh, 'echo "testing echo"' . PHP_EOL);

var_dump($cmd);

stream_set_blocking($cmd, true);
$response = stream_get_contents($cmd);
echo $response . PHP_EOL;

--EXPECTF--
bool(true)
resource(%d) of type (stream)
testing echo

PK|�[�
�extauth_03.phptnu�[���--TEST--
Test External Authentication errors with oci_pconnect
--EXTENSIONS--
oci8
--SKIPIF--
<?php
if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (substr(PHP_OS, 0, 3) == 'WIN') die("skip feature not available on Windows platforms");
?>
--INI--
oci8.privileged_connect=1
--FILE--
<?php

error_reporting(E_ALL ^ E_DEPRECATED);

// Run Test

echo "Test 1\n";

$c = oci_pconnect('/', 'notemtpy', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 2\n";

$c = oci_pconnect('notemtpy', 'notemtpy', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 3\n";

$c = oci_pconnect('notemtpy', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 4\n";

$c = oci_pconnect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 5\n";

$c = oci_pconnect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 6\n";

$c = oci_pconnect('', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 7\n";

$c = oci_pconnect('/', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 8\n";

$c = oci_pconnect('/', null, 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 9\n";

$c = oci_pconnect('/', '', 'd', null, OCI_SYSDBA+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 10\n";

$c = oci_pconnect('/', '', 'd', null, OCI_SYSOPER+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);


?>
--EXPECTF--
Test 1

Warning: oci_pconnect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 2

Warning: oci_pconnect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 3

Warning: oci_pconnect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 4

Warning: oci_pconnect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
bool(false)
bool(false)
Test 5

Warning: oci_pconnect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
bool(false)
bool(false)
Test 6

Warning: oci_pconnect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 7

Warning: oci_pconnect(): ORA-12154: %s in %s on line %d
array(4) {
  ["code"]=>
  int(12154)
  ["message"]=>
  string(%d) "ORA-12154: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 8

Warning: oci_pconnect(): ORA-12154: %s in %s on line %d
array(4) {
  ["code"]=>
  int(12154)
  ["message"]=>
  string(%d) "ORA-12154: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 9

Warning: oci_pconnect(): ORA-%d: TNS:%s in %s on line %d
array(4) {
  ["code"]=>
  int(%d)
  ["message"]=>
  string(%d) "ORA-%d: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 10

Warning: oci_pconnect(): ORA-%d: TNS:%s in %s on line %d
array(4) {
  ["code"]=>
  int(%d)
  ["message"]=>
  string(%d) "ORA-%d: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
PK}�[<�oN��drcp_connection_class.phptnu�[���--TEST--
DRCP: oci8.connection_class with ini_get() and ini_set()
--EXTENSIONS--
oci8
--SKIPIF--
<?php
preg_match('/^[[:digit:]]+/', oci_client_version(), $matches);
if (!(isset($matches[0]) && $matches[0] >= 11)) {
    die("skip works only with Oracle 11g or greater version of Oracle client libraries");
}
?>
--INI--
oci8.connection_class=test
--FILE--
<?php

echo "Setting a new connection class now\n";
ini_set('oci8.connection_class',"New cc");

// Get the New connection class name. Should return New CC

$new_cc = ini_get('oci8.connection_class');
echo "The New oci8.connection_class is $new_cc\n";

echo "Done\n";

?>
--EXPECT--
Setting a new connection class now
The New oci8.connection_class is New cc
Done
PK}�[�Z)��error1.phptnu�[���--TEST--
oci_error() when oci_connect() fails
--EXTENSIONS--
oci8
--FILE--
<?php

var_dump(oci_connect("some", "some", "some"));
var_dump(oci_error());

echo "Done\n";

?>
--EXPECTF--
Warning: oci_connect(): ORA-12154: %s in %s on line %d
bool(false)
array(4) {
  ["code"]=>
  int(12154)
  ["message"]=>
  string(%d) "ORA-12154: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
Done
PK}�[�*���
ini_1.phptnu�[���--TEST--
Test OCI8 php.ini settings
--EXTENSIONS--
oci8
--SKIPIF--
<?php
preg_match('/^[[:digit:]]+/', oci_client_version(), $matches);
if (!(isset($matches[0]) && $matches[0] >= 11)) {
    die("skip works only with Oracle 11g or greater version of Oracle client libraries");
}
?>
--INI--
oci8.privileged_connect = On
oci8.max_persistent = 111
oci8.persistent_timeout = 222
oci8.ping_interval = 333
oci8.connection_class = MyCC
oci8.events = On
oci8.statement_cache_size = 444
oci8.default_prefetch = 555
oci8.old_oci_close_semantics = On
--FILE--
<?php

echo "Test 1 - check initialization\n";
echo 'oci8.privileged_connect = ' . ini_get('oci8.privileged_connect') . "\n";
echo 'oci8.max_persistent = ' . ini_get('oci8.max_persistent') . "\n";
echo 'oci8.persistent_timeout = ' . ini_get('oci8.persistent_timeout') . "\n";
echo 'oci8.ping_interval = ' . ini_get('oci8.ping_interval') . "\n";
echo 'oci8.connection_class = ' . ini_get('oci8.connection_class') . "\n";
echo 'oci8.events = ' . ini_get('oci8.events') . "\n";
echo 'oci8.statement_cache_size = ' . ini_get('oci8.statement_cache_size') . "\n";
echo 'oci8.default_prefetch = ' . ini_get('oci8.default_prefetch') . "\n";
echo 'oci8.old_oci_close_semantics = ' . ini_get('oci8.old_oci_close_semantics') . "\n";

echo "Test 2 - check what can be changed at runtime\n";
var_dump(ini_set('oci8.privileged_connect', 'Off'));
echo 'oci8.privileged_connect = ' . ini_get('oci8.privileged_connect') . "\n";
var_dump(ini_set('oci8.max_persistent', '999'));
echo 'oci8.max_persistent = ' . ini_get('oci8.max_persistent') . "\n";
var_dump(ini_set('oci8.persistent_timeout', '888'));
echo 'oci8.persistent_timeout = ' . ini_get('oci8.persistent_timeout') . "\n";
var_dump(ini_set('oci8.ping_interval', '777'));
echo 'oci8.ping_interval = ' . ini_get('oci8.ping_interval') . "\n";
var_dump(ini_set('oci8.connection_class', 'OtherCC'));
echo 'oci8.connection_class = ' . ini_get('oci8.connection_class') . "\n";
var_dump(ini_set('oci8.events', 'Off'));
echo 'oci8.events = ' . ini_get('oci8.events') . "\n";
var_dump(ini_set('oci8.statement_cache_size', '666'));
echo 'oci8.statement_cache_size = ' . ini_get('oci8.statement_cache_size') . "\n";
var_dump(ini_set('oci8.default_prefetch', '111'));
echo 'oci8.default_prefetch = ' . ini_get('oci8.default_prefetch') . "\n";
var_dump(ini_set('oci8.old_oci_close_semantics', 'Off'));
echo 'oci8.old_oci_close_semantics = ' . ini_get('oci8.old_oci_close_semantics') . "\n";

?>
--EXPECTF--
Deprecated: Directive oci8.old_oci_close_semantics is deprecated%s
Test 1 - check initialization
oci8.privileged_connect = 1
oci8.max_persistent = 111
oci8.persistent_timeout = 222
oci8.ping_interval = 333
oci8.connection_class = MyCC
oci8.events = 1
oci8.statement_cache_size = 444
oci8.default_prefetch = 555
oci8.old_oci_close_semantics = 1
Test 2 - check what can be changed at runtime
bool(false)
oci8.privileged_connect = 1
bool(false)
oci8.max_persistent = 111
bool(false)
oci8.persistent_timeout = 222
bool(false)
oci8.ping_interval = 333
string(4) "MyCC"
oci8.connection_class = OtherCC
bool(false)
oci8.events = 1
bool(false)
oci8.statement_cache_size = 444
bool(false)
oci8.default_prefetch = 555
bool(false)
oci8.old_oci_close_semantics = 1
PK}�[���jextauth_01.phptnu�[���--TEST--
Test External Authentication errors with oci_connect
--EXTENSIONS--
oci8
--SKIPIF--
<?php
if (substr(PHP_OS, 0, 3) == 'WIN') die("skip feature not available on Windows platforms");
require(__DIR__.'/details.inc');
if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--INI--
oci8.privileged_connect=1
--FILE--
<?php

error_reporting(E_ALL ^ E_DEPRECATED);

// Run Test

echo "Test 1\n";

$c = oci_connect('/', 'notemtpy', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 2\n";

$c = oci_connect('notemtpy', 'notemtpy', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 3\n";

$c = oci_connect('notemtpy', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 4\n";

$c = oci_connect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 5\n";

$c = oci_connect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 6\n";

$c = oci_connect('', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 7\n";

$c = oci_connect('/', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 8\n";

$c = oci_connect('/', null, 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 9\n";

$c = oci_connect('/', '', 'd', null, OCI_SYSDBA+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 10\n";

$c = oci_connect('/', '', 'd', null, OCI_SYSOPER+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);


?>
--EXPECTF--
Test 1

Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 2

Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 3

Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 4

Warning: oci_connect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
bool(false)
bool(false)
Test 5

Warning: oci_connect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
bool(false)
bool(false)
Test 6

Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 7

Warning: oci_connect(): ORA-12154: %s in %s on line %d
array(4) {
  ["code"]=>
  int(12154)
  ["message"]=>
  string(%d) "ORA-12154: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 8

Warning: oci_connect(): ORA-12154: %s in %s on line %d
array(4) {
  ["code"]=>
  int(12154)
  ["message"]=>
  string(%d) "ORA-12154: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 9

Warning: oci_connect(): ORA-%d: TNS:%s in %s on line %d
array(4) {
  ["code"]=>
  int(%d)
  ["message"]=>
  string(%d) "ORA-%d: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 10

Warning: oci_connect(): ORA-%d: TNS:%s in %s on line %d
array(4) {
  ["code"]=>
  int(%d)
  ["message"]=>
  string(%d) "ORA-%d: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
PK}�[(gׂ�clientversion.phptnu�[���--TEST--
oci_client_version()
--EXTENSIONS--
oci8
--FILE--
<?php

echo oci_client_version(), "\n";

?>
--EXPECTF--
%d.%d.%d.%d.%d
PK[��lb||lob_aliases.phptnu�[���--TEST--
LOB method aliases
--EXTENSIONS--
oci8
--SKIPIF--
<?php
$target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
require(__DIR__.'/skipif.inc');
?>
--FILE--
<?php

// Function existence
echo "Test 1\n";
var_dump(function_exists('oci_lob_load'));
var_dump(function_exists('oci_lob_tell'));
var_dump(function_exists('oci_lob_truncate'));
var_dump(function_exists('oci_lob_erase'));
var_dump(function_exists('oci_lob_flush'));
var_dump(function_exists('ocisetbufferinglob'));
var_dump(function_exists('ocigetbufferinglob'));
var_dump(function_exists('oci_lob_rewind'));
var_dump(function_exists('oci_lob_read'));
var_dump(function_exists('oci_lob_eof'));
var_dump(function_exists('oci_lob_seek'));
var_dump(function_exists('oci_lob_write'));
var_dump(function_exists('oci_lob_append'));
var_dump(function_exists('oci_lob_size'));
var_dump(function_exists('oci_lob_export'));
var_dump(function_exists('oci_lob_export'));
var_dump(function_exists('oci_lob_import'));
var_dump(function_exists('oci_lob_save'));
var_dump(function_exists('oci_lob_import'));
var_dump(function_exists('oci_free_descriptor'));

echo "Done\n";

?>
--EXPECT--
Test 1
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
Done
PK[�%�HHextauth_02.phptnu�[���--TEST--
Test External Authentication errors with oci_new_connect
--EXTENSIONS--
oci8
--SKIPIF--
<?php
if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
if (substr(PHP_OS, 0, 3) == 'WIN') die("skip feature not available on Windows platforms");
?>
--INI--
oci8.privileged_connect=1
--FILE--
<?php

error_reporting(E_ALL ^ E_DEPRECATED);

// Run Test

echo "Test 1\n";

$c = oci_new_connect('/', 'notemtpy', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 2\n";

$c = oci_new_connect('notemtpy', 'notemtpy', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 3\n";

$c = oci_new_connect('notemtpy', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 4\n";

$c = oci_new_connect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 5\n";

$c = oci_new_connect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 6\n";

$c = oci_new_connect('', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 7\n";

$c = oci_new_connect('/', '', 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 8\n";

$c = oci_new_connect('/', null, 'anything', null, OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 9\n";

$c = oci_new_connect('/', '', 'd', null, OCI_SYSDBA+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);

echo "Test 10\n";

$c = oci_new_connect('/', '', 'd', null, OCI_SYSOPER+OCI_CRED_EXT);
if (!$c) {
    $m = oci_error();
    var_dump($m);
}
var_dump($c);


?>
--EXPECTF--
Test 1

Warning: oci_new_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 2

Warning: oci_new_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 3

Warning: oci_new_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 4

Warning: oci_new_connect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
bool(false)
bool(false)
Test 5

Warning: oci_new_connect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
bool(false)
bool(false)
Test 6

Warning: oci_new_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
bool(false)
bool(false)
Test 7

Warning: oci_new_connect(): ORA-12154: %s in %s on line %d
array(4) {
  ["code"]=>
  int(12154)
  ["message"]=>
  string(%d) "ORA-12154: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 8

Warning: oci_new_connect(): ORA-12154: %s in %s on line %d
array(4) {
  ["code"]=>
  int(12154)
  ["message"]=>
  string(%d) "ORA-12154: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 9

Warning: oci_new_connect(): ORA-%d: TNS:%s %s on line %d
array(4) {
  ["code"]=>
  int(%d)
  ["message"]=>
  string(%d) "ORA-%d: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
Test 10

Warning: oci_new_connect(): ORA-%d: TNS:%s %s on line %d
array(4) {
  ["code"]=>
  int(%d)
  ["message"]=>
  string(%d) "ORA-%d: %s"
  ["offset"]=>
  int(0)
  ["sqltext"]=>
  string(0) ""
}
bool(false)
PK[mz�M
minfo.phptnu�[���--TEST--
Code coverage for PHP_MINFO_FUNCTION(oci)
--EXTENSIONS--
oci8
--FILE--
<?php

ob_start();
phpinfo(INFO_MODULES);
$v = ob_get_clean();
$r = preg_match('/OCI8 Support .* enabled/', $v);
if ($r !== 1)
    var_dump($r);

echo "Done\n";

?>
--EXPECT--
Done
PK!	[�����uuid_is_null.phptnu�[���--TEST--
uuid_is_null() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
var_dump(uuid_is_null("00000000-0000-0000-0000-000000000000"));
var_dump(uuid_is_null("b691c99c-7fc5-11d8-9fa8-00065b896488"));
try {
	if (!uuid_is_null("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")) {
		echo "OK\n";
	}
} catch (ValueError $e) {
	echo $e->getMessage() . "\n"; // PHP 8
	echo "OK\n";
}

?>
--EXPECTF--
bool(true)
bool(false)
%A Argument #1 ($uuid) UUID expected%AOK
PK!	[��D���uuid_variant.phptnu�[���--TEST--
uuid_variant() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

if(!function_exists('uuid_variant')) die('skip not compiled in (HAVE_UUID_VARIANT)');

 ?>
--FILE--
<?php
echo uuid_variant("b691c99c-7fc5-11d8-9fa8-00065b896488")."\n";
echo uuid_variant("878b258c-a9f1-467c-8e1d-47d79ca2c01b")."\n";
echo uuid_variant("00000000-0000-0000-0000-000000000000")."\n";

?>
--EXPECT--
1
1
-1
PK!	[�x��uuid_compare.phptnu�[���--TEST--
uuid_compare() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
$uuids = array();
        $uuids[0] = "00000000-0000-0000-0000-000000000000";
        $uuids[1] = "878b258c-a9f1-467c-8e1d-47d79ca2c01b";
        $uuids[2] = "b691c99c-7fc5-11d8-9fa8-00065b896488";

        foreach ($uuids as $key1 => $uuid1) {
                foreach ($uuids as $key2 => $uuid2) {
                        echo "uuid$key1";

                        switch (uuid_compare($uuid1, $uuid2)) {
                        case -1: echo " < "; break;
                        case  0: echo " = "; break;
                        case  1: echo " > "; break;
                        }

                        echo "uuid$key2\n";
                }
                echo "\n";
        }

?>
--EXPECT--
uuid0 = uuid0
uuid0 < uuid1
uuid0 < uuid2

uuid1 > uuid0
uuid1 = uuid1
uuid1 < uuid2

uuid2 > uuid0
uuid2 > uuid1
uuid2 = uuid2
PK!	[��kuuid_type.phptnu�[���--TEST--
uuid_type() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

if(!function_exists('uuid_type')) die('skip not compiled in (HAVE_UUID_TYPE)');

 ?>
--FILE--
<?php
echo uuid_type("b691c99c-7fc5-11d8-9fa8-00065b896488") == UUID_TYPE_TIME   ? "OK\n" : "Failure\n";
echo uuid_type("878b258c-a9f1-467c-8e1d-47d79ca2c01b") == UUID_TYPE_RANDOM ? "OK\n" : "Failure\n";
echo uuid_type("00000000-0000-0000-0000-000000000000") == UUID_TYPE_NULL   ? "OK\n" : "Failure\n";

?>
--EXPECT--
OK
OK
OK
PK!	[�>��uuid_parse.phptnu�[���--TEST--
uuid_parse() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
var_dump(uuid_parse("61616161-6161-6161-6161-616161616161"));

?>
--EXPECT--
string(16) "aaaaaaaaaaaaaaaa"
PK!	[n�2���uuid_generate_sha1.phptnu�[���--TEST--
uuid_generate_sha1() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');
if(!function_exists('uuid_generate_sha1')) die('skip not compiled in (HAVE_UUID_GENERATE_SHA1)');

 ?>
--FILE--
<?php
$uuid = uuid_create();
var_dump($uuid);
try {
	uuid_generate_sha1("not a uuid", "foo");
} catch (ValueError $e) {
	echo $e->getMessage() . "\n"; // PHP 8
}
var_dump($a = uuid_generate_sha1($uuid, "foo"));
var_dump($b = uuid_generate_sha1($uuid, "bar"));
var_dump($a === $b);
var_dump(uuid_type($a) == UUID_TYPE_SHA1);
var_dump(uuid_type($b) == UUID_TYPE_SHA1);
?>
Done
--EXPECTF--
string(36) "%s"
%A Argument #1 ($uuid_ns) UUID expecte%A
string(36) "%s"
string(36) "%s"
bool(false)
bool(true)
bool(true)
Done
PK!	[Rx��uuid_generate_md5.phptnu�[���--TEST--
uuid_generate_md5() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');
if(!function_exists('uuid_generate_md5')) die('skip not compiled in (HAVE_UUID_GENERATE_MD5)');

 ?>
--FILE--
<?php
$uuid = uuid_create();
var_dump($uuid);
try {
	if (!uuid_generate_md5("not a uuid", "foo")) {
		echo "OK\n"; // PHP 7
	}
} catch (ValueError $e) {
	echo $e->getMessage() . "\n"; // PHP 8
	echo "OK\n"; // PHP 8
}
var_dump($a = uuid_generate_md5($uuid, "foo"));
var_dump($b = uuid_generate_md5($uuid, "bar"));
var_dump($a === $b);
var_dump(uuid_type($a) == UUID_TYPE_MD5);
var_dump(uuid_type($b) == UUID_TYPE_MD5);
?>
Done
--EXPECTF--
string(36) "%s"
%A Argument #1 ($uuid_ns) UUID expecte%AOK
string(36) "%s"
string(36) "%s"
bool(false)
bool(true)
bool(true)
Done
PK!	[|�e<��uuid_create.phptnu�[���--TEST--
uuid_create() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
        // check basic format of generated UUIDs
        $uuid = uuid_create();
        if (preg_match("/[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}/", $uuid)) {
                echo "basic format ok\n";
        } else {
                echo "basic UUID format check failed, generated UUID was $uuid\n";
        }

?>
--EXPECT--
basic format ok
PK!	[�5��
uuid_mac.phptnu�[���--TEST--
uuid_mac() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
var_dump(uuid_mac("b691c99c-7fc5-11d8-9fa8-00065b896488"));
try {
	if (!uuid_mac("878b258c-a9f1-467c-8e1d-47d79ca2c01b")) {
		echo "OK\n"; // PHP 7
	}
} catch (ValueError $e) {
	echo $e->getMessage() . "\n"; // PHP 8
	echo "OK\n";
}

?>
--EXPECTF--
string(12) "00065b896488"
%A Argument #1 ($uuid) UUID DCE TIME expecte%AOK
PK!	[��F���uuid_time.phptnu�[���--TEST--
uuid_time() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
var_dump(uuid_time("b691c99c-7fc5-11d8-9fa8-00065b896488"));
try {
	if (!uuid_time("878b258c-a9f1-467c-8e1d-47d79ca2c01b")) {
		echo "OK\n"; // PHP 7
	}
} catch (ValueError $e) {
	echo $e->getMessage() . "\n"; // PHP 8
	echo "OK\n";
}

?>
--EXPECTF--
int(1080374815)
%A UUID DCE TIME expecte%AOK
PK!	[Ϻ��uuid_is_valid.phptnu�[���--TEST--
uuid_is_valid() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
var_dump(uuid_is_valid("1b4e28ba-2fa1-11d2-883f-b9a761bde3fb"));
var_dump(uuid_is_valid("ffffffff-ffff-ffff-ffff-ffffffffffff"));
var_dump(uuid_is_valid("61616161-6161-6161-6161-616161616161"));
var_dump(uuid_is_valid("foobar"));

?>
--EXPECT--
bool(true)
bool(true)
bool(true)
bool(false)
PK	!	[�0+���uuid_unparse.phptnu�[���--TEST--
uuid_unparse() function
--SKIPIF--
<?php 

if(!extension_loaded('uuid')) die('skip ');

 ?>
--FILE--
<?php
var_dump(uuid_unparse("aaaaaaaaaaaaaaaa"));

?>
--EXPECT--
string(36) "61616161-6161-6161-6161-616161616161"
PK6X	[X��:��imap_close_basic.phptnu�[���--TEST--
Test imap_close() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_close() : basic functionality ***\n";

// include file for required variables in imap_open()
require_once(__DIR__.'/setup/imap_include.inc');

// Initialize required variables
$stream_id = setup_test_mailbox('imapclosebasic', 3, $mailbox); // set up temp mailbox with 3 messages
$options = CL_EXPUNGE;

// mark messages in inbox for deletion
for ($i = 1; $i < 4; $i++) {
    imap_delete($stream_id, $i);
}

// Calling imap_close() with all possible arguments
echo "\n-- Call to imap_close() with all possible arguments --\n";
var_dump( imap_close($stream_id, $options) );

// check that CL_EXPUNGE worked
$stream_id = imap_open($mailbox, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD);
echo "There are now " . imap_num_msg($stream_id) . " msgs in mailbox '$mailbox'\n";

// Calling imap_close() with mandatory arguments
echo "\n-- Call to imap_close() with mandatory arguments --\n";
var_dump( imap_close($stream_id) );
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapclosebasic';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_close() : basic functionality ***
Create a temporary mailbox and add 3 msgs
New mailbox created

-- Call to imap_close() with all possible arguments --
bool(true)
There are now 0 msgs in mailbox '%sINBOX.phpttestimapclosebasic'

-- Call to imap_close() with mandatory arguments --
bool(true)
PK6X	[/��a[[gh9309.phptnu�[���--TEST--
Bug GH-9309 (Segfault when connection is used after imap_close())
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = setup_test_mailbox('gh9309', 0, $mailbox);
imap_close($stream_id);
try {
    imap_headers($stream_id);
} catch (ValueError $ex) {
    echo $ex->getMessage(), PHP_EOL;
}
?>
--CLEAN--
<?php
$mailbox_suffix = 'gh9309';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 0 msgs
New mailbox created
IMAP\Connection is already closed
PK6X	[%�ˬ�imap_savebody_uid.phptnu�[���--TEST--
imap_savebody() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapsavebodyuid", $msg_no, $uid);

$section = '';

$stream_uid = fopen('php://memory', 'w+');
imap_savebody($imap_mail_box, $stream_uid, $uid, $section, FT_UID);

$stream_msg_no = fopen('php://memory', 'w+');
imap_savebody($imap_mail_box, $stream_msg_no, $msg_no, $section);

// Compare what was written.
rewind($stream_uid);
rewind($stream_msg_no);
var_dump(stream_get_contents($stream_uid) === stream_get_contents($stream_msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapsavebodyuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
PK6X	[V�W��#imap_fetch_overview_variation5.phptnu�[���--TEST--
Test imap_fetch_overview() function : usage variations - $msg_no argument
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
/*
 * Pass different sequences/msg numbers as $msg_no argument to test behaviour
 * of imap_fetch_overview()
 */

echo "*** Testing imap_fetch_overview() : usage variations ***\n";
require_once __DIR__.'/setup/imap_include.inc';

$stream_id = setup_test_mailbox('imapfetchoverviewvar5', 3, $mailbox, false); // set up temp mailbox with 3 msgs

$sequences = [
    0,
    4, // out of range
    '4', // out of range
    '2',
    '1,3',
    '1, 2',
    '1:3', // pass uid without setting FT_UID option
];

foreach ($sequences as $msg_no) {
    echo "\n-- \$msg_no is $msg_no --\n";
    $overview = imap_fetch_overview($stream_id, $msg_no);
    if (!$overview) {
        echo imap_last_error() . "\n";
    } else {
        foreach($overview as $ov) {
            echo "\n";
            displayOverviewFields($ov);
        }
    }
}

// clear error stack
imap_errors();
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchoverviewvar5';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_fetch_overview() : usage variations ***
Create a temporary mailbox and add 3 msgs
New mailbox created

-- $msg_no is 0 --
Sequence out of range

-- $msg_no is 4 --
Sequence out of range

-- $msg_no is 4 --
Sequence out of range

-- $msg_no is 2 --

size is %d
uid is %d
msgno is 2
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK

-- $msg_no is 1,3 --

size is %d
uid is %d
msgno is 1
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK

size is %d
uid is %d
msgno is 3
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK

-- $msg_no is 1, 2 --
Syntax error in sequence

-- $msg_no is 1:3 --

size is %d
uid is %d
msgno is 1
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK

size is %d
uid is %d
msgno is 2
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK

size is %d
uid is %d
msgno is 3
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK
PK6X	[�:�Ċ�
bug75774.phptnu�[���--TEST--
Bug #75774 imap_append HeapCorruction
--EXTENSIONS--
imap
--FILE--
<?php

$fn = __DIR__ . DIRECTORY_SEPARATOR . "foo75774";
$var1 = fopen($fn, "w");

try {
    imap_append($var1, "", "", "", "");
} catch (\TypeError $e) {
    echo $e->getMessage() . "\n";
}

fclose($var1);
unlink($fn);

?>
--EXPECT--
imap_append(): Argument #1 ($imap) must be of type IMAP\Connection, resource given
PK6X	[KP7rrimap_body_errors.phptnu�[���--TEST--
imap_body() errors: ValueError and Warnings
--CREDITS--
Paul Sohier
#phptestfest utrecht
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox("imapbodyerror", 0);

try {
    imap_body($imap_mail_box, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}
try {
    imap_body($imap_mail_box, 1, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

// Access not existing
var_dump(imap_body($imap_mail_box, 255));
var_dump(imap_body($imap_mail_box, 255, FT_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapbodyerror';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 0 msgs
New mailbox created
imap_body(): Argument #2 ($message_num) must be greater than 0
imap_body(): Argument #3 ($flags) must be a bitmask of FT_UID, FT_PEEK, and FT_INTERNAL

Warning: imap_body(): Bad message number in %s on line %d
bool(false)

Warning: imap_body(): UID does not exist in %s on line %d
bool(false)
PK6X	[~�:}kkimap_body_uid.phptnu�[���--TEST--
imap_body() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapbodyuid", $msg_no, $uid);

var_dump(imap_body($imap_mail_box, $uid, FT_UID) === imap_body($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapbodyuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
PK6X	[��4%%imap_clearflag_full_uid.phptnu�[���--TEST--
imap_clearflag_full() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapclearflagfulluid");

/* This works on the assumption that UID message 3 to 6 inclusive are deleted. */

imap_setflag_full($imap_mail_box, '2,8,9', '\Answered', ST_UID);
imap_setflag_full($imap_mail_box, '7,10', '\Deleted', ST_UID);
imap_setflag_full($imap_mail_box, '7:9', '\Flagged', ST_UID);

// Testing individual entry
imap_clearflag_full($imap_mail_box, '10', '\Deleted', ST_UID);
// Testing multiple entries entry
imap_clearflag_full($imap_mail_box, '2,9', '\Answered', ST_UID);
// Testing entry range
imap_clearflag_full($imap_mail_box, '7:8', '\Flagged', ST_UID);


echo 'ALL: ';
var_dump(imap_search($imap_mail_box, 'ALL'));
echo 'ALL (with UID correspondance): ';
var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));
echo 'ANSWERED: ';
var_dump(imap_search($imap_mail_box, 'ANSWERED'));
echo 'DELETED: ';
var_dump(imap_search($imap_mail_box, 'DELETED'));
echo 'FLAGGED: ';
var_dump(imap_search($imap_mail_box, 'FLAGGED'));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapclearflagfulluid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
ALL: array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
ALL (with UID correspondance): array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(7)
  [3]=>
  int(8)
  [4]=>
  int(9)
  [5]=>
  int(10)
}
ANSWERED: array(1) {
  [0]=>
  int(4)
}
DELETED: array(1) {
  [0]=>
  int(3)
}
FLAGGED: array(1) {
  [0]=>
  int(5)
}
PK6X	[�]�I
bug80215.phptnu�[���--TEST--
Bug #80215 (imap_mail_compose() may modify by-val parameters)
--EXTENSIONS--
imap
--FILE--
<?php
$envelope = [
    "from" => 1,
    "to" => 2,
    "custom_headers" => [3],
];
$body = [[
    "contents.data" => 4,
    "type.parameters" => ['foo' => 5],
    "disposition" => ['bar' => 6],
], [
    "contents.data" => 7,
    "type.parameters" => ['foo' => 8],
    "disposition" => ['bar' => 9],
]];
imap_mail_compose($envelope, $body);
var_dump($envelope, $body);
?>
--EXPECT--
array(3) {
  ["from"]=>
  int(1)
  ["to"]=>
  int(2)
  ["custom_headers"]=>
  array(1) {
    [0]=>
    int(3)
  }
}
array(2) {
  [0]=>
  array(3) {
    ["contents.data"]=>
    int(4)
    ["type.parameters"]=>
    array(1) {
      ["foo"]=>
      int(5)
    }
    ["disposition"]=>
    array(1) {
      ["bar"]=>
      int(6)
    }
  }
  [1]=>
  array(3) {
    ["contents.data"]=>
    int(7)
    ["type.parameters"]=>
    array(1) {
      ["foo"]=>
      int(8)
    }
    ["disposition"]=>
    array(1) {
      ["bar"]=>
      int(9)
    }
  }
}
PK6X	[6;0���imap_final.phptnu�[���--TEST--
Check that IMAP\Connection is declared final
--EXTENSIONS--
imap
--FILE--
<?php

class T extends IMAP\Connection {}
?>
--EXPECTF--
Fatal error: Class T cannot extend final class IMAP\Connection in %s on line %d
PK7X	["��g
g
#imap_fetch_overview_variation6.phptnu�[���--TEST--
Test imap_fetch_overview() function : usage variations - multipart message
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
/*
 * Pass a multipart message to imap_fetch_overview() to test the contents of returned array
 */

echo "*** Testing imap_fetch_overview() : usage variations ***\n";

require_once __DIR__.'/setup/imap_include.inc';

$stream_id = setup_test_mailbox('imapfetchoverviewvar6', 0, $mailbox); // setup temp mailbox
create_multipart_message($stream_id, $mailbox);

// refresh msg numbers
imap_check($stream_id);
$msg_no = 1;

$a = imap_fetch_overview($stream_id, $msg_no);
echo "\n--> Object #1\n";
displayOverviewFields($a[0]);




/**
 * Create a multipart message with subparts
 *
 * @param resource $imap_stream
 * @param string $mailbox
 */
function create_multipart_message($imap_stream, $mailbox) {
    global $users, $domain;
    $envelope["from"]= "foo@anywhere.com";
    $envelope["to"]  = IMAP_USERS[0] . '@' . IMAP_MAIL_DOMAIN;
    $envelope["subject"] = "Test msg 1";

    $part1["type"] = TYPEMULTIPART;
    $part1["subtype"] = "mixed";

    $part2["type"] = TYPETEXT;
    $part2["subtype"] = "plain";
    $part2["description"] = "imap_mail_compose() function";
    $part2["contents.data"] = "message 1:xxxxxxxxxxxxxxxxxxxxxxxxxx";

    $part3["type"] = TYPETEXT;
    $part3["subtype"] = "plain";
    $part3["description"] = "Example";
    $part3["contents.data"] = "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy";

    $file_handle = fopen(__FILE__, 'r+');
    $file_size = 1;

    $part4["type"] = TYPEAPPLICATION;
    $part4["encoding"] = ENCBASE64;
    $part4["subtype"] = "octet-stream";
    $part4["description"] = 'Test';
    $part4['disposition.type'] = 'attachment';
    $part4['disposition'] = array ('filename' => 'Test');
    $part4['type.parameters'] = array('name' => 'Test');
    $part4["contents.data"] = base64_encode(fread($file_handle, 1));

    $body[1] = $part1;
    $body[2] = $part2;
    $body[3] = $part3;
    $body[4] = $part4;

    $msg = imap_mail_compose($envelope, $body);

    if (imap_append($imap_stream, $mailbox, $msg) === false) {
        echo imap_last_error() . "\n";
        echo "TEST FAILED : could not append new message to mailbox '$mailbox'\n";
        exit;
    }
}

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchoverviewvar6';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_fetch_overview() : usage variations ***
Create a temporary mailbox and add 0 msgs
New mailbox created

--> Object #1
size is %d
uid is %d
msgno is 1
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK
PK7X	[����
bug63126.phptnu�[���--TEST--
imap_open() DISABLE_AUTHENTICATOR ignores array param
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__. '/setup/imap_include.inc');

$in = @imap_open(IMAP_SERVER_DEBUG, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD, OP_HALFOPEN, 1);
if (!$in) {
    die("skip could not connect to mailbox " . IMAP_SERVER_DEBUG);
}
$kerberos = false;
if (is_array($errors = imap_errors())) {
    foreach ($errors as $err) {
        if (strstr($err, 'GSSAPI') || strstr($err, 'Kerberos')) {
            $kerberos = true;
        }
    }
}
if (!$kerberos) {
    die("skip need a GSSAPI/Kerberos aware server");
}
?>
--CONFLICTS--
defaultmailbox
--FILE--
<?php
// TODO Test Kerberos on CI
$tests = array(
    'Array'  => array('DISABLE_AUTHENTICATOR' => array('GSSAPI','NTLM')),
    'String' => array('DISABLE_AUTHENTICATOR' => 'GSSAPI'),
);
require_once(__DIR__. '/setup/imap_include.inc');
foreach ($tests as $name => $testparams) {
    echo "Test for $name\n";
    $in = imap_open(IMAP_SERVER_DEBUG, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD, OP_HALFOPEN, 1, $testparams);
    if ($in) {
        if (is_array($errors = imap_errors())) {
            foreach ($errors as $err) {
                if (strstr($err, 'GSSAPI') || strstr($err, 'Kerberos')) {
                    echo "$err\n";
                }
            }
        }
    } else {
        echo "Can't connect\n";
    }
}
echo "Done\n";
?>
--EXPECT--
Test for Array
Test for String
Done
PK7X	[��p�hhimap_binary_basic.phptnu�[���--TEST--
Test imap_binary() function : basic functionality
--EXTENSIONS--
imap
--FILE--
<?php
echo "*** Testing imap_binary() : basic functionality ***\n";

echo "Encode as short string\n";
$str = 'This is an example string to be base 64 encoded';
$base64 = imap_binary($str);
var_dump(bin2hex($base64));

echo "Encode a string which results in more than 60 charters of output\n";
$str = 'This is a long string with results in more than 60 characters of output';
$base64 = imap_binary($str);
var_dump(bin2hex($base64));

echo "Encode a string with special characters\n";
$str = '_+-={][];;@~#?/>.<,';
$base64 = imap_binary($str);
var_dump(bin2hex($base64));

echo "Encode some hexadecimal data\n";
$hex = 'x00\x01\x02\x03\x04\x05\x06\xFA\xFB\xFC\xFD\xFE\xFF';
$base64 = imap_binary($hex);
var_dump(bin2hex($base64));

?>
--EXPECT--
*** Testing imap_binary() : basic functionality ***
Encode as short string
string(136) "5647687063794270637942686269426c654746746347786c49484e30636d6c755a794230627942695a53426959584e6c49445930494756755932396b0d0a5a57513d0d0a"
Encode a string which results in more than 60 charters of output
string(200) "56476870637942706379426849477876626d6367633352796157356e4948647064476767636d567a64577830637942706269427462334a6c4948526f0d0a595734674e6a416759326868636d466a64475679637942765a694276645852776458513d0d0a"
Encode a string with special characters
string(60) "5879737450587464573130374f30422b497a3876506934384c413d3d0d0a"
Encode some hexadecimal data
string(144) "65444177584867774d5678344d444a636544417a584867774e4678344d445663654441325848684751567834526b4a6365455a4458486847524678340d0a526b566365455a470d0a"
PK7X	[�_]��imap_fetchbody_uid.phptnu�[���--TEST--
imap_fetchbody() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchbodyuid", $msg_no, $uid);

$section = '2';
var_dump(imap_fetchbody($imap_mail_box, $uid, $section, FT_UID) === imap_fetchbody($imap_mail_box, $msg_no, $section));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchbodyuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
PK7X	[�0~ك�imap_setflag_full_uid.phptnu�[���--TEST--
imap_setflag_full() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapsetflagfulluid");

/* This works on the assumption that UID message 3 to 6 inclusive are deleted. */

// Testing individual entry
imap_setflag_full($imap_mail_box, '8', '\Answered', ST_UID);

// Testing multiple entries entry
imap_setflag_full($imap_mail_box, '7,10', '\Deleted', ST_UID);

// Testing entry range
imap_setflag_full($imap_mail_box, '7:9', '\Flagged', ST_UID);

// Testing entry range invalid
var_dump(imap_setflag_full($imap_mail_box, '4:9', '\Seen', ST_UID));


echo 'ALL: ';
var_dump(imap_search($imap_mail_box, 'ALL'));
echo 'ALL (with UID correspondance): ';
var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));
echo 'ANSWERED: ';
var_dump(imap_search($imap_mail_box, 'ANSWERED'));
echo 'DELETED: ';
var_dump(imap_search($imap_mail_box, 'DELETED'));
echo 'FLAGGED: ';
var_dump(imap_search($imap_mail_box, 'FLAGGED'));
echo 'SEEN: ';
var_dump(imap_search($imap_mail_box, 'SEEN'));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapsetflagfulluid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
ALL: array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
ALL (with UID correspondance): array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(7)
  [3]=>
  int(8)
  [4]=>
  int(9)
  [5]=>
  int(10)
}
ANSWERED: array(1) {
  [0]=>
  int(4)
}
DELETED: array(2) {
  [0]=>
  int(3)
  [1]=>
  int(6)
}
FLAGGED: array(3) {
  [0]=>
  int(3)
  [1]=>
  int(4)
  [2]=>
  int(5)
}
SEEN: array(3) {
  [0]=>
  int(3)
  [1]=>
  int(4)
  [2]=>
  int(5)
}
PK7X	[�E  
bug80226.phptnu�[���--TEST--
Bug #80226 (imap_sort() leaks sortpgm memory)
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
require_once(__DIR__.'/setup/imap_include.inc');

echo "Create a new mailbox for test\n";

$stream = setup_test_mailbox("bug80226", 0);
var_dump(imap_sort($stream, SORTFROM, 0));
?>
--CLEAN--
<?php
$mailbox_suffix = 'bug80226';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a new mailbox for test
Create a temporary mailbox and add 0 msgs
New mailbox created
array(0) {
}
PK7X	[��imap_renamemailbox_basic.phptnu�[���--TEST--
imap_renamemailbox() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$stream_id = setup_test_mailbox('imaprenamemailbox1', 1);

$mailboxBaseName = IMAP_DEFAULT_MAILBOX . '.' . IMAP_MAILBOX_PHPT_PREFIX;

//commented because of bug #49901
//$ancError = error_reporting(0);
//$z = imap_renamemailbox($stream_id, $newbox.'not2', $newbox.'2');
//var_dump($z);
//error_reporting($ancError);
echo "Checking OK\n";

var_dump(imap_renamemailbox($stream_id, $mailboxBaseName . 'imaprenamemailbox1', $mailboxBaseName . 'imaprenamemailbox2'));

imap_close($stream_id);
?>
--CLEAN--
<?php
$mailbox_suffix = ['imaprenamemailbox1', 'imaprenamemailbox2'];
require_once('setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 1 msgs
New mailbox created
Checking OK
bool(true)
PK7X	[�1��==imap_setflag_full_basic.phptnu�[���--TEST--
imap_setflag_full() basic test
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox("imapsetflagfullbasic", 10);

// Testing individual entry
imap_setflag_full($imap_mail_box, '1', '\Answered');

// Testing multiple entries entry
imap_setflag_full($imap_mail_box, '2,7', '\Deleted');

// Testing entry range
imap_setflag_full($imap_mail_box, '3:5', '\Flagged');

echo 'ALL: ';
var_dump(imap_search($imap_mail_box, 'ALL'));
echo 'ANSWERED: ';
var_dump(imap_search($imap_mail_box, 'ANSWERED'));
echo 'DELETED: ';
var_dump(imap_search($imap_mail_box, 'DELETED'));
echo 'FLAGGED: ';
var_dump(imap_search($imap_mail_box, 'FLAGGED'));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapsetflagfullbasic';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
ALL: array(10) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
  [6]=>
  int(7)
  [7]=>
  int(8)
  [8]=>
  int(9)
  [9]=>
  int(10)
}
ANSWERED: array(1) {
  [0]=>
  int(1)
}
DELETED: array(2) {
  [0]=>
  int(2)
  [1]=>
  int(7)
}
FLAGGED: array(3) {
  [0]=>
  int(3)
  [1]=>
  int(4)
  [2]=>
  int(5)
}
PK7X	[X�/�**imap_lsub_basic.phptnu�[���--TEST--
imap_lsub() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
if (getenv("SKIP_ASAN")) die("xleak leak sanitizer crashes");
?>
--CONFLICTS--
defaultmailbox
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = imap_open(IMAP_DEFAULT_MAILBOX, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD) or
    die("Cannot connect to mailbox " .IMAP_DEFAULT_MAILBOX. ": " . imap_last_error());

var_dump(imap_lsub($stream_id, IMAP_DEFAULT_MAILBOX, 'ezDvfXvbvcxSerz'));


echo "Checking OK\n";

$newbox = IMAP_DEFAULT_MAILBOX . "." . IMAP_MAILBOX_PHPT_PREFIX;

imap_createmailbox($stream_id, $newbox);
imap_subscribe($stream_id, $newbox);

$z = imap_lsub($stream_id, IMAP_DEFAULT_MAILBOX, '*');

var_dump(is_array($z));

// e.g. "{127.0.0.1:143/norsh}INBOX.phpttest"
var_dump($z[0]);

imap_close($stream_id);
?>
--CLEAN--
<?php
$mailbox_suffix = '';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
bool(false)
Checking OK
bool(true)
string(%s) "{%s}%s"
PK7X	["@�MM
bug77020.phptnu�[���--TEST--
Bug #77020 (null pointer dereference in imap_mail)
--EXTENSIONS--
imap
--INI--
sendmail_path="echo >/dev/null"
--FILE--
<?php
// For Windows, set it to a string of length HOST_NAME_LEN (256) so the mail is not actually sent
ini_set("SMTP", str_repeat("A", 256));

@imap_mail('1', 1, NULL);
echo 'done'
?>
--EXPECTF--
%Adone
PK7X	[����imap_timeout_basic.phptnu�[���--TEST--
imap_timeout() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

echo "GET values:\n";
var_dump(imap_timeout(IMAP_OPENTIMEOUT));
var_dump(imap_timeout(IMAP_READTIMEOUT));
var_dump(imap_timeout(IMAP_WRITETIMEOUT));
var_dump(imap_timeout(IMAP_CLOSETIMEOUT));

echo "SET values:\n";
var_dump(imap_timeout(IMAP_OPENTIMEOUT, 10));
var_dump(imap_timeout(IMAP_READTIMEOUT, 10));
var_dump(imap_timeout(IMAP_WRITETIMEOUT, 10));

//IMAP_CLOSETIMEOUT not implemented
//var_dump(imap_timeout(IMAP_CLOSETIMEOUT, 10));

echo "CHECK values:\n";
var_dump(imap_timeout(IMAP_OPENTIMEOUT));
var_dump(imap_timeout(IMAP_READTIMEOUT));
var_dump(imap_timeout(IMAP_WRITETIMEOUT));

//IMAP_CLOSETIMEOUT not implemented
//var_dump(imap_timeout(IMAP_CLOSETIMEOUT));

?>
--EXPECTF--
GET values:
int(%d)
int(%d)
int(%d)
int(%d)
SET values:
bool(true)
bool(true)
bool(true)
CHECK values:
int(10)
int(10)
int(10)
PK7X	[K����imap_utf8.phptnu�[���--TEST--
imap_utf8() tests
--EXTENSIONS--
imap
--FILE--
<?php

var_dump(imap_utf8(""));
var_dump(imap_utf8(1));
var_dump(imap_utf8("test"));

echo "Done\n";
?>
--EXPECT--
string(0) ""
string(1) "1"
string(4) "test"
Done
PK8X	[��3�TTimap_savebody_basic.phptnu�[���--TEST--
imap_savebody() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = setup_test_mailbox('imapsavebodybasic', 1);

$file = __DIR__.'/tmpsavebody.txt';

//with URL
$z = imap_savebody($stream_id, $file, 1);
var_dump($z);
echo "Size: ".filesize($file)."\n";

//With FOPEN
$fp = fopen($file, 'w');
$z = imap_savebody($stream_id, $fp, 1);
fclose($fp);
var_dump($z);
echo "Size: ".filesize($file)."\n";

imap_close($stream_id);
?>
--CLEAN--
<?php
@unlink(__DIR__.'/tmpsavebody.txt');
$mailbox_suffix = 'imapsavebodybasic';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 1 msgs
New mailbox created
bool(true)
Size: %d
bool(true)
Size: %d
PK8X	[���simap_8bit_basic.phptnu�[���--TEST--
Test imap_8bit() function : basic functionality
--EXTENSIONS--
imap
--FILE--
<?php
echo "*** Testing imap_8bit() : basic functionality ***\n";

var_dump(imap_8bit("String with CRLF at end \r\n"));
//NB this appears to be a bug in cclient; a space at end of string should be encoded as =20
var_dump(imap_8bit("String with space at end "));
var_dump(imap_8bit("String with tabs \t\t in middle"));
var_dump(imap_8bit("String with tab at end \t"));
var_dump(imap_8bit("\x00\x01\x02\x03\x04\xfe\xff\x0a\x0d"));

?>
--EXPECT--
*** Testing imap_8bit() : basic functionality ***
string(28) "String with CRLF at end=20
"
string(25) "String with space at end "
string(33) "String with tabs =09=09 in middle"
string(26) "String with tab at end =09"
string(27) "=00=01=02=03=04=FE=FF=0A=0D"
PK8X	[3}�\��
bug46918.phptnu�[���--TEST--
Bug #46918 (imap_rfc822_parse_adrlist host part not filled in correctly)
--EXTENSIONS--
imap
--FILE--
<?php

$adds = 'ian eiloart <iane@example.ac.uk>,
      shuf6@example.ac.uk,
      blobby,
      "ian,eiloart"<ian@example.ac.uk>,
      <@example.com:foo@example.ac.uk>,
      foo@#,
      ian@-example.com,
      ian@one@two';
$add_arr = imap_rfc822_parse_adrlist($adds, 'example.com');
var_export($add_arr);

?>
--EXPECT--
array (
  0 => 
  (object) array(
     'mailbox' => 'iane',
     'host' => 'example.ac.uk',
     'personal' => 'ian eiloart',
  ),
  1 => 
  (object) array(
     'mailbox' => 'shuf6',
     'host' => 'example.ac.uk',
  ),
  2 => 
  (object) array(
     'mailbox' => 'blobby',
     'host' => 'example.com',
  ),
  3 => 
  (object) array(
     'mailbox' => 'ian',
     'host' => 'example.ac.uk',
     'personal' => 'ian,eiloart',
  ),
  4 => 
  (object) array(
     'mailbox' => 'foo',
     'host' => 'example.ac.uk',
     'adl' => '@example.com',
  ),
  5 => 
  (object) array(
     'mailbox' => 'foo',
     'host' => '#',
  ),
  6 => 
  (object) array(
     'mailbox' => 'ian',
     'host' => '-example.com',
  ),
  7 => 
  (object) array(
     'mailbox' => 'ian',
     'host' => 'one',
  ),
  8 => 
  (object) array(
     'mailbox' => 'UNEXPECTED_DATA_AFTER_ADDRESS',
     'host' => '.SYNTAX-ERROR.',
  ),
)
Notice: PHP Request Shutdown: Unexpected characters at end of address: @two (errflg=3) in Unknown on line 0
PK8X	['��imap_body_basic.phptnu�[���--TEST--
Test imap_body() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_body() : basic functionality ***\n";

require_once(__DIR__.'/setup/imap_include.inc');

echo "Create a new mailbox for test\n";
$imap_stream = setup_test_mailbox("imapbodybasic", 1);

$check = imap_check($imap_stream);
echo "Msg Count in new mailbox: ". $check->Nmsgs . "\n";

// show body for msg 1
var_dump(imap_body($imap_stream, 1));

//Access via FT_UID
var_dump(imap_body($imap_stream, 1, FT_UID));

imap_close($imap_stream);
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapbodybasic';
require_once __DIR__.'/setup/clean.inc';
?>
--EXPECTF--
*** Testing imap_body() : basic functionality ***
Create a new mailbox for test
Create a temporary mailbox and add 1 msgs
New mailbox created
Msg Count in new mailbox: 1
string(%d) "1: this is a test message, please ignore
newline%r\R?%r"
string(%d) "1: this is a test message, please ignore
newline%r\R?%r"
PK8X	[=imap_mail_copy_basic.phptnu�[���--TEST--
Test imap_mail_copy() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_mail_copy() : basic functionality ***\n";

require_once(__DIR__.'/setup/imap_include.inc');

echo "Create a new mailbox for test\n";
$imap_stream = setup_test_mailbox('copybasic', 1);

$check = imap_check($imap_stream);
echo "Msg Count in new mailbox: ". $check->Nmsgs . "\n";

var_dump(imap_mail_copy($imap_stream, '1', 'INBOX.' . IMAP_MAILBOX_PHPT_PREFIX  . 'copybasic'));

imap_close($imap_stream);
?>
--CLEAN--
<?php
$mailbox_suffix = 'copybasic';
require_once('setup/clean.inc');
?>
--EXPECT--
*** Testing imap_mail_copy() : basic functionality ***
Create a new mailbox for test
Create a temporary mailbox and add 1 msgs
New mailbox created
Msg Count in new mailbox: 1
bool(true)
PK8X	[����
bug35669.phptnu�[���--TEST--
Bug #35669 (imap_mail_compose() crashes with multipart-multiboundary-email)
--EXTENSIONS--
imap
--FILE--
<?php
$envelope["from"] = 'Santa <somewhere@northpole.gov>';
$envelope["to"]  = 'The bad smurf <bad@smurf.com>';
$envelope['date'] = 'Wed, 04 Jan 2006 19:24:43 -0500';

$multipart["type"] = TYPEMULTIPART;
$multipart["subtype"] = "MIXED";
$body[] = $multipart; //add multipart stuff

$textpart["type"] = TYPEMULTIPART;
$textpart["subtype"] = "ALTERNATIVE";
$body[] = $textpart; //add body part

$plain["type"] = TYPETEXT;
$plain["subtype"] = "PLAIN";
$plain["charset"] = "iso-8859-1";
$plain["encoding"] = ENCQUOTEDPRINTABLE;
$plain["description"] = "Plaintype part of message";
$plain['disposition'] = "inline";
$plain["contents.data"] = 'See mom, it will crash';

$body[] = $plain; //next add plain text part

$html["type"] = TYPETEXT;
$html["subtype"] = "HTML";
$html["charset"] = "iso-8859-1";
$html["encoding"] = ENCQUOTEDPRINTABLE;
$html["description"] = "HTML part of message";
$html['disposition'] = "inline";
$html["contents.data"] = 'See mom, it will <b>crash</b>';

$body[] = $html;

echo imap_mail_compose($envelope, $body);
?>
--EXPECTF--
Date: Wed, 04 Jan 2006 19:24:43 -0500
From: Santa <somewhere@northpole.gov>
To: The bad smurf <bad@smurf.com>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="%s"

--%s
Content-Type: TEXT/ALTERNATIVE; CHARSET=US-ASCII


--%s
Content-Type: TEXT/PLAIN; CHARSET=iso-8859-1
Content-Transfer-Encoding: QUOTED-PRINTABLE
Content-Description: Plaintype part of message

See mom, it will crash
--%s
Content-Type: TEXT/HTML; CHARSET=iso-8859-1
Content-Transfer-Encoding: QUOTED-PRINTABLE
Content-Description: HTML part of message

See mom, it will <b>crash</b>
--%s--
PK8X	[��R�uu	README.mdnu�[���Tests can be run manually from the top-level build dir using:

    php -n -d extension=modules/geos.so tests/001_Geometry.phpt

If you want to use valgrind, it is recommended to disable Zend
memory management:

    export USE_ZEND_ALLOC=0

And avoid unload of modules:

    export ZEND_DONT_UNLOAD_MODULES=1

Read more on https://bugs.php.net/bugs-getting-valgrind-log.php
PK8X	[պ�U==imap_undelete_basic.phptnu�[���--TEST--
imap_undelete() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = setup_test_mailbox('imapundeletebasic', 1);

imap_delete($stream_id, 1);

var_dump(imap_undelete($stream_id, 1));

imap_close($stream_id);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapundeletebasic';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 1 msgs
New mailbox created
bool(true)
PK8X	[z�\|��nil_constant.phptnu�[���--TEST--
NIL constant is deprecated
--EXTENSIONS--
imap
--FILE--
<?php
var_dump(NIL);
?>
--EXPECTF--
Deprecated: Constant NIL is deprecated in %s on line %d
int(0)
PK8X	[DvCH�� imap_fetchheader_variation5.phptnu�[���--TEST--
Test imap_fetchheader() function : usage variations - $message_num argument
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
/*
 * Pass different integers and strings as $message_num argument
 * to test behaviour of imap_fetchheader()
 */

echo "*** Testing imap_fetchheader() : usage variations ***\n";

require_once(__DIR__.'/setup/imap_include.inc');

$stream_id = setup_test_mailbox('imapfetchheadervar5', 3, $mailbox, false); // set up temp mailbox with 3 msgs

$sequences = [0, /* out of range */ 4, 1];

foreach($sequences as $message_num) {
    echo "\n-- \$message_num is $message_num --\n";
    try {
        var_dump(imap_fetchheader($stream_id, $message_num));
    } catch (\ValueError $e) {
        echo $e->getMessage() . \PHP_EOL;
    }
}

// clear error stack
imap_errors();
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchheadervar5';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_fetchheader() : usage variations ***
Create a temporary mailbox and add 3 msgs
New mailbox created

-- $message_num is 0 --
imap_fetchheader(): Argument #2 ($message_num) must be greater than 0

-- $message_num is 4 --

Warning: imap_fetchheader(): Bad message number in %s on line %d
bool(false)

-- $message_num is 1 --
string(%d) "From: foo@anywhere.com
Subject: Test msg 1
To: %s
MIME-Version: 1.0
Content-Type: MULTIPART/mixed; BOUNDARY="%s=:%d"

"
PK8X	[@�n55imap_bodystruct_basic.phptnu�[���--TEST--
Test imap_bodystruct() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing string imap_bodystruct : basic functionality ***\n";
require_once(__DIR__.'/setup/imap_include.inc');

echo "Create a new mailbox for test and add a multipart msgs\n";
$imap_stream = setup_test_mailbox("imapbodystructbasic", 1, $mailbox, "multipart");

echo "\nGet and validate structure of body part 1\n";

$m = imap_bodystruct($imap_stream, 1, "1");

$mandatoryFields = [
    'ifsubtype',
    'ifdescription',
    'ifid',
    'ifdisposition',
    'ifdparameters',
    'ifparameters',
];

function isValid($param) {
    return ($param == 0) || ($param == 1);
}

foreach($mandatoryFields as $mf) {
    if (isValid($m->$mf)) {
        echo "$mf is 0 or 1\n";
    } else {
        echo "$mf FAIL\n";
    }
}

if(is_array($m->parameters)) {
    echo "parameters is an array\n";
}

echo "\nTry to get part 4!\n";
var_dump(imap_bodystruct($imap_stream, 1, "4"));

imap_close($imap_stream);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapbodystructbasic';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
*** Testing string imap_bodystruct : basic functionality ***
Create a new mailbox for test and add a multipart msgs
Create a temporary mailbox and add 1 msgs
New mailbox created

Get and validate structure of body part 1
ifsubtype is 0 or 1
ifdescription is 0 or 1
ifid is 0 or 1
ifdisposition is 0 or 1
ifdparameters is 0 or 1
ifparameters is 0 or 1
parameters is an array

Try to get part 4!
bool(false)
PK8X	[1��^��imap_fetchstructure_errors.phptnu�[���--TEST--
imap_fetchstructure() errors: ValueError and Warnings
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox("imapfetchstructureerrors", 0);

try {
    imap_fetchstructure($imap_mail_box, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}
try {
    imap_fetchstructure($imap_mail_box, 1, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

// Access not existing
var_dump(imap_fetchstructure($imap_mail_box, 255));
var_dump(imap_fetchstructure($imap_mail_box, 255, FT_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchstructureerrors';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 0 msgs
New mailbox created
imap_fetchstructure(): Argument #2 ($message_num) must be greater than 0
imap_fetchstructure(): Argument #3 ($flags) must be FT_UID or 0

Warning: imap_fetchstructure(): Bad message number in %s on line %d
bool(false)

Warning: imap_fetchstructure(): UID does not exist in %s on line %d
bool(false)
PK8X	[���p��imap_mail_move_basic.phptnu�[���--TEST--
Test imap_mail_move() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_mail_move() : basic functionality ***\n";

require_once(__DIR__.'/setup/imap_include.inc');

echo "Create a new mailbox for test\n";
$imap_stream = setup_test_mailbox("movebasic", 1);

$check = imap_check($imap_stream);
echo "Msg Count in new mailbox: ". $check->Nmsgs . "\n";

var_dump(imap_mail_move($imap_stream, '1', 'INBOX.' . IMAP_MAILBOX_PHPT_PREFIX . 'movebasic'));

imap_close($imap_stream);
?>
--CLEAN--
<?php
$mailbox_suffix = 'movebasic';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECT--
*** Testing imap_mail_move() : basic functionality ***
Create a new mailbox for test
Create a temporary mailbox and add 1 msgs
New mailbox created
Msg Count in new mailbox: 1
bool(true)
PK8X	[�7�D��imap_savebody_errors.phptnu�[���--TEST--
imap_savebody() errors: ValueError and Warnings
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox("imapsavebodyerrors", 0);

$section = '';

try {
    imap_savebody($imap_mail_box, '', -1, $section);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}
try {
    imap_savebody($imap_mail_box, '', 1, $section, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

// Access not existing
var_dump(imap_savebody($imap_mail_box, '', 255, $section));
var_dump(imap_savebody($imap_mail_box, '', 255, $section, FT_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapsavebodyerrors';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 0 msgs
New mailbox created
imap_savebody(): Argument #3 ($message_num) must be greater than 0
imap_savebody(): Argument #5 ($flags) must be a bitmask of FT_UID, FT_PEEK, and FT_INTERNAL

Warning: imap_savebody(): Bad message number in %s on line %d
bool(false)

Warning: imap_savebody(): UID does not exist in %s on line %d
bool(false)
PK8X	[���+	+	imap_clearflag_full_basic.phptnu�[���--TEST--
Test imap_clearflag_full() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_clearflag_full() : basic functionality ***\n";

require_once(__DIR__.'/setup/imap_include.inc');

echo "Create a new mailbox for test\n";
$imap_stream = setup_test_mailbox("imapclearflagfullbasic", 10);

$check = imap_check($imap_stream);
echo "Initial msg count in new_mailbox : ". $check->Nmsgs . "\n";

echo "Set some flags\n";
var_dump(imap_setflag_full($imap_stream, "1,3", "\\Seen \\Answered"));
var_dump(imap_setflag_full($imap_stream, "2,4", "\\Answered"));
var_dump(imap_setflag_full($imap_stream, "5,7", "\\Flagged \\Deleted"));
var_dump(imap_setflag_full($imap_stream, "6,8", "\\Deleted"));
var_dump(imap_setflag_full($imap_stream, "9,10", "\\Draft \\Flagged"));

var_dump(imap_search($imap_stream, "SEEN"));
var_dump(imap_search($imap_stream, "ANSWERED"));
var_dump(imap_search($imap_stream, "FLAGGED"));
var_dump(imap_search($imap_stream, "DELETED"));

var_dump(imap_clearflag_full($imap_stream, "1,4", "\\Answered"));
var_dump(imap_clearflag_full($imap_stream, "5,6,7,8", "\\Deleted"));
var_dump(imap_clearflag_full($imap_stream, "9", "\\Flagged"));

var_dump(imap_search($imap_stream, "SEEN"));
var_dump(imap_search($imap_stream, "ANSWERED"));
var_dump(imap_search($imap_stream, "FLAGGED"));
var_dump(imap_search($imap_stream, "DELETED"));

imap_close($imap_stream);
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapclearflagfullbasic';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
*** Testing imap_clearflag_full() : basic functionality ***
Create a new mailbox for test
Create a temporary mailbox and add 10 msgs
New mailbox created
Initial msg count in new_mailbox : 10
Set some flags
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(3)
}
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}
array(4) {
  [0]=>
  int(5)
  [1]=>
  int(7)
  [2]=>
  int(9)
  [3]=>
  int(10)
}
array(4) {
  [0]=>
  int(5)
  [1]=>
  int(6)
  [2]=>
  int(7)
  [3]=>
  int(8)
}
bool(true)
bool(true)
bool(true)
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(3)
}
array(2) {
  [0]=>
  int(2)
  [1]=>
  int(3)
}
array(3) {
  [0]=>
  int(5)
  [1]=>
  int(7)
  [2]=>
  int(10)
}
bool(false)
PK8X	[���ZGGimap_sort_uid.phptnu�[���--TEST--
imap_sort() basics
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapsortbasic");

var_dump(imap_sort($imap_mail_box, SORTSUBJECT, 0));
var_dump(imap_sort($imap_mail_box, SORTSUBJECT, 0, SE_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapsortbasic';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(6)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(4)
  [5]=>
  int(5)
}
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(10)
  [2]=>
  int(2)
  [3]=>
  int(7)
  [4]=>
  int(8)
  [5]=>
  int(9)
}
PK8X	[`�*�&&imap_base64_basic.phptnu�[���--TEST--
Test imap_base64() function : basic functionality
--EXTENSIONS--
imap
--FILE--
<?php
echo "*** Testing imap_base64() : basic functionality ***\n";

$str = 'This is an example string to be base 64 encoded';
$base64 = base64_encode($str);
if (imap_base64($base64) == $str) {
    echo "TEST PASSED\n";
} else {
    echo "TEST FAILED";
}

$str = '!£$%^&*()_+-={][];;@~#?/>.<,';
$base64 = base64_encode($str);
if (imap_base64($base64) == $str) {
    echo "TEST PASSED\n";
} else {
    echo "TEST FAILED";
}

$hex = 'x00\x01\x02\x03\x04\x05\x06\xFA\xFB\xFC\xFD\xFE\xFF';
$base64 = base64_encode($hex);
if (imap_base64($base64) == $hex) {
    echo "TEST PASSED\n";
} else {
    echo "TEST FAILED";
}

?>
--EXPECT--
*** Testing imap_base64() : basic functionality ***
TEST PASSED
TEST PASSED
TEST PASSED
PK9X	[�;d��imap_fetchstructure_uid.phptnu�[���--TEST--
imap_fetchstructure() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchstructureuid", $msg_no, $uid);

// Usage of == because comparing objects
var_dump(imap_fetchstructure($imap_mail_box, $uid, FT_UID) == imap_fetchstructure($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchstructureuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
PK9X	[�^���imap_fetchmime_uid.phptnu�[���--TEST--
imap_fetchmime() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchmimeuid", $msg_no, $uid);

$section = '2';
var_dump(imap_fetchbody($imap_mail_box, $uid, $section, FT_UID) === imap_fetchbody($imap_mail_box, $msg_no, $section));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchmimeuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
PK9X	[���й�imap_delete_uid.phptnu�[���--TEST--
imap_delete() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapdeleteuid", $msg_no, $uid);

imap_delete($imap_mail_box, $uid, FT_UID);
var_dump(imap_search($imap_mail_box, 'DELETED', SE_UID));
imap_expunge($imap_mail_box);

echo 'After expunging: ';
var_dump(imap_search($imap_mail_box, 'DELETED', SE_UID));

var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapdeleteuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
array(1) {
  [0]=>
  int(9)
}
After expunging: bool(false)
array(5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(7)
  [3]=>
  int(8)
  [4]=>
  int(10)
}
PK9X	[C���%	%	imap_headerinfo_basic.phptnu�[���--TEST--
imap_headerinfo() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = setup_test_mailbox('imapheaderinfobasic', 1);

$z = imap_headerinfo($stream_id, 1);

$fields = array ('toaddress','to','fromaddress','from',
'reply_toaddress','reply_to',
    'senderaddress', 'sender',
'subject','Subject',
    'Recent','Unseen','Flagged','Answered','Deleted','Draft',
    'Msgno','MailDate','Size','udate');

echo "Check general fields\n";
foreach ($fields as $key) {
    var_dump(isset($z->$key));
}

echo "Check type\n";
var_dump($z->toaddress);
var_dump($z->fromaddress);
var_dump($z->reply_toaddress);
var_dump($z->senderaddress);
var_dump($z->subject);
var_dump($z->Subject);

if ($z->Recent == 'R' || $z->Recent == 'N' || $z->Recent == ' ') {
    echo "Recent: OK";
} else {
    echo "Recent: error: ".$z->Recent;
}
echo "\n";

if ($z->Unseen == 'U' || $z->Unseen == ' ') {
    echo "Unseen: OK";
} else {
    echo "Unseen: error: ".$z->Unseen;
}
echo "\n";

if ($z->Flagged == 'F' || $z->Flagged == ' ') {
    echo "Flagged: OK";
} else {
    echo "Flagged: error: ".$z->Flagged;
}
echo "\n";

if ($z->Answered == 'A' || $z->Answered == ' ') {
    echo "Answered: OK";
} else {
    echo "Answered: error";
}
echo "\n";

if ($z->Deleted == 'D' || $z->Deleted == ' ') {
    echo "Deleted: OK";
} else {
    echo "Deleted: error";
}
echo "\n";

if ($z->Draft == 'X' || $z->Draft == ' ') {
    echo "Draft: OK";
} else {
    echo "Draft: error";
}
echo "\n";

var_dump($z->Msgno);
var_dump($z->Size);
var_dump($z->udate);

imap_close($stream_id);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapheaderinfobasic';
require_once('setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 1 msgs
New mailbox created
Check general fields
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
Check type
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
Recent: OK
Unseen: OK
Flagged: OK
Answered: OK
Deleted: OK
Draft: OK
string(%d) "%s"
string(%d) "%d"
int(%d)
PK9X	[�3���imap_list_basic.phptnu�[���--TEST--
imap_list() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = imap_open(IMAP_DEFAULT_MAILBOX, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD) or
    die("Cannot connect to mailbox " .IMAP_DEFAULT_MAILBOX.": " . imap_last_error());

imap_list($stream_id, IMAP_DEFAULT_MAILBOX,'ezerz');


$z = imap_list($stream_id, IMAP_DEFAULT_MAILBOX,'*');
var_dump(is_array($z));

// e.g. "{127.0.0.1:143/norsh}INBOX"
var_dump($z[0]);

imap_close($stream_id);
?>
--EXPECTF--
bool(true)
string(%s) "{%s}%s"
PK9X	[��h�imap_open_error.phptnu�[���--TEST--
imap_open() ValueErrors
--CREDITS--
Paul Sohier
#phptestfest utrecht
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
if (getenv("SKIP_ASAN")) die("xleak leak sanitizer crashes");
?>
--FILE--
<?php

echo "Checking with incorrect parameters\n" ;
imap_open('', '', '');

try {
    imap_open('', '', '', -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

try {
    imap_open('', '', '', 0, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

?>
--EXPECTF--
Checking with incorrect parameters

Warning: imap_open(): Couldn't open stream  in %s on line %d
imap_open(): Argument #4 ($flags) must be a bitmask of the OP_* constants, and CL_EXPUNGE
imap_open(): Argument #5 ($retries) must be greater than or equal to 0

Notice: PHP Request Shutdown: Can't open mailbox : no such mailbox (errflg=2) in Unknown on line 0
PK9X	[6G6L��imap_fetchbody_errors.phptnu�[���--TEST--
imap_fetchbody() errors: ValueError and Warnings
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox("imapfetchbodyerrors", 0);

$section = '';

try {
    imap_fetchbody($imap_mail_box, -1, $section);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}
try {
    imap_fetchbody($imap_mail_box, 1, $section, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

// Access not existing
var_dump(imap_fetchbody($imap_mail_box, 255, $section));
var_dump(imap_fetchbody($imap_mail_box, 255, $section, FT_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchbodyerrors';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 0 msgs
New mailbox created
imap_fetchbody(): Argument #2 ($message_num) must be greater than 0
imap_fetchbody(): Argument #4 ($flags) must be a bitmask of FT_UID, FT_PEEK, and FT_INTERNAL

Warning: imap_fetchbody(): Bad message number in %s on line %d
bool(false)

Warning: imap_fetchbody(): UID does not exist in %s on line %d
bool(false)
PK9X	[�jv��imap_fetchheader_uid.phptnu�[���--TEST--
imap_fetchheader() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchheaderuid", $msg_no, $uid);

var_dump(imap_fetchheader($imap_mail_box, $uid, FT_UID) === imap_fetchheader($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchheaderuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
PK9X	[@֊/
bug80438.phptnu�[���--TEST--
Bug #80438: imap_msgno() incorrectly warns and return false on valid UIDs in PHP 8.0.0
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once __DIR__.'/setup/imap_include.inc';

// create a new mailbox and add 10 new messages to it
$mail_box = setup_test_mailbox_for_uid_tests('bug80438');

$message_number_array = imap_search($mail_box, 'ALL', SE_UID);

var_dump($message_number_array);

foreach ($message_number_array as $message_unique_id)
{
    echo 'Unique ID: ';
    var_dump($message_unique_id);
    echo 'Ordered message number: ';
    var_dump(imap_msgno($mail_box, $message_unique_id));
}

imap_close($mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'bug80438';
require_once __DIR__.'/setup/clean.inc';
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(7)
  [3]=>
  int(8)
  [4]=>
  int(9)
  [5]=>
  int(10)
}
Unique ID: int(1)
Ordered message number: int(1)
Unique ID: int(2)
Ordered message number: int(2)
Unique ID: int(7)
Ordered message number: int(3)
Unique ID: int(8)
Ordered message number: int(4)
Unique ID: int(9)
Ordered message number: int(5)
Unique ID: int(10)
Ordered message number: int(6)
PK9X	[��Jz]]
bug80242.phptnu�[���--TEST--
Bug #80242 (imap_mail_compose() segfaults for multipart with rfc822)
--EXTENSIONS--
imap
--FILE--
<?php
$bodies = [[
    'type' => TYPEMULTIPART,
], [
    'type' => TYPETEXT,
    'contents.data' => 'some text',
], [
    'type' => TYPEMESSAGE,
    'subtype' => 'RFC822',
]];
imap_mail_compose([], $bodies);
echo "done\n";
?>
--EXPECT--
done
PK9X	[�ʞ
bug80800.phptnu�[���--TEST--
Bug #80800: imap_open() fails when the flags parameter includes CL_EXPUNGE
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once __DIR__.'/setup/imap_include.inc';

$mail_box = imap_open(IMAP_DEFAULT_MAILBOX, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD, flags: CL_EXPUNGE);
var_dump(imap_reopen($mail_box, IMAP_DEFAULT_MAILBOX, flags: CL_EXPUNGE));
imap_close($mail_box);

echo 'Connected without any issues', "\n";

?>
--EXPECT--
bool(true)
Connected without any issues
PK9X	[,�е77
bug40854.phptnu�[���--TEST--
Bug #40854 (imap_mail_compose() creates an invalid terminator for multipart e-mails)
--EXTENSIONS--
imap
--FILE--
<?php
$envelope["from"]= "joe@example.com";
$envelope["to"]  = "foo@example.com";
$envelope["cc"]  = "bar@example.com";

$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";

$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream";
$part2["description"] = 'a.txt';
$part2["contents.data"] = '';

$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "description3";
$part3["contents.data"] = "contents.data3\n\n\n\t";

$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;

echo imap_mail_compose($envelope, $body);
?>
--EXPECTF--
From: joe@example.com
To: foo@example.com
cc: bar@example.com
MIME-Version: 1.0
Content-Type: MULTIPART/mixed; BOUNDARY="%s"

--%s
Content-Type: APPLICATION/octet-stream
Content-Transfer-Encoding: BASE64
Content-Description: a.txt



--%s
Content-Type: TEXT/plain; CHARSET=US-ASCII
Content-Description: description3

contents.data3


	
--%s--
PK9X	[��`77bug31142_1.phptnu�[���--TEST--
Bug #31142 test #1 (imap_mail_compose() generates incorrect output)
--EXTENSIONS--
imap
--FILE--
<?php

$envelope["from"]= "joe@example.com";
$envelope["to"]  = "foo@example.com";
$envelope["cc"]  = "bar@example.com";

$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";

$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream";
$part2["description"] = "some file";
$part2["contents.data"] = "ABC";

$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "description3";
$part3["contents.data"] = "contents.data3\n\n\n\t";

$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;

echo imap_mail_compose($envelope, $body);

?>
--EXPECTF--
From: joe@example.com
To: foo@example.com
cc: bar@example.com
MIME-Version: 1.0
Content-Type: MULTIPART/mixed; BOUNDARY="%s"

--%s
Content-Type: APPLICATION/octet-stream
Content-Transfer-Encoding: BASE64
Content-Description: some file

QUJD

--%s
Content-Type: TEXT/plain; CHARSET=US-ASCII
Content-Description: description3

contents.data3


	
--%s--
PK:X	[ES%% imap_reopen_with_cl_expunge.phptnu�[���--TEST--
Test imap_reopen() using the CL_EXPUNGE flag
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

// include file for required variables in imap_open()
require_once(__DIR__.'/setup/imap_include.inc');

$mailbox_suffix = 'imapreopenwithclexpunge';

// set up temp mailbox with 3 messages
$stream_id = setup_test_mailbox($mailbox_suffix , 3, $mailbox);

var_dump(imap_reopen($stream_id, IMAP_DEFAULT_MAILBOX . '.' . IMAP_MAILBOX_PHPT_PREFIX . $mailbox_suffix, flags: CL_EXPUNGE));

// mark messages in inbox for deletion
for ($i = 1; $i < 4; $i++) {
    imap_delete($stream_id, $i);
}

echo "\n-- Call to imap_close() --\n";
var_dump( imap_close($stream_id) );

// check that CL_EXPUNGE in previous imap_reopen() call worked
$stream_id = imap_open($mailbox, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD);
echo "There are now " . imap_num_msg($stream_id) . " msgs in mailbox '$mailbox'\n";

// Close connection
var_dump( imap_close($stream_id) );
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapreopenwithclexpunge';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 3 msgs
New mailbox created
bool(true)

-- Call to imap_close() --
bool(true)
There are now 0 msgs in mailbox '%sINBOX.phpttestimapreopenwithclexpunge'
bool(true)
PK:X	[+�jK
bug77153.phptnu�[���--TEST--
Bug #77153 (imap_open allows to run arbitrary shell commands via mailbox parameter)
--EXTENSIONS--
imap
--CONFLICTS--
defaultmailbox
--FILE--
<?php
$payload = "echo 'BUG'> " . __DIR__ . '/__bug';
$payloadb64 = base64_encode($payload);
$server = "x -oProxyCommand=echo\t$payloadb64|base64\t-d|sh}";
@imap_open('{'.$server.':143/imap}INBOX', '', '');
// clean
imap_errors();
var_dump(file_exists(__DIR__ . '/__bug'));
?>
--EXPECT--
bool(false)
--CLEAN--
<?php
if(file_exists(__DIR__ . '/__bug')) unlink(__DIR__ . '/__bug');
?>
PK:X	[H�,���imap_createmailbox_basic.phptnu�[���--TEST--
Test imap_createmailbox() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once __DIR__.'/setup/skipif.inc';
?>
--FILE--
<?php
echo "*** Testing imap_createmailbox() : basic functionality ***\n";

require_once __DIR__.'/setup/imap_include.inc';

$imap_stream = setup_test_mailbox("imapcreatemailboxbasic", 0);

$newname = "phpnewbox";

echo "Newname will be '$newname'\n";

$newbox = imap_utf7_encode(IMAP_SERVER.$newname);
if (imap_createmailbox($imap_stream, $newbox)) {

    echo "Add a couple of msgs to '$newname' mailbox\n";
    populate_mailbox($imap_stream, $newbox, 2);

    $status = imap_status($imap_stream, $newbox, SA_ALL);
    if ($status) {
        echo "Your new mailbox '$newname' has the following status:\n";
        echo "Messages:    " . $status->messages    . "\n";
        echo "Recent:      " . $status->recent      . "\n";
        echo "Unseen:      " . $status->unseen      . "\n";
        echo "UIDnext:     " . $status->uidnext     . "\n";
        echo "UIDvalidity: " . $status->uidvalidity . "\n";

    } else {
        echo "imap_status on new mailbox failed: " . imap_last_error() . "\n";
    }

    if (imap_deletemailbox($imap_stream, $newbox)) {
        echo "Mailbox '$newname' removed to restore initial state\n";
    } else {
        echo "imap_deletemailbox on new mailbox failed: " . implode("\n", imap_errors()) . "\n";
    }

} else {
    echo "could not create new mailbox: " . implode("\n", imap_errors()) . "\n";
}

imap_close($imap_stream);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapcreatemailboxbasic';
require_once __DIR__ . '/setup/clean.inc';
?>
--EXPECTF--
*** Testing imap_createmailbox() : basic functionality ***
Create a temporary mailbox and add 0 msgs
New mailbox created
Newname will be 'phpnewbox'
Add a couple of msgs to 'phpnewbox' mailbox
Your new mailbox 'phpnewbox' has the following status:
Messages:    2
Recent:      2
Unseen:      2
UIDnext:     %d
UIDvalidity: %d
Mailbox 'phpnewbox' removed to restore initial state
PK:X	[x���ZZ
bug64076.phptnu�[���--TEST--
Bug #64076 (imap_sort() does not return FALSE on failure)
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once __DIR__ . '/setup/skipif.inc';
?>
--FILE--
<?php
require_once __DIR__ . '/setup/imap_include.inc';
$stream = setup_test_mailbox('bug64076', 2);
imap_errors(); // clear error stack
var_dump(imap_sort($stream, SORTFROM, 0, 0, 'UNSUPPORTED SEARCH CRITERIUM'));
var_dump(imap_errors() !== false);
?>
--CLEAN--
<?php
$mailbox_suffix = 'bug64076';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 2 msgs
New mailbox created
bool(false)
bool(true)
PK:X	[M�k���$imap_rfc822_write_address_basic.phptnu�[���--TEST--
imap_rfc822_write_address() : basic functionality
--EXTENSIONS--
imap
--FILE--
<?php
var_dump(imap_rfc822_write_address('me', 'example.com', 'My Name'));
?>
--EXPECT--
string(24) "My Name <me@example.com>"
PK:X	[�-]OObug31142_2.phptnu�[���--TEST--
Bug #31142 test #2 (imap_mail_compose() generates incorrect output)
--EXTENSIONS--
imap
--FILE--
<?php
$envelope["from"]= 'host@domain.com';
$envelope["return_path"]= 'host@domain.com';

$part1["type"]=TYPETEXT;
$part1["subtype"]="plain";
$part1["encoding"]=ENCQUOTEDPRINTABLE ;
$part1["charset"]='iso-8859-2';
$part1["contents.data"]=imap_8bit('asn řkl');

$body = array($part1);

echo imap_mail_compose($envelope, $body);
?>
--EXPECT--
From: host@domain.com
MIME-Version: 1.0
Content-Type: TEXT/plain; CHARSET=iso-8859-2
Content-Transfer-Encoding: QUOTED-PRINTABLE

asn =C5=99kl
PK:X	[��~~imap_open_with_cl_expunge.phptnu�[���--TEST--
Test imap_open() using the CL_EXPUNGE flag
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

// include file for required variables in imap_open()
require_once(__DIR__.'/setup/imap_include.inc');

// set up temp mailbox with 3 messages
$stream_id = setup_test_mailbox('imapopenwithclexpunge', 3, $mailbox, flags: CL_EXPUNGE);

// mark messages in inbox for deletion
for ($i = 1; $i < 4; $i++) {
    imap_delete($stream_id, $i);
}

echo "\n-- Call to imap_close() --\n";
var_dump( imap_close($stream_id) );

// check that CL_EXPUNGE in previous imap_open() call worked
$stream_id = imap_open($mailbox, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD);
echo "There are now " . imap_num_msg($stream_id) . " msgs in mailbox '$mailbox'\n";

// Close connection
var_dump( imap_close($stream_id) );
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapopenwithclexpunge';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 3 msgs
New mailbox created

-- Call to imap_close() --
bool(true)
There are now 0 msgs in mailbox '%sINBOX.phpttestimapopenwithclexpunge'
bool(true)
PK:X	[PsCtimap_mutf7_to_utf8.phptnu�[���--TEST--
imap_mutf7_to_utf8
--EXTENSIONS--
imap
--SKIPIF--
<?php
// The underlying imap_mutf7_to_utf8 function can be missing; there's a
// ./configure check for it that disables the corresponding PHP function.
if (!function_exists('imap_mutf7_to_utf8')) {
    die("skip no imap_mutf7_to_utf8 function");
}
?>
--FILE--
<?php

var_dump(imap_mutf7_to_utf8(""));
var_dump(imap_mutf7_to_utf8(1));
var_dump(imap_mutf7_to_utf8("t&AOQ-st"));

echo "Done\n";
?>
--EXPECT--
string(0) ""
string(1) "1"
string(5) "täst"
Done
PK:X	[���L��imap_fetchmime_errors.phptnu�[���--TEST--
imap_fetchmime() errors: ValueError and Warnings
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox("imapfetchmimeerrors", 0);

$section = '';

try {
    imap_fetchmime($imap_mail_box, -1, $section);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}
try {
    imap_fetchmime($imap_mail_box, 1, $section, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

// Access not existing
var_dump(imap_fetchmime($imap_mail_box, 255, $section));
var_dump(imap_fetchmime($imap_mail_box, 255, $section, FT_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchmimeerrors';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 0 msgs
New mailbox created
imap_fetchmime(): Argument #2 ($message_num) must be greater than 0
imap_fetchmime(): Argument #4 ($flags) must be a bitmask of FT_UID, FT_PEEK, and FT_INTERNAL

Warning: imap_fetchmime(): Bad message number in %s on line %d
bool(false)

Warning: imap_fetchmime(): UID does not exist in %s on line %d
bool(false)
PK:X	[_��imap_utf8_to_mutf7_basic.phptnu�[���--TEST--
imap_utf8_to_mutf7
--EXTENSIONS--
imap
--SKIPIF--
<?php
// The underlying imap_utf8_to_mutf7 function can be missing; there's a
// ./configure check for it that disables the corresponding PHP function.
if (!function_exists('imap_utf8_to_mutf7')) {
    die("skip no imap_utf8_to_mutf7 function");
}
?>
--FILE--
<?php

var_dump(imap_utf8_to_mutf7(""));
var_dump(imap_utf8_to_mutf7(1));
var_dump(imap_utf8_to_mutf7("täst"));

echo "Done\n";
?>
--EXPECT--
string(0) ""
string(1) "1"
string(8) "t&AOQ-st"
Done
PK:X	[`CF|ppbug80710_1.phptnu�[���--TEST--
Bug #80710 (imap_mail_compose() header injection) - MIME Splitting Attack
--EXTENSIONS--
imap
--FILE--
<?php
$envelope["from"]= "joe@example.com\n From : X-INJECTED";
$envelope["to"]  = "foo@example.com\nFrom: X-INJECTED";
$envelope["cc"]  = "bar@example.com\nFrom: X-INJECTED";
$envelope["subject"]  = "bar@example.com\n\n From : X-INJECTED";
$envelope["x-remail"]  = "bar@example.com\nFrom: X-INJECTED";
$envelope["something"]  = "bar@example.com\nFrom: X-INJECTED";

$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";

$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream\nContent-Type: X-INJECTED";
$part2["description"] = "some file\nContent-Type: X-INJECTED";
$part2["contents.data"] = "ABC\nContent-Type: X-INJECTED";

$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "description3";
$part3["contents.data"] = "contents.data3\n\n\n\t";

$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;

echo imap_mail_compose($envelope, $body);
?>
--EXPECTF--
Warning: imap_mail_compose(): header injection attempt in from in %s on line %d
PK:X	[��)1�	�	imap_close_variation4.phptnu�[���--TEST--
Test imap_close() function : usage variations - different ints as $flags arg
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
/*
 * Pass different integers as $flags arg to imap_close() to test which are
 * recognised as CL_EXPUNGE option
 */

echo "*** Testing imap_close() : usage variations ***\n";

require_once(__DIR__.'/setup/imap_include.inc');

$inputs = array (0, 3.2768e4, -32768, PHP_INT_MAX, -PHP_INT_MAX);

$stream_id = setup_test_mailbox('imapclosevar4', 3, $mailbox); // set up temp mailbox with 3 messages

// loop through each element of $inputs to check the behavior of imap_close()
$iterator = 1;
foreach($inputs as $input) {

    // mark added messages for deletion
    for ($i = 1; $i < 4; $i++) {
        imap_delete($stream_id, $i);
    }
    echo "\n-- Iteration $iterator --\n";
    try {
        var_dump( $check = imap_close($stream_id, $input) );
    } catch (\ValueError $e) {
        echo $e->getMessage() . \PHP_EOL;
        $check = false;
    }

    // check that imap_close was successful, if not call imap_close and explicitly set CL_EXPUNGE
    if(false === $check) {
        imap_close($stream_id, CL_EXPUNGE);
    } else {
        // if imap_close was successful test whether CL_EXPUNGE was set by doing a message count
        $imap_stream = imap_open($mailbox, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD);
        $num_msg = imap_num_msg($imap_stream);
        if ($num_msg != 0) {
            echo "CL_EXPUNGE was not set, $num_msg msgs in mailbox\n";
        } else {
            echo "CL_EXPUNGE was set\n";
        }
        // call imap_close with CL_EXPUNGE explicitly set in case mailbox not empty
        imap_close($imap_stream, CL_EXPUNGE);
    }
    $iterator++;

    // get $stream_id for next iteration
    $stream_id = imap_open($mailbox, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD);
    populate_mailbox($stream_id, $mailbox, 3);

};
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapclosevar4';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECT--
*** Testing imap_close() : usage variations ***
Create a temporary mailbox and add 3 msgs
New mailbox created

-- Iteration 1 --
bool(true)
CL_EXPUNGE was not set, 3 msgs in mailbox

-- Iteration 2 --
bool(true)
CL_EXPUNGE was set

-- Iteration 3 --
imap_close(): Argument #2 ($flags) must be CL_EXPUNGE or 0

-- Iteration 4 --
imap_close(): Argument #2 ($flags) must be CL_EXPUNGE or 0

-- Iteration 5 --
imap_close(): Argument #2 ($flags) must be CL_EXPUNGE or 0
PK;X	["o'���imap_fetchbody_basic.phptnu�[���--TEST--
Test imap_fetchbody() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
/*           [, int $options])
 * Description: Get a specific body section
 * Source code: ext/imap/php_imap.c
 */

echo "*** Testing imap_fetchbody() : basic functionality ***\n";
require_once(__DIR__.'/setup/imap_include.inc');

// Initialise all required variables

// set up mailbox with one message
$stream_id = setup_test_mailbox('imapfetchbodybasic', 1, $mailbox, false);

$msg_no = 1;
$section = '2';
$options = array ('FT_UID' => FT_UID, 'FT_PEEK' => FT_PEEK, 'FT_INTERNAL' => FT_INTERNAL);

// Calling imap_fetchbody() with all possible arguments
echo "\n-- All possible arguments --\n";
foreach ($options as $key => $option) {
    echo "-- Option is $key --\n";
    switch ($key) {

        case 'FT_UID';
        $msg_uid = imap_uid($stream_id, $msg_no);
        var_dump( imap_fetchbody($stream_id, $msg_uid, $section, $option) );
        break;

        case 'FT_PEEK';
        var_dump( imap_fetchbody($stream_id, $msg_no, $section, $option) );
        $overview = imap_fetch_overview($stream_id, 1);
        echo "Seen Flag: ";
        var_dump( $overview[0]->seen );
        break;

        case 'FT_INTERNAL';
        var_dump( imap_fetchbody($stream_id, $msg_no, $section, $option) );
        break;

    }
}

// Calling imap_fetchbody() with mandatory arguments
echo "\n-- Mandatory arguments --\n";
var_dump( imap_fetchbody($stream_id, $msg_no, $section) );
$overview = imap_fetch_overview($stream_id, 1);
echo "Seen Flag: ";
var_dump( $overview[0]->seen );
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchbodybasic';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_fetchbody() : basic functionality ***
Create a temporary mailbox and add 1 msgs
New mailbox created

-- All possible arguments --
-- Option is FT_UID --
string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy"
-- Option is FT_PEEK --
string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy"
Seen Flag: int(%d)
-- Option is FT_INTERNAL --
string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy"

-- Mandatory arguments --
string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy"
Seen Flag: int(%d)
PK;X	[4�``bug45705_2.phptnu�[���--TEST--
Bug #45705 test #2 (imap rfc822_parse_adrlist() modifies passed address parameter)
--EXTENSIONS--
imap
--FILE--
<?php

$envelope = array('return_path' => 'John Doe <john@example.com>',
                  'from'        => 'John Doe <john@example.com>',
                  'reply_to'    => 'John Doe <john@example.com>',
                  'to'          => 'John Doe <john@example.com>',
                  'cc'          => 'John Doe <john@example.com>',
                  'bcc'         => 'John Doe <john@example.com>',
);

var_dump($envelope);
imap_mail_compose($envelope, [1 => ['cc' => 'Steve Doe <steve@example.com>',]]);
var_dump($envelope);

?>
--EXPECT--
array(6) {
  ["return_path"]=>
  string(27) "John Doe <john@example.com>"
  ["from"]=>
  string(27) "John Doe <john@example.com>"
  ["reply_to"]=>
  string(27) "John Doe <john@example.com>"
  ["to"]=>
  string(27) "John Doe <john@example.com>"
  ["cc"]=>
  string(27) "John Doe <john@example.com>"
  ["bcc"]=>
  string(27) "John Doe <john@example.com>"
}
array(6) {
  ["return_path"]=>
  string(27) "John Doe <john@example.com>"
  ["from"]=>
  string(27) "John Doe <john@example.com>"
  ["reply_to"]=>
  string(27) "John Doe <john@example.com>"
  ["to"]=>
  string(27) "John Doe <john@example.com>"
  ["cc"]=>
  string(27) "John Doe <john@example.com>"
  ["bcc"]=>
  string(27) "John Doe <john@example.com>"
}
PK;X	[?���imap_search_basic.phptnu�[���--TEST--
imap_search() with unique ID (SE_UID) flag
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapsearchuid");

var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapsearchuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(7)
  [3]=>
  int(8)
  [4]=>
  int(9)
  [5]=>
  int(10)
}
PK;X	[�|��
bug32589.phptnu�[���--TEST--
Bug #32589 (crash inside imap_mail_compose() function)
--EXTENSIONS--
imap
--FILE--
<?php
$m_envelope["To"] = "mail@example.com";
$m_part1["type"] = TYPEMULTIPART;
$m_part1["subtype"] = "mixed";
$m_part2["type"] = TYPETEXT;
$m_part2["subtype"] = "plain";
$m_part2["description"] = "text_message";

$m_part2["charset"] = "ISO-8859-2";

$m_part2["contents.data"] = "hello";
$m_body[1] = $m_part1;
$m_body[2] = $m_part2;
echo imap_mail_compose($m_envelope, $m_body);
?>
--EXPECTF--
MIME-Version: 1.0
Content-Type: MULTIPART/mixed; BOUNDARY="%s"

%s
Content-Type: TEXT/plain; CHARSET=ISO-8859-2
Content-Description: text_message

hello
%s
PK;X	['.b&&imap_constructor.phptnu�[���--TEST--
Attempt to instantiate an IMAP\Connection directly
--EXTENSIONS--
imap
--FILE--
<?php

try {
    new IMAP\Connection();
} catch (Error $ex) {
    echo "Exception: ", $ex->getMessage(), "\n";
}
?>
--EXPECT--
Exception: Cannot directly construct IMAP\Connection, use imap_open() instead
PK;X	[ż=��$imap_rfc822_parse_headers_basic.phptnu�[���--TEST--
imap_rfc822_parse_headers() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = setup_test_mailbox('imaprfc822parseheadersbasic', 1);

$z = imap_headerinfo($stream_id, 1);

$fields = array ('toaddress','to','fromaddress','from',
'reply_toaddress','reply_to',
    'senderaddress', 'sender',
'subject','Subject',
    'MailDate','Size','udate');


echo "Check general fields\n";
foreach ($fields as $key) {
    var_dump(isset($z->$key));
}

echo "Check type\n";
var_dump($z->toaddress);
var_dump($z->fromaddress);
var_dump($z->reply_toaddress);
var_dump($z->senderaddress);
var_dump($z->subject);
var_dump($z->Subject);

if ($z->Recent == 'R' || $z->Recent == 'N' || $z->Recent == ' ') {
    echo "Recent: OK";
} else {
    echo "Recent: error";
}
echo "\n";

if ($z->Unseen == 'U' || $z->Unseen == ' ') {
    echo "Unseen: OK";
} else {
    echo "Unseen: error";
}
echo "\n";

if ($z->Flagged == 'F' || $z->Flagged == ' ') {
    echo "Flagged: OK";
} else {
    echo "Flagged: error";
}
echo "\n";

if ($z->Answered == 'A' || $z->Answered == ' ') {
    echo "Answered: OK";
} else {
    echo "Answered: error";
}
echo "\n";

if ($z->Deleted == 'D' || $z->Deleted == ' ') {
    echo "Deleted: OK";
} else {
    echo "Deleted: error";
}
echo "\n";

if ($z->Draft == 'X' || $z->Draft == ' ') {
    echo "Draft: OK";
} else {
    echo "Draft: error";
}
echo "\n";

var_dump($z->Msgno);
var_dump($z->Size);
var_dump($z->udate);

imap_close($stream_id);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imaprfc822parseheadersbasic';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 1 msgs
New mailbox created
Check general fields
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
Check type
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
string(%d) "%s"
Recent: OK
Unseen: OK
Flagged: OK
Answered: OK
Deleted: OK
Draft: OK
string(%d) "%s"
string(%d) "%d"
int(%d)
PK;X	[Ss����imap_getsubscribed_basic.phptnu�[���--TEST--
imap_getsubscribed() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
if (getenv("SKIP_ASAN")) die("xleak asan chokes on this: 'LeakSanitizer does not work under ptrace (strace, gdb, etc)'");
?>
--CONFLICTS--
defaultmailbox
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = imap_open(IMAP_DEFAULT_MAILBOX, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD) or
    die("Cannot connect to mailbox ". IMAP_DEFAULT_MAILBOX. ": " . imap_last_error());

var_dump(imap_getsubscribed($stream_id, IMAP_DEFAULT_MAILBOX, 'ezDvfXvbvcxSerz'));


echo "Checking OK\n";

$newbox = IMAP_DEFAULT_MAILBOX . "." . IMAP_MAILBOX_PHPT_PREFIX;

imap_createmailbox($stream_id, $newbox);
imap_subscribe($stream_id, $newbox);

$z = imap_getsubscribed($stream_id, IMAP_DEFAULT_MAILBOX, '*');

var_dump(is_array($z));
var_dump($z[0]);

imap_close($stream_id);
?>
--CLEAN--
<?php
$mailbox_suffix = '';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
bool(false)
Checking OK
bool(true)
object(stdClass)#%d (%d) {
  [%sname"]=>
  string(%d) "{%s}%s"
  [%sattributes"]=>
  int(%d)
  [%sdelimiter"]=>
  string(%d) "%s"
}
PK;X	[ka����imap_gc_error.phptnu�[���--TEST--
imap_gc() ValueError
--CREDITS--
Paul Sohier
#phptestfest utrecht
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = setup_test_mailbox('imapgcerror', 1);

try {
    imap_gc($stream_id, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapgcerror';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 1 msgs
New mailbox created
imap_gc(): Argument #2 ($flags) must be a bitmask of IMAP_GC_TEXTS, IMAP_GC_ELT, and IMAP_GC_ENV
PK;X	[��)��
bug80213.phptnu�[���--TEST--
Bug #80213 (imap_mail_compose() segfaults on certain $bodies)
--EXTENSIONS--
imap
--FILE--
<?php
$envelope = [];
$body = [[
    'type.parameters' => ['param'],
    'disposition' => ['disp'],
], [
    'type.parameters' => ['param'],
    'disposition' => ['disp'],
]];
var_dump(imap_mail_compose($envelope, $body));
echo "done\n";
?>
--EXPECT--
string(67) "MIME-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII


"
done
PK;X	[���33imap_undelete_uid.phptnu�[���--TEST--
imap_undelete() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapundeleteuid", $msg_no, $uid);

imap_delete($imap_mail_box, $uid, FT_UID);
imap_undelete($imap_mail_box, $uid, FT_UID);
imap_expunge($imap_mail_box);

var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapundeleteuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(7)
  [3]=>
  int(8)
  [4]=>
  int(9)
  [5]=>
  int(10)
}
PK;X	[�L���imap_fetchstructure_basic.phptnu�[���--TEST--
imap_fetchstructure() function : basic functionality
--CREDITS--
Olivier Doucet
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');
$stream_id = setup_test_mailbox('imapfetchstructurebasic', 1);

try {
    imap_fetchstructure($stream_id,0);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

$z = imap_fetchstructure($stream_id,1);


$fields = array('type','encoding','ifsubtype','subtype',
'ifdescription','lines','bytes','parameters');

foreach ($fields as $key) {
    var_dump(isset($z->$key));
}
var_dump($z->type);
var_dump($z->encoding);
var_dump($z->bytes);
var_dump($z->lines);
var_dump($z->ifparameters);
var_dump(is_object($z->parameters[0]));

imap_close($stream_id);
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchstructurebasic';
require_once('setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 1 msgs
New mailbox created
imap_fetchstructure(): Argument #2 ($message_num) must be greater than 0
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
int(%d)
int(%d)
int(%d)
int(%d)
int(1)
bool(true)
PK;X	[��I��imap_fetchheader_errors.phptnu�[���--TEST--
imap_fetchheader() errors: ValueError and Warnings
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox("imapfetchheadererrors", 0);

try {
    imap_fetchheader($imap_mail_box, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}
try {
    imap_fetchheader($imap_mail_box, 1, -1);
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

// Access not existing
var_dump(imap_fetchheader($imap_mail_box, 255));
var_dump(imap_fetchheader($imap_mail_box, 255, FT_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchheadererrors';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
Create a temporary mailbox and add 0 msgs
New mailbox created
imap_fetchheader(): Argument #2 ($message_num) must be greater than 0
imap_fetchheader(): Argument #3 ($flags) must be a bitmask of FT_UID, FT_PREFETCHTEXT, and FT_INTERNAL

Warning: imap_fetchheader(): Bad message number in %s on line %d
bool(false)

Warning: imap_fetchheader(): UID does not exist in %s on line %d
bool(false)
PK;X	[�L�H��imap_is_open.phptnu�[���--TEST--
Test imap_is_open()
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

// include file for required variables in imap_open()
require_once(__DIR__.'/setup/imap_include.inc');

$mailbox_suffix = 'imapisopen';

// set up temp mailbox with 0 messages
$stream_id = setup_test_mailbox($mailbox_suffix, 0, $mailbox);

var_dump(imap_is_open($stream_id));

// Close connection
var_dump(imap_close($stream_id));
var_dump(imap_is_open($stream_id));

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapisopen';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 0 msgs
New mailbox created
bool(true)
bool(true)
bool(false)
PK;X	[j�Ɩ\\bug45705_1.phptnu�[���--TEST--
Bug #45705 test #1 (imap rfc822_parse_adrlist() modifies passed address parameter)
--EXTENSIONS--
imap
--FILE--
<?php

$address = 'John Doe <john@example.com>';
var_dump($address);
imap_rfc822_parse_adrlist($address, '');
var_dump($address);

?>
--EXPECT--
string(27) "John Doe <john@example.com>"
string(27) "John Doe <john@example.com>"
PK;X	[1�2nnimap_fetchheader_basic.phptnu�[���--TEST--
Test imap_fetchheader() function : basic function
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_fetchheader() : basic functionality ***\n";
require_once(__DIR__.'/setup/imap_include.inc');

// Initialise all required variables
$stream_id = setup_test_mailbox('imapfetchheaderbasic', 1, $mailbox, false); // setup temp mailbox with 1 msg
$msg_no = 1;
$options = array('FT_UID' => FT_UID, 'FT_INTERNAL' => FT_INTERNAL,
                 'FT_PREFETCHTEXT' => FT_PREFETCHTEXT);

// Calling imap_fetchheader() with all possible arguments
echo "\n-- All possible arguments --\n";
foreach ($options as $key => $option) {
    echo "-- Option is $key --\n";
    if ($key == 'FT_UID') {
        $msg_uid = imap_uid($stream_id, $msg_no);
        var_dump(imap_fetchheader($stream_id, $msg_uid, $option));
    } else {
        var_dump(imap_fetchheader($stream_id, $msg_no, $option));
    }
}

// Calling imap_fetchheader() with mandatory arguments
echo "\n-- Mandatory arguments --\n";
var_dump( imap_fetchheader($stream_id, $msg_no) );
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchheaderbasic';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_fetchheader() : basic functionality ***
Create a temporary mailbox and add 1 msgs
New mailbox created

-- All possible arguments --
-- Option is FT_UID --
string(%d) "From: foo@anywhere.com
Subject: Test msg 1
To: %s
MIME-Version: 1.0
Content-Type: %s; %s

"
-- Option is FT_INTERNAL --
string(%d) "From: foo@anywhere.com
Subject: Test msg 1
To: %s
MIME-Version: 1.0
Content-Type: %s; %s

"
-- Option is FT_PREFETCHTEXT --
string(%d) "From: foo@anywhere.com
Subject: Test msg 1
To: %s
MIME-Version: 1.0
Content-Type: %s; %s

"

-- Mandatory arguments --
string(%d) "From: foo@anywhere.com
Subject: Test msg 1
To: %s
MIME-Version: 1.0
Content-Type: %s; %s

"
PK;X	[������
bug80223.phptnu�[���--TEST--
Bug #80223 (imap_mail_compose() leaks envelope on malformed bodies)
--EXTENSIONS--
imap
--FILE--
<?php
try {
    imap_mail_compose([], []);
} catch (\ValueError $e) {
    echo $e->getMessage(), \PHP_EOL;
}
try {
    imap_mail_compose([], [1]);
} catch (\TypeError $e) {
    echo $e->getMessage(), \PHP_EOL;
}
try {
    imap_mail_compose([], [[]]);
} catch (\ValueError $e) {
    echo $e->getMessage(), \PHP_EOL;
}
?>
--EXPECT--
imap_mail_compose(): Argument #2 ($bodies) cannot be empty
imap_mail_compose(): Argument #2 ($bodies) individual body must be of type array, int given
imap_mail_compose(): Argument #2 ($bodies) individual body cannot be empty
PK;X	[�y�i��
bug80216.phptnu�[���--TEST--
Bug #80216 (imap_mail_compose() does not validate types/encodings)
--EXTENSIONS--
imap
--FILE--
<?php
imap_mail_compose([], [['type' => TYPEMULTIPART], []]);
imap_mail_compose([], [['type' => 12]]);
imap_mail_compose([], [['type' => TYPEMULTIPART], ['type' => 12]]);
imap_mail_compose([], [['encoding' => 8]]);
imap_mail_compose([], [['type' => TYPEMULTIPART], ['encoding' => 8]]);
echo "done\n";
?>
--EXPECT--
done
PK;X	[.O��
bug44098.phptnu�[���--TEST--
Bug #44098 (imap_utf8() returns only capital letters)
--EXTENSIONS--
imap
--FILE--
<?php
$exp = 'Luzon®14 dot CoM';
$res = imap_utf8('=?iso-8859-1?b?THV6b26uMTQ=?= dot CoM');
var_dump($res);

?>
--EXPECT--
string(17) "Luzon®14 dot CoM"
PK;X	[V_P�^^
bug53377.phptnu�[���--TEST--
Bug #53377 (imap_mime_header_decode() doesn't ignore \t during long MIME header unfolding)
--EXTENSIONS--
imap
--FILE--
<?php
$s = "=?UTF-8?Q?=E2=82=AC?=";
$header = "$s\n $s\n\t$s";

var_dump(imap_mime_header_decode($header));
?>
--EXPECT--
array(3) {
  [0]=>
  object(stdClass)#1 (2) {
    ["charset"]=>
    string(5) "UTF-8"
    ["text"]=>
    string(3) "€"
  }
  [1]=>
  object(stdClass)#2 (2) {
    ["charset"]=>
    string(5) "UTF-8"
    ["text"]=>
    string(3) "€"
  }
  [2]=>
  object(stdClass)#3 (2) {
    ["charset"]=>
    string(5) "UTF-8"
    ["text"]=>
    string(3) "€"
  }
}
PK;X	[(,�PPimap_append_basic.phptnu�[���--TEST--
Test imap_append() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__. '/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_append() : basic functionality ***\n";

require_once(__DIR__. '/setup/imap_include.inc');

echo "Create a new mailbox for test\n";
$imap_stream = setup_test_mailbox("imapappendbaisc", 0);

$mb_details = imap_mailboxmsginfo($imap_stream);
echo "Add a couple of msgs to the new mailbox\n";
var_dump(imap_append($imap_stream, $mb_details->Mailbox
                   , "From: webmaster@example.com\r\n"
                   . "To: info@example.com\r\n"
                   . "Subject: Test message\r\n"
                   . "\r\n"
                   . "this is a test message, please ignore\r\n"
                   ));

var_dump(imap_append($imap_stream, $mb_details->Mailbox
                   , "From: webmaster@example.com\r\n"
                   . "To: info@example.com\r\n"
                   . "Subject: Another test\r\n"
                   . "\r\n"
                   . "this is another test message, please ignore it too!!\r\n"
                   ));

$check = imap_check($imap_stream);
echo "Msg Count after append : ". $check->Nmsgs . "\n";

echo "List the msg headers\n";
var_dump(imap_headers($imap_stream));

imap_close($imap_stream);
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapappendbaisc';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_append() : basic functionality ***
Create a new mailbox for test
Create a temporary mailbox and add 0 msgs
New mailbox created
Add a couple of msgs to the new mailbox
bool(true)
bool(true)
Msg Count after append : 2
List the msg headers
array(2) {
  [0]=>
  string(%d) "%w%s       1)%s webmaster@example.co Test message (%d chars)"
  [1]=>
  string(%d) "%w%s       2)%s webmaster@example.co Another test (%d chars)"
}
PK;X	[B�chhimap_fetchbody_variation6.phptnu�[���--TEST--
Test imap_fetchbody() function : usage variations - $message_num arg
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
/*
 * Pass different integers, strings, msg sequences and msg UIDs as $message_num argument
 * to test behaviour of imap_fetchbody()
 */

echo "*** Testing imap_fetchbody() : usage variations ***\n";

require_once(__DIR__.'/setup/imap_include.inc');

//Initialise required variables
$stream_id = setup_test_mailbox('imapfetchbodyvar6', 3); // set up temp mailbox with  simple msgs
$section = 1;

$sequences = [0, /* out of range */ 4, 1];

foreach($sequences as $message_num) {
    echo "\n-- \$message_num is $message_num --\n";
    try {
        var_dump(imap_fetchbody($stream_id, $message_num, $section));
    } catch (\ValueError $e) {
        echo $e->getMessage() . \PHP_EOL;
    }
}
?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchbodyvar6';
require_once(__DIR__.'/setup/clean.inc');
?>
--EXPECTF--
*** Testing imap_fetchbody() : usage variations ***
Create a temporary mailbox and add 3 msgs
New mailbox created

-- $message_num is 0 --
imap_fetchbody(): Argument #2 ($message_num) must be greater than 0

-- $message_num is 4 --

Warning: imap_fetchbody(): Bad message number in %s on line %d
bool(false)

-- $message_num is 1 --
string(%d) "1: this is a test message, please ignore
newline%r\R?%r"
PK;X	[72��
bug80220.phptnu�[���--TEST--
Bug #80220 (imap_mail_compose() may leak memory) - message/rfc822 regression
--EXTENSIONS--
imap
--FILE--
<?php
$bodies = [[
    'type' => TYPEMESSAGE,
    'subtype' => 'RFC822',
], [
    'contents.data' => 'asd',
]];
var_dump(imap_mail_compose([], $bodies));

$bodies = [[
    'type' => TYPEMESSAGE,
], [
    'contents.data' => 'asd',
]];
var_dump(imap_mail_compose([], $bodies));
?>
--EXPECT--
string(53) "MIME-Version: 1.0
Content-Type: MESSAGE/RFC822


"
string(53) "MIME-Version: 1.0
Content-Type: MESSAGE/RFC822


"
PK;X	[�BJ��setup/clean.incnu�[���<?php
require_once 'imap_include.inc';

if (!isset($mailbox_suffix)) { throw new Exception("No suffix provided"); }

$imap_stream = imap_open(IMAP_DEFAULT_MAILBOX, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD);

// delete all msgs in default mailbox, i.e INBOX
$check = imap_check($imap_stream);
for ($i = 1; $i <= $check->Nmsgs; $i++) {
    imap_delete($imap_stream, $i);
}


$mailboxes = imap_getmailboxes($imap_stream, IMAP_SERVER, '*');

if (!is_array($mailbox_suffix)) {
    $mailbox_suffixes = [$mailbox_suffix];
} else {
    $mailbox_suffixes = $mailbox_suffix;
}

foreach ($mailbox_suffixes as $mailbox_suffix) {
    foreach($mailboxes as $value) {
        // Only delete mailbox with our prefix (+ optional test suffix)
        if (preg_match('/\{.*?\}INBOX\.' . IMAP_MAILBOX_PHPT_PREFIX . $mailbox_suffix .'$/', $value->name, $match) == 1) {
            imap_deletemailbox($imap_stream, $value->name);
        }
    }
}

imap_close($imap_stream, CL_EXPUNGE);
PK;X	[$��Kllsetup/skipif.incnu�[���<?php
include __DIR__ . '/imap_include.inc';

$options = OP_HALFOPEN; // this should be enough to verify server present
$retries = 0; // don't retry connect on failure

$mbox = @imap_open(IMAP_SERVER, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD, $options, $retries);
if (!$mbox) {
    die("skip could not connect to mailbox " . IMAP_SERVER);
}
imap_close($mbox);
PK;X	[��,_VVsetup/dovecot.confnu�[���# 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.21 (92477967)
listen = *, ::

# For SSL need to setup a certificate
# See https://wiki.dovecot.org/SSL/DovecotConfiguration
ssl = no

# Disable plaintext to prevent a warning at each login
disable_plaintext_auth = yes

auth_mechanisms = cram-md5
auth_username_format = %u
auth_verbose = yes
auth_debug = yes
auth_failure_delay = 1secs

# This need dovecot 2.3.12.
# login_proxy_timeout = 500milliseconds
# ^ This would allow to kill login processes early, but needs testing. So would use v instead
# login_proxy_timeout = 5s
# There is a 1 second delay between each reconnection attempt.
# https://doc.dovecot.org/settings/core/#login-proxy-max-reconnects
# This need dovecot 2.3.12.
# login_proxy_max_reconnects = 3

# Log config
log_path = /var/log/dovecot.log
# If not set, use the value from log_path
info_log_path = /var/log/dovecot-info.log
# If not set, use the value from info_log_path
debug_log_path = /var/log/dovecot-debug.log
## Mailbox locations and namespaces
mail_location = maildir:/var/vmail/dovecot/mail/%d/%n/Maildir
passdb {
  args = scheme=cram-md5 /etc/dovecot/dovecotpass
  driver = passwd-file
}
protocols = imap
service auth {
  user = root
}
userdb {
  args = /etc/dovecot/dovecotpass
  driver = passwd-file
  override_fields = home=/var/vmail/dovecot/mail/%d/%n
}
PK;X	[F�s���setup/imap_include.incnu�[���<?php
/** If required change these values to make the test runs */
const IMAP_SERVER_NO_DEBUG = '{127.0.0.1:143/norsh}';
const IMAP_SERVER_DEBUG = '{127.0.0.1:143/debug/norsh}';
const IMAP_SERVER = IMAP_SERVER_DEBUG;
const IMAP_DEFAULT_MAILBOX = IMAP_SERVER . 'INBOX';
const IMAP_MAIL_DOMAIN = 'example.com';
const IMAP_ADMIN_USER = 'webmaster'; // a user with admin access
const IMAP_MAILBOX_USERNAME = IMAP_ADMIN_USER . '@' . IMAP_MAIL_DOMAIN;
const IMAP_MAILBOX_PASSWORD = 'p4ssw0rd';
const IMAP_MAILBOX_PHPT_PREFIX = 'phpttest';
/** Tests require 4 valid userids */
const IMAP_USERS = ["webmaster", "info", "admin", "foo"];

/** list of fields to expect */
const MANDATORY_OVERVIEW_FIELDS = [
    'size',
    'uid',
    'msgno',
    'recent',
    'flagged',
    'answered',
    'deleted',
    'seen',
    'draft',
    'udate',
];

// record test start time (used by displayOverviewFields())
$start_time = time();

/**
 * Display all fields in an element from an imap_fetch_overview() response
 *
 * Special handling for 'udate', which will vary run-to-run; assumes an IMAP
 * server with its clock synced to the current system, which is consistent with
 * setup instructions in ext/imap/tests/README.md
 *
 * @param $resp
 * @param string[] $fields
 */
function displayOverviewFields($resp, array $fields = MANDATORY_OVERVIEW_FIELDS) {
    global $start_time;
    foreach ($fields as $mf) {
        $z = $resp->$mf;
        if ($mf == 'udate') {
            if (($z >= $start_time) && ($z <= time())) {
                echo "$mf is OK\n";
            } else {
                echo "$mf is BAD ($z)\n";
            }
        } else {
            echo "$mf is $z\n";
        }
    }
}


/**
 * Create a test mailbox and populate with msgs
 *
 * @param string mailbox_suffix Suffix used to uniquely identify mailboxes
 * @param int message_count number of test msgs to be written to new mailbox
 * @param null $new_mailbox
 * @param bool $simpleMessages
 * @param int $flags OP_* (or CL_EXPUNGE) flags to pass to imap_open() sub-call
 * @return resource IMAP stream to new mailbox
 * @throws Exception
 */
function setup_test_mailbox(
    string $mailbox_suffix,
    int $message_count,
    &$new_mailbox = null,
    bool $simpleMessages = true,
    int $flags = 0,
){
    // open a stream to default mailbox
    $imap_stream = imap_open(IMAP_DEFAULT_MAILBOX, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD, flags: $flags);

    if ($imap_stream === false) {
        throw new Exception("Cannot connect to IMAP server " . IMAP_SERVER . ": " . imap_last_error());
    }

    echo "Create a temporary mailbox and add " . $message_count .  " msgs\n";
    $new_mailbox = create_mailbox($imap_stream, $mailbox_suffix, $message_count, $simpleMessages);

    echo "New mailbox created\n";

    // reopen stream to new mailbox
    if (imap_reopen($imap_stream, $new_mailbox) === false) {
        throw new Exception("Can't re-open '$new_mailbox' mailbox: " . imap_last_error());
    }

    return $imap_stream;
}

/**
 * Create mailbox and fill with generic emails
 *
 * @param resource $imap_stream
 * @param string $mailbox_suffix
 * @param int $message_count
 * @param bool $simpleMessages
 * @return string
 * @throws Exception
 */
function create_mailbox($imap_stream, string $mailbox_suffix, int $message_count, bool $simpleMessages = true): string {
    $mailbox = IMAP_DEFAULT_MAILBOX . '.' . IMAP_MAILBOX_PHPT_PREFIX . $mailbox_suffix;

    $mailboxes = imap_getmailboxes($imap_stream, $mailbox, '*');

    // check mailbox does not already exist
    if ($mailboxes) {
        foreach($mailboxes as $value) {
            if ($value->name == $mailbox) {
                throw new Exception("Mailbox '$mailbox' already exists");
            }
        }
    }

    if (imap_createmailbox($imap_stream, $mailbox) === false) {
        throw new Exception("Can't create a temporary mailbox: " . imap_last_error());
    }

    // Add number of test msgs requested
    if ($message_count > 0) {
        populate_mailbox($imap_stream, $mailbox, $message_count, $simpleMessages);
    }

    return $mailbox;
}

function setup_test_mailbox_for_uid_tests(string $mailbox_suffix, &$msg_no = null, &$msg_uid = null)
{
    $mail_box = setup_test_mailbox($mailbox_suffix, 10);
    echo "Delete 4 messages for Unique ID generation\n";
    // Delete messages to remove the numerical ordering
    imap_delete($mail_box, 3);
    imap_delete($mail_box, 4);
    imap_delete($mail_box, 5);
    imap_delete($mail_box, 6);
    imap_expunge($mail_box);
    $msg_no = 5;
    $msg_uid = 9;

    return $mail_box;
}

/**
 * Populate a mailbox with generic emails
 *
 * @param resource $imap_stream
 * @param string $mailbox
 * @param int $message_count
 * @param bool $simpleMessages
 */
function populate_mailbox($imap_stream, string $mailbox, int $message_count, bool $simpleMessages = true): void {
    for ($i = 1; $i <= $message_count; $i++) {
        if ($simpleMessages) {
            $msg =  "From: foo@anywhere.com\r\n"
                . "To: ". IMAP_USERS[0] . "@" . IMAP_MAIL_DOMAIN . "\r\n"
                . "Subject: test$i\r\n"
                . "\r\n"
                . "$i: this is a test message, please ignore\r\nnewline";
        } else {
            $envelope["from"]= "foo@anywhere.com";
            $envelope["to"]  = IMAP_USERS[0] . "@" . IMAP_MAIL_DOMAIN;
            $envelope["subject"] = "Test msg $i";

            $part1["type"] = TYPEMULTIPART;
            $part1["subtype"] = "mixed";

            $part2["type"] = TYPETEXT;
            $part2["subtype"] = "plain";
            $part2["description"] = "imap_mail_compose() function";
            $part2["contents.data"] = "message 1:xxxxxxxxxxxxxxxxxxxxxxxxxx";

            $part3["type"] = TYPETEXT;
            $part3["subtype"] = "plain";
            $part3["description"] = "Example";
            $part3["contents.data"] = "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy";

            $part4["type"] = TYPETEXT;
            $part4["subtype"] = "plain";
            $part4["description"] = "Return Values";
            $part4["contents.data"] = "message 3:zzzzzzzzzzzzzzzzzzzzzzzzzz";

            $body[1] = $part1;
            $body[2] = $part2;
            $body[3] = $part3;
            $body[4] = $part4;

            $msg = imap_mail_compose($envelope, $body);
        }

        imap_append($imap_stream, $mailbox, $msg);
    }
}

/**
 * Get the mailbox name from a mailbox description, i.e strip off server details.
 *
 * @param string mailbox complete mailbox name
 * @return string mailbox name
 */
function get_mailbox_name(string $mailboxName): string {

    if (preg_match('/\{.*?\}(.*)/', $mailboxName, $match) != 1) {
        throw new Exception("Unrecognized mailbox name '$mailboxName'");
    }

    return $match[1];
}
PK;X	[AUmmsetup/dovecotpassnu�[���webmaster@example.com:{CRAM-MD5}be5f3177e9c7c06403272f25d983ba630df4ef40476b353bb3087a8401713451:vmail:vmail
PK;X	[#[�Fsetup/setup.shnu�[���sudo service dovecot stop
sudo groupadd -g 5000 vmail
sudo useradd -m -d /var/vmail -s /bin/false -u 5000 -g vmail vmail
sudo cp ext/imap/tests/setup/dovecot.conf /etc/dovecot/dovecot.conf
sudo cp ext/imap/tests/setup/dovecotpass /etc/dovecot/dovecotpass
sudo service dovecot start
PK;X	[�o�ۘ�bug80710_2.phptnu�[���--TEST--
Bug #80710 (imap_mail_compose() header injection) - Remail
--EXTENSIONS--
imap
--FILE--
<?php
$envelope["from"]= "joe@example.com\n From : X-INJECTED";
$envelope["to"]  = "foo@example.com\nFrom: X-INJECTED";
$envelope["cc"]  = "bar@example.com\nFrom: X-INJECTED";
$envelope["subject"]  = "bar@example.com\n\n From : X-INJECTED";
$envelope["remail"]  = "X-INJECTED-REMAIL: X-INJECTED\nFrom: X-INJECTED-REMAIL-FROM"; //<--- Injected as first hdr
$envelope["something"]  = "bar@example.com\nFrom: X-INJECTED";

$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";

$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream\nContent-Type: X-INJECTED";
$part2["description"] = "some file\nContent-Type: X-INJECTED";
$part2["contents.data"] = "ABC\nContent-Type: X-INJECTED";

$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "description3";
$part3["contents.data"] = "contents.data3\n\n\n\t";

$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;

echo imap_mail_compose($envelope, $body);
?>
--EXPECTF--
Warning: imap_mail_compose(): header injection attempt in remail in %s on line %d
PK;X	[U��l��imap_fetch_overview_uid.phptnu�[���--TEST--
imap_fetch_overview() passing a unique ID
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchoverviewuid", $msg_no, $uid);

// Usage of == because comparing objects
var_dump(imap_fetch_overview($imap_mail_box, $uid, FT_UID) == imap_fetch_overview($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchoverviewuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
PK;X	[�+6M��imap_fetch_overview_basic.phptnu�[���--TEST--
Test imap_fetch_overview() function : basic functionality
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php
echo "*** Testing imap_fetch_overview() : basic functionality ***\n";

require_once __DIR__.'/setup/imap_include.inc';

// create a new mailbox and add two new messages to it
$stream_id = setup_test_mailbox('imapfetchoverviewbasic', 2, $mailbox, false);

// get UID for new message
$msg_no = imap_uid($stream_id, 1);
$options = FT_UID;

// Calling imap_fetch_overview() with all possible arguments
echo "\n-- All possible arguments --\n";
$a =  imap_fetch_overview($stream_id, "$msg_no", $options) ;
echo "\n--> Object #1\n";
displayOverviewFields($a[0]);

// Calling imap_fetch_overview() with mandatory arguments
echo "\n-- Mandatory arguments --\n";
$a = imap_fetch_overview($stream_id, '1:2') ;

//first object in array
echo "\n--> Object #1\n";
displayOverviewFields($a[0]);

//Second object in array
echo "\n--> Object #2\n";
displayOverviewFields($a[1]);

imap_close($stream_id);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchoverviewbasic';
require_once __DIR__.'/setup/clean.inc';
?>
--EXPECTF--
*** Testing imap_fetch_overview() : basic functionality ***
Create a temporary mailbox and add 2 msgs
New mailbox created

-- All possible arguments --

--> Object #1
size is %d
uid is %d
msgno is 1
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK

-- Mandatory arguments --

--> Object #1
size is %d
uid is %d
msgno is 1
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK

--> Object #2
size is %d
uid is %d
msgno is 2
recent is %d
flagged is 0
answered is 0
deleted is 0
seen is 0
draft is 0
udate is OK
PK;X	[P�;;imap_errors_basic.phptnu�[���--TEST--
Test imap_errors() function : anonymous user not supported
--EXTENSIONS--
imap
--SKIPIF--
<?php
require_once __DIR__.'/setup/skipif.inc';
?>
--FILE--
<?php
echo "*** Testing imap_errors() : anonymous user not supported ***\n";
require_once __DIR__.'/setup/imap_include.inc';

$mbox = @imap_open(IMAP_DEFAULT_MAILBOX, IMAP_MAILBOX_USERNAME, IMAP_MAILBOX_PASSWORD, OP_ANONYMOUS);

echo "List any errors\n";
var_dump(imap_errors());

?>
--EXPECTF--
*** Testing imap_errors() : anonymous user not supported ***
List any errors
array(1) {
  [0]=>
  string(%d) "%s"
}
PK{X	[2��%060.solrquery_comon_query_params.phptnu�[���--TEST--
SolrQuery - testing CommonQueryParameters
--FILE--
<?php

$query = new SolrQuery();
ob_start();
var_dump(
	$query->getQuery(),
	$query->getTimeAllowed(),
	$query->getStart(),
	$query->getRows(),
	$query->getFields(),
	$query->getFilterQueries(),
	$query->getSortFields()
);
$nullOutput = ob_get_clean();

$query->setParam('a', 1);
$query->setParam('b', 2);
$query->setParam('c', 3);

$query->setStart(4)->setQuery('solr')->setTimeAllowed(500)->setRows(17);

$query->addField('israel')->addField('joshua')->addField('june');

$query->addSortField('cat', SolrQuery::ORDER_ASC);

$query->addFilterQuery('solr')->addFilterQuery('solr1')->addFilterQuery('solr2');

$query
	->setShowDebugInfo(true)
	->setExplainOther('id:SOL*')
	->setOmitHeader(false)
	->setEchoHandler(true)
	->setEchoParams('all')
;

echo $query . PHP_EOL . PHP_EOL;

var_dump(
	$query->getQuery(),
	$query->getTimeAllowed(),
	$query->getStart(),
	$query->getRows(),
	$query->getFields(),
	$query->getFilterQueries(),
	$query->getSortFields()
);

echo $nullOutput;
?>
--EXPECT--
a=1&b=2&c=3&start=4&q=solr&timeAllowed=500&rows=17&fl=israel,joshua,june&sort=cat asc&fq=solr&fq=solr1&fq=solr2&debugQuery=true&explainOther=id:SOL*&omitHeader=false&echoHandler=true&echoParams=all

string(4) "solr"
int(500)
int(4)
int(17)
array(3) {
  [0]=>
  string(6) "israel"
  [1]=>
  string(6) "joshua"
  [2]=>
  string(4) "june"
}
array(3) {
  [0]=>
  string(4) "solr"
  [1]=>
  string(5) "solr1"
  [2]=>
  string(5) "solr2"
}
array(1) {
  [0]=>
  string(7) "cat asc"
}
NULL
NULL
NULL
NULL
NULL
NULL
NULLPK{X	[���110.solrdismaxquery.phptnu�[���--TEST--
SolrDisMaxQuery - Methods
--FILE--
<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
->addPhraseField('source', 55)
->addPhraseField('cat', 3, 1)
->addPhraseField('third', 4, 1)
->removePhraseField('third')
->addPhraseField('fourth', 0.5)
->addPhraseField('fifth',5.2, 7.8)
->setQueryAlt('*:*')
->addQueryField("price")
->addQueryField("location", 4)
->setPhraseSlop(2)
->setQueryPhraseSlop(3)
->setTieBreaker(0.5)
->setMinimumMatch(2)
;
// reverse
echo $dismaxQuery.PHP_EOL;
$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
	->addQueryField("location", 4)
	->addQueryField("price")
	->addQueryField("sku")
	->addQueryField("title",3.4)
	->addPhraseField('cat', 3, 1)
	->addPhraseField('third', 4, 1)
	->addPhraseField('source', 55)
;
echo $dismaxQuery.PHP_EOL;

$dismaxQuery->setPhraseFields('source^55 cat~1^3');
echo $dismaxQuery.PHP_EOL;
$dismaxQuery = new SolrDisMaxQuery('lucene');

$dismaxQuery->addPhraseField('first', 3, 1)
->addPhraseField('second', 4, 1)
->addPhraseField('cat', 55);
echo $dismaxQuery. PHP_EOL;

echo $dismaxQuery->removePhraseField('second').PHP_EOL;

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery->addQueryField('first', 3)
->addQueryField('second', 0.2)
->addQueryField('cat');
echo $dismaxQuery. PHP_EOL;
echo $dismaxQuery->removeQueryField('second').PHP_EOL;

$dismaxQuery = new SolrDisMaxQuery('lucene');

$dismaxQuery->setPhraseSlop(4);
echo $dismaxQuery.PHP_EOL;

?>
--EXPECTF--
q=lucene&defType=%s&pf=source^55 cat~1^3 fourth^0.5 fifth~7.8^5.2&q.alt=*:*&qf=price location^4&ps=2&qs=3&tie=0.5&mm=2
q=lucene&defType=%s&qf=location^4 price sku title^3.4&pf=cat~1^3 third~1^4 source^55

Notice: SolrDisMaxQuery::setPhraseFields(): Parameter pf value(s) was overwritten by this call in %s on line %d
q=lucene&defType=%s&qf=location^4 price sku title^3.4&pf=source^55 cat~1^3
q=lucene&defType=%s&pf=first~1^3 second~1^4 cat^55
q=lucene&defType=%s&pf=first~1^3 cat^55
q=lucene&defType=%s&qf=first^3 second^0.2 cat
q=lucene&defType=%s&qf=first^3 cat
q=lucene&defType=%s&ps=4PK{X	[�5P��019.solrclient_clone.phptnu�[���--TEST--
SolrClient::__clone() - expect exception on clone
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

try {
	$failing = clone $client;
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()) . PHP_EOL;
}

?>
--EXPECTF--
Exception 4001: Cloning of SolrClient objects is currently not supportedPK{X	[�j1YY150.solrcollapsefunction.phptnu�[���--TEST--
SolrCollapseFunction - string conversion
--FILE--
<?php

$func = new SolrCollapseFunction('field');

$func->setField('field2');
$func->setMax('max');
$func->setMin('min');
$func->setSize(1000);
$func->setHint('hint');
$func->setNullPolicy(SolrCollapseFunction::NULLPOLICY_EXPAND);

var_dump($func->getField());
var_dump($func->getMax());
var_dump($func->getMin());
var_dump($func->getSize());
var_dump($func->getHint());
var_dump($func->getNullPolicy());

var_dump((string)$func);
$func->setMax('with space');
var_dump((string)$func);

?>
--EXPECTF--
string(6) "field2"
string(3) "max"
string(3) "min"
string(4) "1000"
string(4) "hint"
string(6) "expand"
string(78) "{!collapse field=field2 max=max min=min size=1000 hint=hint nullPolicy=expand}"
string(87) "{!collapse field=field2 max='with space' min=min size=1000 hint=hint nullPolicy=expand}"
PK{X	[86H���(062.solrquery_date_facet_parameters.phptnu�[���--TEST--
SolrQuery - Testing Date facet parameters
--FILE--
<?php

$query = new SolrQuery();

ob_start();
var_dump(
	$query->getFacetDateFields(),
	$query->getFacetDateStart(),
	$query->getFacetDateStart('june'),
	$query->getFacetDateEnd(),
	$query->getFacetDateEnd('israel'),
	$query->getFacetDateGap(),
	$query->getFacetDateGap('june'),
	$query->getFacetDateHardEnd(),
	$query->getFacetDateHardEnd('june'),
	$query->getFacetDateOther(),
	$query->getFacetDateOther('june')
);

$nullOutput = ob_get_clean();



$query->addFacetDateField('israel')
->addFacetDateField('israel')
->removeFacetDateField('israel')
;

$query->setFacetDateStart('January')->setFacetDateStart('Feb', 'june');

$query->setFacetDateEnd('Jan')->setFacetDateEnd('Febr', 'israel');

$query->setFacetDateGap('AOL')->setFacetDateGap('YAHOO', 'june');

$query->setFacetDateHardEnd(1)->setFacetDateHardEnd(0,'june');

$query->addFacetDateOther('Google')
->addFacetDateOther('Yahoos','june')
->addFacetDateOther('removeme')
->removeFacetDateOther('removeme');

echo $query. PHP_EOL . PHP_EOL;

var_dump(
	$query->getFacetDateFields(),
	$query->getFacetDateStart(),
	$query->getFacetDateStart('june'),
	$query->getFacetDateEnd(),
	$query->getFacetDateEnd('israel'),
	$query->getFacetDateGap(),
	$query->getFacetDateGap('june'),
	$query->getFacetDateHardEnd(),
	$query->getFacetDateHardEnd('june'),
	$query->getFacetDateOther(),
	$query->getFacetDateOther('june')
);

echo $nullOutput;
?>
--EXPECTF--
facet.date=israel&facet.date.start=January&f.june.facet.date.start=Feb&facet.date.end=Jan&f.israel.facet.date.end=Febr&facet.date.gap=AOL&f.june.facet.date.gap=YAHOO&facet.date.hardend=true&f.june.facet.date.hardend=false&f.june.facet.date.other=Yahoos

array(1) {
  [0]=>
  string(6) "israel"
}
string(7) "January"
string(3) "Feb"
string(3) "Jan"
string(4) "Febr"
string(3) "AOL"
string(5) "YAHOO"
bool(true)
bool(false)
NULL
array(1) {
  [0]=>
  string(6) "Yahoos"
}
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULLPK{X	[,��}SS#080.solrutils_escapequerychars.phptnu�[���--TEST--
SolrUtils::escapeQueryChars() - Testing Lucene Reserved Characters
--FILE--
<?php
// + - && || ! ( ) { } [ ] ^ " ~ * ? : \
$queryString = '+a - q{ } [^test] || && () ^ " ~ * ? : \\ /';
$escaped = SolrUtils::escapeQueryChars($queryString);
echo $escaped;
?>
--EXPECTF--
\+a \- q\{ \} \[\^test\] \|| \&& \(\) \^ \" \~ \* \? \: \\ \/PK{X	[ʆ�88test.config.incnu�[���<?php
$serverConfigured = getenv('SOLR_SERVER_CONFIGURED') ? (int)getenv('SOLR_SERVER_CONFIGURED') : false;
define('SOLR_SERVER_CONFIGURED', $serverConfigured);

define('ROOT_DIRECTORY', dirname(__FILE__));

define('EXAMPLE_RESPONSE_XML_1', ROOT_DIRECTORY . '/files/response_xml.1.xml');
define('EXAMPLE_RESPONSE_XML_2', ROOT_DIRECTORY . '/files/response_xml.2.xml');
define('EXAMPLE_RESPONSE_XML_3', ROOT_DIRECTORY . '/files/response_xml.3.xml');
define('EXAMPLE_RESPONSE_XML_4', ROOT_DIRECTORY . '/files/response_xml.4.xml');
define('EXTRACT_FILE_1', ROOT_DIRECTORY . '/files/extract_file.1.pdf');

/* Whether or not to run in secure mode */
define('SOLR_SECURE', false);

/* Domain name of the Solr server */
define('SOLR_SERVER_HOSTNAME', '127.0.0.1');

/* HTTP Port to connection */
define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8443 : 8983));

/* SOLR CORE to test on */
define('SOLR_SERVER_PATH', 'solr/collection1');

/* used to test child documents */
define('SOLR_SERVER_STORE_PATH', 'solr/metal_store');

define('SOLR_SERVER_FILES_PATH', 'solr/myfiles');

/* HTTP Basic Authentication Username */
define('SOLR_SERVER_USERNAME', 'admin');

/* HTTP Basic Authentication password */
define('SOLR_SERVER_PASSWORD', 'changeit');

/* HTTP connection timeout */
/* This is maximum time in seconds allowed for the http data transfer operation. Default value is 30 seconds */
define('SOLR_SERVER_TIMEOUT', 10);

/* File name to a PEM-formatted private key + private certificate (concatenated in that order) */
define('SOLR_SSL_CERT', 'certs/combo.pem');

/* File name to a PEM-formatted private certificate only */
define('SOLR_SSL_CERT_ONLY', 'certs/solr.crt');

/* File name to a PEM-formatted private key */
define('SOLR_SSL_KEY', 'certs/solr.key');

/* Password for PEM-formatted private key file */
define('SOLR_SSL_KEYPASSWORD', 'StrongAndSecurePassword');

/* Name of file holding one or more CA certificates to verify peer with*/
define('SOLR_SSL_CAINFO', 'certs/cacert.crt');

/* Name of directory holding multiple CA certificates to verify peer with */
define('SOLR_SSL_CAPATH', 'certs/');

?>
PK{X	[ҫ߷��193.solrparams_getparams.phptnu�[���--TEST--
SolrParams::getParams()
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->set('q', 'lucene')
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

var_dump($params->getParams());
?>
--EXPECT--
array(2) {
  ["q"]=>
  array(1) {
    [0]=>
    string(6) "lucene"
  }
  ["fq"]=>
  array(2) {
    [0]=>
    string(20) "popularity:[10 TO *]"
    [1]=>
    string(9) "section:0"
  }
}PK{X	[�n�UU&116.solrdismaxquery_boostfunction.phptnu�[���--TEST--
SolrDisMaxQuery - setBoostFunction
--FILE--
<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');

$boostRecentDocsFunction = "recip(ms(NOW,mydatefield),3.16e-11,1,1)";
$dismaxQuery->setBoostFunction($boostRecentDocsFunction);

echo $dismaxQuery.PHP_EOL;

?>
--EXPECTF--
q=lucene&defType=%s&bf=recip(ms(NOW,mydatefield),3.16e-11,1,1)PK{X	[��9�,059.solrinputdocument_set_getfieldboost.phptnu�[���--TEST--
SolrInputDocument::getFieldBoost
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();

$doc->addField('id', 123);
$doc->addField('cat', 'Software');

$doc->setFieldBoost('cat', 2.1);
var_dump($doc->getFieldBoost('cat'));

?>
--EXPECT--
float(2.1)PK{X	[��44(103.solrresponse_get_array_response.phptnu�[���--TEST--
SolrResponse::getArrayResponse - For All response writers
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
);

$client = new SolrClient ( $options );


$testArrayResponse = function ($writer) use ($client){
	$client->setResponseWriter($writer);
	$q = new SolrQuery("lucene");
	$response = $client->query ( $q );
	$arrayResponse = $response->getArrayResponse();
	return is_array($arrayResponse);
};

var_dump($testArrayResponse('phps'));
var_dump($testArrayResponse('xml'));
var_dump($testArrayResponse('json'));
?>
--EXPECTF--
bool(true)
bool(true)
bool(true)PK{X	[�=���0106.solrresponse_child_doc_response_solrdoc.phptnu�[���--TEST--
SolrDocument - Response parsed as SolrDocument with child documents
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);

foreach($response->response->docs as $doc)
{
	echo '--- doc start ---'.PHP_EOL;
	print_r($doc->toArray());
	if ($doc->hasChildDocuments())
	{
		foreach ($doc->getChildDocuments() as $child)
		{
			print_r($child->toArray());
		}
	}
	echo '--- doc end ---'.PHP_EOL;
}
?>
--EXPECT--
--- doc start ---
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => parent_1
                        )

                )

        )

)
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => CHILD_1_1
                        )

                )

        )

)
--- doc end ---
--- doc start ---
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => parent_2
                        )

                )

        )

)
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => CHILD_2_1
                        )

                )

        )

)
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => CHILD_2_2
                        )

                )

        )

)
--- doc end ---
--- doc start ---
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => not_a_parent_1
                        )

                )

        )

)
--- doc end ---
PK{X	[��Kzvv007.solrclient_deleteByIds.phptnu�[���--TEST--
SolrClient::deleteByIds() - Test deleting documents by an array of IDS
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$response = $client->deleteByIds(array('334455','334456'));
$client->commit();
print_r($response->getResponse());

try {
	$client->deleteByIds(array(0));
} catch (SolrIllegalArgumentException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()). PHP_EOL;
}

try {
	$client->deleteByIds(array('334455', ''));
} catch (SolrIllegalArgumentException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()). PHP_EOL;
}

?>
--EXPECTF--
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

)
Exception 4000: Id number 1 is not a valid string
Exception 4000: Id number 2 is not a valid stringPK{X	[�Iӽ��)016.solrclient_sendUpdateStream_file.phptnu�[���--TEST--
SolrClient::sendUpdateStream - send SolrExtractRequest (file)
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array (
	'hostname' => SOLR_SERVER_HOSTNAME,
	'login' => SOLR_SERVER_USERNAME,
	'password' => SOLR_SERVER_PASSWORD,
	'port' => SOLR_SERVER_PORT,
	'path' => SOLR_SERVER_FILES_PATH,
);

$client = new SolrClient($options);

$extractParams = new SolrModifiableParams();

$extractParams
	->set(SolrExtractRequest::LITERALS_PREFIX . 'id', 'doc1')
	->set(SolrExtractRequest::CAPTURE_ELEMENTS, 'p')
	->set(SolrExtractRequest::FIELD_MAPPING_PREFIX . 'p', 'text')
;

$extractRequest = SolrExtractRequest::createFromFile(EXTRACT_FILE_1, $extractParams);

$response = $client->sendUpdateStream($extractRequest);

$client->rollback();

echo $response->getHttpStatus() . PHP_EOL;
echo $response->getRequestUrl() . PHP_EOL;
?>
--EXPECTF--
200
http://%s/update/extract/?version=2.2&indent=on&wt=xml&literal.id=doc1&capture=p&fmap.p=text
PK{X	[w�#��"056.solrinputdocument_toArray.phptnu�[���--TEST--
SolrInputDocument::toArray - Array conversion
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$doc->addField('field_1', 4, 3.4);
$doc->addField('field_2', 1);

print_r($doc->toArray());
?>
--EXPECT--
Array
(
    [document_boost] => 0
    [field_count] => 2
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => field_1
                    [boost] => 3.4
                    [values] => Array
                        (
                            [0] => 4
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => field_2
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1
                        )

                )

        )

)
PK{X	[�Gt:JJ1053.solrinputdocument_getchilddocumentscount.phptnu�[���--TEST--
SolrInputDocument::getChildDocumentsCount() - test
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$secondDoc = new SolrInputDocument();

$doc->addField('id', 1123);
$doc->addField('features', "PHP Client Side");
$doc->addField('features', "Fast development cycles");
$doc->cat   = 'Information Technology';

$secondDoc->addField('cat', 'Lucene Search');
$secondDoc->cat = 'Custom Search';

$doc->addChildDocument($secondDoc);

var_dump($doc->getChildDocumentsCount());
var_dump($secondDoc->getChildDocumentsCount());
?>
--EXPECT--
int(1)
int(0)PK{X	[k��b��bug_70495.phptnu�[���--TEST--
Solr Bug #70495 - Failed to parse 500 error response when Solr it lacks msg JSON RW
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";
$options = array
(
        'hostname' => SOLR_SERVER_HOSTNAME,
        'login'    => SOLR_SERVER_USERNAME,
        'password' => SOLR_SERVER_PASSWORD,
        'port'     => SOLR_SERVER_PORT,
        'path'     => SOLR_SERVER_PATH,
        'wt'       => 'json'
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$func = new SolrCollapseFunction('manu_id_s');

$func->setMax('sum(cscore(),field(manu_id_s))');
$func->setSize(100);
$func->setNullPolicy(SolrCollapseFunction::NULLPOLICY_EXPAND);

$query->collapse($func);
try {
    $queryResponse = $client->query($query);
} catch (SolrServerException $e) {
    printf("Exception code %d", $e->getCode());
    assert(strlen($e->getMessage()) > 0, 'Exception message is empty');
}

?>

OK
--EXPECTF--
Exception code 500
OKPK{X	[h��*��021.solrdocument_iterator.phptnu�[���--TEST--
SolrDocument - checking Iterator interface implementation
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrDocument();

$doc->addField('id', 1123);

$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";

$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat   = 'Information Technology';

foreach ($doc as $fieldname => $fieldvalues)
{
    print "$fieldname\n";

    print_r($fieldvalues);
}

?>
--EXPECT--
id
SolrDocumentField Object
(
    [name] => id
    [boost] => 0
    [values] => Array
        (
            [0] => 1123
        )

)
features
SolrDocumentField Object
(
    [name] => features
    [boost] => 0
    [values] => Array
        (
            [0] => PHP Client Side
            [1] => Fast development cycles
        )

)
cat
SolrDocumentField Object
(
    [name] => cat
    [boost] => 0
    [values] => Array
        (
            [0] => Software
            [1] => Custom Search
            [2] => Information Technology
        )

)
PK{X	[�f}�))008.solrclient_rollback.phptnu�[���--TEST--
SolrClient::rollback() - Testing rollback
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$updateResponse = $client->rollback();
print $updateResponse->getRawRequest();
?>
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<rollback/>PK{X	[��@�77067.solrquery__construct.phptnu�[���--TEST--
SolrQuery::_construct - Throws exception on illegal Argument
--FILE--
<?php

try {
	$query = new SolrQuery(new StdClass());
} catch (SolrIllegalArgumentException $e) {
	echo $e->getMessage();
} catch (TypeError $e) {
	echo $e->getMessage();
}
?>
--EXPECTF--
SolrQuery::__construct()%s string, %s given
PK{X	[���wnn!skip.if.server_not_configured.incnu�[���<?php

require_once 'bootstrap.inc';

if (!SOLR_SERVER_CONFIGURED) die("skip Solr server is not set up");

?>
PK{X	[��x��197.solrparams_unserialize.phptnu�[���--TEST--
SolrParams::unserialize()
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->setParam('q', 'lucene')
	->setParam('start', 0)
	->setParam('rows', 10)
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

$serializedString = serialize($params);

$unserializedObject = unserialize($serializedString);
echo $unserializedObject;
?>
--EXPECTF--
q=lucene&start=0&rows=10&fq=popularity:[10 TO *]&fq=section:0
PK{X	[($��ss023.solrdocument_merge.phptnu�[���--TEST--
SolrDocument::merge() - merging source document into current document
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrDocument();

$second_doc = new SolrDocument();

$doc->addField('id', 1123);

$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";

$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat   = 'Information Technology';

$second_doc->addField('cat', 'Lucene Search');

$second_doc->merge($doc, true);

print_r($second_doc->toArray());


?>
--EXPECT--
Array
(
    [document_boost] => 0
    [field_count] => 3
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Software
                            [1] => Custom Search
                            [2] => Information Technology
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => features
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => PHP Client Side
                            [1] => Fast development cycles
                        )

                )

        )

)
PK{X	[�B���028.solrdocument_clone.phptnu�[���--TEST--
SolrDocument - clone
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);

foreach($response->response->docs as $doc)
{
	$clone = clone $doc;
	$childrenOfTheInput = $clone->getInputDocument()->getChildDocuments();

	if ($childrenOfTheInput)
	{
		$firstChild = $childrenOfTheInput[0];
		var_dump(get_class($firstChild));
		var_dump(current($childrenOfTheInput)->toArray());
	}
}

?>
--EXPECTF--
string(17) "SolrInputDocument"
array(3) {
  ["document_boost"]=>
  float(0)
  ["field_count"]=>
  int(1)
  ["fields"]=>
  array(1) {
    [0]=>
    object(SolrDocumentField)#%d (3) {
      ["name"]=>
      string(2) "id"
      ["boost"]=>
      float(0)
      ["values"]=>
      array(1) {
        [0]=>
        string(9) "CHILD_1_1"
      }
    }
  }
}
string(17) "SolrInputDocument"
array(3) {
  ["document_boost"]=>
  float(0)
  ["field_count"]=>
  int(1)
  ["fields"]=>
  array(1) {
    [0]=>
    object(SolrDocumentField)#%d (3) {
      ["name"]=>
      string(2) "id"
      ["boost"]=>
      float(0)
      ["values"]=>
      array(1) {
        [0]=>
        string(9) "CHILD_2_1"
      }
    }
  }
}
PK{X	[c���NN'001.solrclient_addDocument_partial.phptnu�[���--TEST--
SolrClient::addDocumnt() - Partial Update (integration)
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$printDocument = function() use ($client) {
	$response = $client->getById('testing_partials');
	print_r($response->getResponse());
};
// clean up, before running the test
$client->deleteById('testing_partials');
$client->commit();

$initialDoc = new SolrInputDocument();

$initialDoc->addField('id', 'testing_partials');
$initialDoc->addField('field1', 'existing value');
$initialDoc->addField('field1', 'remove me please');
$initialDoc->addField('field1', '15/01/2007');
$initialDoc->addField('field2_s', 'initialField');
$initialDoc->addField('field3_i', 0);
$initialDoc->addField('field4', 'val1');
$initialDoc->addField('field5_s', 'unmodified field');

$client->addDocument($initialDoc);
$client->commit();
separator('INITIAL');
$printDocument();

$doc = new SolrInputDocument();
$doc->addField('id', 'testing_partials');
$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_ADD, 'newly added value');
$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_REMOVE, 'remove me please');
$doc->updateField('field3_i', SolrInputDocument::UPDATE_MODIFIER_INC, 5);
$doc->updateField('field2_s', SolrInputDocument::UPDATE_MODIFIER_SET, 'updated string');
$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_REMOVEREGEX, '[\d]{2}/[\d]{2}/[\d]{4}');

$response = $client->addDocument($doc);
$client->commit();
separator('RAW REQUEST');
print_r($response->getRawRequest());
$client->commit();

separator('RESULT AFTER UPDATE');
$printDocument();
?>
--EXPECTF--
=================================== INITIAL ====================================
SolrObject Object
(
    [doc] => SolrObject Object
        (
            [id] => testing_partials
            [field1] => Array
                (
                    [0] => existing value
                    [1] => remove me please
                    [2] => 15/01/2007
                )

            [field2_s] => initialField
            [field3_i] => 0
            [field4] => Array
                (
                    [0] => val1
                )

            [field5_s] => unmodified field
            [_version_] => %d
        )

)
================================= RAW REQUEST ==================================
<?xml version="1.0" encoding="UTF-8"?>
<add overwrite="true">
  <doc>
    <field name="id">testing_partials</field>
    <field name="field1" update="add">newly added value</field>
    <field name="field1" update="remove">remove me please</field>
    <field name="field1" update="removeregex">[\d]{2}/[\d]{2}/[\d]{4}</field>
    <field name="field3_i" update="inc">5</field>
    <field name="field2_s" update="set">updated string</field>
  </doc>
</add>
============================= RESULT AFTER UPDATE ==============================
SolrObject Object
(
    [doc] => SolrObject Object
        (
            [id] => testing_partials
            [field1] => Array
                (
                    [0] => existing value
                    [1] => newly added value
                )

            [field2_s] => updated string
            [field3_i] => 5
            [field4] => Array
                (
                    [0] => val1
                )

            [field5_s] => unmodified field
            [_version_] => %d
        )

)

PK{X	[��q�**(055.solrinputdocument_serialization.phptnu�[���--TEST--
SolrInputDocument - serialize/unserialize Exception
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

try {
serialize($doc);
} catch (Exception $e) {
echo $e->getMessage().PHP_EOL;
}
?>
--EXPECT--
SolrInputDocument objects cannot be serialized or unserializedPK{X	[b�[�>>/014.solrclient_addDocument_nested_document.phptnu�[���--TEST--
SolrClient::addDocument() - Sending a document with child documents
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 'CTEST_1');
$doc->addField('title', 'Solr adds block join support');
$doc->addField('content_type', 'parentDocument');

$doc2 = new SolrInputDocument();
$doc2->addField('id', 'CTEST_2');
$doc2->addField('comment_t', 'SolrCloud supports it too!');

$doc3 = new SolrInputDocument();
$doc3->addField('id', 'CTEST_3');
$doc3->addField('comment_t', 'Lots of features');

$doc->addChildDocument($doc2);
$doc->addChildDocument($doc3);

$doc4 = new SolrInputDocument();
$doc4->addField('id', 'CTEST_4');
$doc4->addField('comment_t', 'Child Child');

$doc3->addChildDocument($doc4);

$docs = $doc->getChildDocuments();
$docs[0]->addField('one_more_field_t', 'testing');

$updateResponse = $client->addDocument($doc);
print_r($updateResponse->getRawRequest());
print_r($updateResponse->getResponse());
$client->commit();
?>
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<add overwrite="true">
  <doc>
    <field name="id">CTEST_1</field>
    <field name="title">Solr adds block join support</field>
    <field name="content_type">parentDocument</field>
    <doc>
      <field name="id">CTEST_2</field>
      <field name="comment_t">SolrCloud supports it too!</field>
      <field name="one_more_field_t">testing</field>
    </doc>
    <doc>
      <field name="id">CTEST_3</field>
      <field name="comment_t">Lots of features</field>
      <doc>
        <field name="id">CTEST_4</field>
        <field name="comment_t">Child Child</field>
      </doc>
    </doc>
  </doc>
</add>
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

)PK{X	[�r���#160.solr_update_document_block.phptnu�[���--TEST--
Solr - Fetch and Update nested documents
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$updateInventory = function ($document, $inventory) {
	$children = $document->getChildDocuments();
	$child = $children[0];
	$child->deleteField('inventory_i');
	$child->addField('inventory_i', $inventory);

	$document->deleteField('_version_');
};

$getInventory = function ($response) {
	return (int) current($response->response->docs[0]->getChildDocuments()[0]['inventory_i']->values);
};

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_STORE_PATH,
		'wt' => 'xml'
);

$client = new SolrClient ( $options );

$query = new SolrQuery ('id:1 AND {!parent which=$parentFilter}');

$query->setParam ( 'parentFilter', 'content_type_s:product' );
$query->addFilterQuery('{!parent which=$parentFilter}');

$query->addField ( '*' );
$query->addField ( '[child parentFilter=$parentFilter]' );

$query->setStart ( 0 );
$query->setRows ( 1 );

// query existing inventory
$queryResponse = $client->query ( $query );
$queryResponse->setParseMode(SolrResponse::PARSE_SOLR_DOC);
$response = $queryResponse->getResponse();
$existingInventory = $getInventory($response);

// update inventory to 300
$document = $response->response->docs[0]->getInputDocument();
$updateInventory($document, 300);
$client->addDocument($document);
$client->commit();

// fetch the document again after the update
$queryResponse = $client->query ( $query );
$queryResponse->setParseMode(SolrResponse::PARSE_SOLR_DOC);
$response = $queryResponse->getResponse();
$newInventory = $getInventory($response);
assert($newInventory == 300);


echo "------EXISTING------" . PHP_EOL;
var_dump($existingInventory);
echo "----AFTER UPDATE----" . PHP_EOL;
var_dump($newInventory);

// cleanup: restore document's original state
$document = $response->response->docs[0]->getInputDocument();
$updateInventory($document, $existingInventory);
$client->addDocument($document);
$client->commit();
?>
--EXPECT--
------EXISTING------
int(200)
----AFTER UPDATE----
int(300)PK{X	[����files/sample.htmlnu�[���<html>
<head>
  <title>Welcome to Solr</title>
</head>
<body>
<p>
  Here is some text
</p>
<p>distinct<br/>words</p>
<div>Here is some text in a div</div>
<div>This has a <a href="http://www.apache.org">link</a>.</div>
</body>
</html>
PK{X	[i��J�J�files/extract_file.1.pdfnu�[���%PDF-1.3
%�쏢
30 0 obj
<</Length 31 0 R/Filter /FlateDecode>>
stream
x��}ݓ%�m�S�%NU���M&O7�㛔]ql�����+Kr�+ْ%��/~��=����{feY�T���
��/�q�8�8���~���ܷ�O�z�7�7�o���7�'�{��<~��?����C�%\ByLշK��!_b^0o3�K�z�E�S���?�~ �]rbC�y�>_r��<�K��<��!>��(����~�.m��]2���O�\��ņ�/�Q�K#:�K����/%-�7���L���
�s�����	���<�.��r)x��K�D�g�cN���t�"=AS,N�,p�����
�D <�d�e����]�����f-�"�t�X�J�`�݃H�Q2Qk��,�yY`8�j�I�.)&����Y�xI<	�K^o1��H.M����zIL4�7�4a���	_(2G�[�3��8�I�0^j��I�&�
%�
��k�	���N�2�+(#&%0�a�(�
9�1̷�7�
^�I�@�y��K�tXܐ��NF�	ۈ�M����K�T�_�V�3�=�N���Ό��f�~�.�=���\�n1��Lhrʮ���/S���R��2�yAR֙��{�^$��g~��PXBV�>A���
 ��Y/����OI���B�I��T�5���%,�\�H!!��U��ov�}�n"��a�7�h�m *�X(2l��waA���/�{f1o�$L�<X���Z"Y��Y�IZ��@��e�N>�؊�Š������s�wSz���=�*L��*Cxf��V����D���<�Ƒ��M�#��N�̈e�h�����Ri���5�v�S�,z�HQ&��^�RAS�T�cQ�i{�OГO0��X&L�d {����'�k�`0`�����pJ�BW�ϣ��?�SkK���.�*��X�--��ƶr��0��W�E��a�7\���!��FܱQ���4��q#ELO�?��mP��w�I��+�*�J�B4��u�L;�f��$��nE`��	�S~8���@(j˟�X��!V1)Q]]��/`#����yɝ�vI���I���~>�{[%��
&���AxM��
N0Mh�_0)�R�W�Y�eE_?a����KWD�IŰ U4b1�11�ʚ�0��Lf��i�AP�EZ	Q��QV��6�*�{!�%�$�܏M���T�F,آ�P���"S�������{U��΋;u;�<��1<��\g�[0�](�-bLF?A�_�� F~"�@f��W���"0�Q��fh~�d�9٩D�W\K��UC�y/I�q�
�.�zT�:]�1�u?�J潋��dٚ ��
m$ŋ���\Ց�U�$)H�i鱃Yn�Ω,R�o�~����K";���x9��(�>�+`��A������	����w�hFV4��A�L���"xW&P�/������yۂy�����5
�t^b�!�Nvr�Rb��mg�h�
r�q`�ZK�e�gL��c;x���U4�הI�r]� �9��1V�Ai&{�4�������3���������}��6W
�3s�Whew�9
J��c�;���b��<�^�v��q���Z_���Ctպ�v.�v��@�e�*P� �Y$��Y��@�:^l�"����`.Q���+��!*��(P��W�+~��$_��"�PxQ�TY,����qv�v0��T�Z�	���I
,��O��B|6>o%���[�v>o%au��[�uuY+y���y��xt�y+��*��]�y�b<��@����:�p��O���g�����筴q��>o%w��^�^̤���-���2-�^o�(\��z!ҳ�#cۯ^o%���d����9ܛ��J�;,��[cwP��J;pX}�J�Q���[���N� ����@p����v��V�K�>�8�ax�^��K��[!Kso@�Z��ض
CV����Ӌ�u���9��K��Dl��F����J��B��G�m�`��G�����7��H��@\/^v<��FN������r��!ۥ,d������_0��œ��	�t����環f=FcoŸVD��Z’������a��Ij�/�-�g$�o8UD�`�3օT�A*7;n<e��:�oh�$����yK��y����Oė�� X���".�]���LC�E�HmxH�~�>T4�#������zY�P^�B�)�q'U� ��wa<vIK{�؞�~z q�ldBٽ��9��0�! � O	{Ü%+�چX�P�F�	KF`Ť�{��kG���5c��@i~��ou�Ѭs�q��$�Z1SX�ǖf�I�6��=28���рS��0��*h�I�4�p� *^'v0a�f!b��!I�ǃE`v��9�T��	��$voD�����!@���L2f�\�!׌�F0�]���I��%�ЫP�t#0�<���sń������o�H��^�g���%�j�wY"�+g��8��q[1Y��e����:�ɹcW1���}
2�"�>e�N��"�A�����U3+�$6��#/��LE�.+�u�����׳�F�t��F@��xh'͖��F�"V�=,��!.	�פ��h���lj��H�	t�s�3��E#x�t��h��!{���Oh����E#L���i���xhD椉h��Hg�q�@��VI<4ZM���F��V���ɸ�Ac��9h<�X��&o��F4M���F��X�C#�K�E\4�c�1��Tdf�1R��F`����hKb3���x���Ć��FӪ�4S��#��E#FV��E��O��Pm��E��`E\4�S��<S�x#��A��J��<��F��kr�S%$"���{}�#dnӫX�;=���'UM1:�d����S��Z��!���J0f�i��μ�1j!yo���Te�7$óP5�1�7~9S�FU5�D�á.B��<�<�dae&x�����29�L������Ӳ`�&��6�kK�	&"���	�;b���� ���G�9y�ǽ$6]�aX�\�~�L����r�yC�J��T{"YD.W�(��dg�y�/��fXBP5�QLl����A��dP)Q�
���R%�D:�{p\����E?�]����YpN�e���*/��4��5./(��k����xJ��<�+q�/��+e�e�i��$3!��4y����_Ƌ� ��e�h"tt�h"���I�j�KY3�9�s�s!5�9L�%���Qd.��γ����h��`��tL}���Q� fK
�b�>J�G(
W-5L�q���	�2�)��������KQk����Jx�����GatҭZ6���G�)zV�eΥz.��`��ә�}-�.08.�o�$���� ��N*y4�7�|hM���g���㉨5z�߈s � ͘�V�0���鞲�5�	<3i�2��D|N'®'�d��KA�h
k��enR2�F���v��Qz�,/�2�y�l�3w�07&�WLI�1���'�++�8���U����Cڑ���6�����"'U������5�D�#�[I�8Ì
22ە���j˴I�	��\�Ϡ
���Y�6{�Y�XOp	0�Ť�p��;HL�o�~I���:U���mNzB<��I����YՑ�C�5P݁�7̑�T�:���ڟGq�݄����V�p�A�6�\z��P�b�":A��5��X�A9�̒�se}!	jB9R�A�Z�u�*n-��\{-+��p��`���7�֔�>.�_��_c�,dg��[��d튡�#�͌��p,�����j���mR��\b��$��jO��x�4MC,�TY"��=�5�ð�ZG,���
�щeE��kaJMB.�`�����\H�%��k��>�--HM�1�v�y<0I*��$�iƈ��΋G�@}��:���ԣ/Y�Ͱ�OM�r~�甴 M�Ib�c�${�s#��Y[6]�q[0`4�\괂OM�|�1MT�سN0R�j�\��#��u_N���X� {S���𓀅�_�畘7�2�b5�U�*ը��-yn��S$,c1G��T�x���Z ��$�\D����'��"���Ylg�VuC"~��ՀP7�PŻ��3��3�<�<�QDn��$���a����a`�8�s=VD���ę%��Q�Hs��ۚNb/f��
ҫ��PX�0�R��T7W�b�#Z�HO��zy�҆�b/�1a�6d��O�z�]
�%���=��F�~(l:�"�N�vs��7Mc�5O�р?q�*c���A���.�5I�]=��"D�/u�h�siUޘ{������_�FFg�[�c�B;N�_K�> .`i��VT�n8'�pR�)L��.3�L����2�������n'4���JP�f�y��T۩/$�AQ��fS���j���L�R,�uŬK��ZQDC#;�,Bn!�U�J���[��b��-¸��f�,��o�)k��J@=�i΃��Lks��R棕IR�����e%���-�>�1aT�$OE�W�=v�533�o&i�[<�7щD`]R�NbNcia����
\�����!P�?o�>�
\[�Kz�\�\n�"����6
��$m�m�EӪ��%q�4�jB,�S���z/-\'�ߴ�+L�{е�+L~�9�!�hvR��I}.T���j!����,@?DZ��9h�2?�\+�{OljdB^K=J{�X�'��D~"�k*-Ya��:�p&j�a~B��.´��+��崭+a%�����E��%�M\�Mܼ�*��fI��ΪnXl�sz��A�LZ�樊>RU���sEp6[�i�s�
��2�bH���1a���J��e�{.��NF��ׯ�s�@@�HD�4CI�I��Ř�i���Nۭ�Z�.�������dV��Q�y�Ix��fF*�<��.�3�Z�.�r�����--\��M��l�HŭC�ED�qm�"D����P�����1<��h�DM<.$�I`!g���EF�t'�\��\DY����A/1YpQ��{����Q����F��w�O;��)�_ �I��=�� 0I)�s�M���ܻE�H��=z�`�besgEpee}a�&D�%k�?��[fv����6��2貃p�����F�M{UK�*���.V�g�|��n�Y[���.J��f�v�?G�$�
Q�Nٛef/����y�B;�w��p�z=�I��j��<M)������}9���#ވ�6�q��a��q�#�#N<��-�F�k�
����d!:��_��U0Q�Sр1<�]�ͪ'����cX��q��.!w<���DV�.\�
�0ωwY���f��f�
������'�‹�9qHT,���j����6T�6��Mr�Y��O�o��$��a=d��O��\1Ez���֪]���N��j�r�v$��I�,i�-�X�����K@�VL7�;D� �<����M����Kb�-*��@6�j�k�%ܚ����i�V(�!fn��F
8k~�2`��46�9�.}D"PS��bv@eث�䩑-⪺�<��n%;Pj���ߒ��jv��$��ѻ��!/d�U�0W��2�%u�1�&��Բ�B-�͵��n-���$O�vC���KX��Y�Z�f̤)�7��C�)�C_	
a��H1��X��J�]�����C �ƺ�B[�T���U!�Q{�{��p�&9�8������l�����d�h�]9;���C����B��7�%Ju1�aj����걡Ԣ���9PC�4�5P��k*pԢw=��"����Zt�_�H
_Yv�Ԣ���.�Ƙ���!.�hr��Ԙ��Gj�6��H
U�y7A��U��\]�^�<����H
E�6�\���H
�]���u�}��j��k�Q�Mk�a�b�����}
��8"�o�
�~�%TU���q�EXC��&M�k��k�Ɠ�k�f��J�Y3F�5�W��$X,d� �s�W�'�nEz��ݟ�!�®oK�aM�,�J�1��Z�ɸ��M@Y��>R�D�|xF*�E�`WQne
ոX��!L�&P	��im�d��m�R^�Xm����I�%X���m��mVʵ��·��������
�_��T��z܆�F���0eu
�cC�5�Ӕ>X���e�E�x��Z�;���	s��A�R�C5`J�f��5T�A��ϡ�Dj,��iƴ�Ѵ�@b5��P��o��6lY\\C5�m=m#Vf{چ��6N���)�K� �"��`8]=�Z�d&���|E�ni������D[0��#
+���^�渿)�R�����\+�7��IK�jC����V?���'���+�8.guW�-��q���T�n2��p��in���=Nu����e.�r!���+"�u=;��Q��r�o
����~nobp��
�
�'B4ͣs�}1KH�=ND����'r������Й Ҏ'�
��8u�a�h�$�z�.�z5�Z��i�ɼMO��R��A��jVA<9H�4vq�/!�s�/�ΊH���
U���͉0I�7��iN�r���mi��[���(s�U�4��-
���ED���4�v�y3�Y��l2�m"y>iۭv9\�P�S��e&5T��J~\�ˉI=a�r
��=�#���!?
r�Gi����;6w9��=bEr��)��)��J�&��9'?�5��
�yk+q��&p��R��f��2|�#J}'IH�j�߂)���9�}2�s�M�ќ{	���Kl�}Mm����s��8�b��il\��J`�A��&����c�Dž���6p���4H���ǥA����4�����pr[���CZ@t������q)
�u��4Ș�� ����Q����O����2Ȉ�7ɐh-g���lĩ�t��q��1�5yąA���?��e������ohm0�Լ\ӣ���k��`���M���j�
�0Rs��`Ȥ_Q���GK���c�ʊY�z���8�E���4X��m����S�
P�*肙[��}2+��6]��	G��m��y�K,����a$�嫗�`dYiԞ��	_�K'm0�\� i*�7؂�<&�t"�=�P�o�~A���'�	�%=�Rxn�з��䪎>��p6wZ8���38�*4���0�9s�]��yPU��S�7��G�q�nZ� ��|��&��H��-4��I�p�pj�Q��(:���H��3��w���N�R�4��iD����޴,I��IW}˜n�]�����k�Rr-س���� J����IMH��N��8���e���暂T՛��۳BҸ���ّ��&�
0r��鎞C	��|J�U����g����ް����X/�	$���ZN���:����U�6�a�:8:�J�W�NWlq�
�����h1�Ss�	����ҕ�R��ɩ���q9��H�I�q���fd�Ao�4;u`OS��eU���s��\�j.��3V��f���u-�*��0�2�>���8�6W�06�;g�[d�`#gY�{_2Nֱ�9�������ۇ�g��P5��a���͞��aI��e3κB
l�mj�4�]�G"��r�BS�&���F�D褝t���_T
ɼ`��$k������d�9r�9�U�&ř��>+����I�f�JP�(�V�dIT�I�*U���)����$�m8��6�3ܩ�4�AI��13g���&�b����
��g;�3Y���f���SU�—����P��G���<�"�M��=̂6I ����Mbܽ��i�,X����ã�7�Eu��g5#��;��zns�w���.w��0�1P�\/YP#a�Ƿh�����D,nd G
��r!������T:nM�x�������p�����2�c
_��b
�	���kGx�BT!=-�j��-�I�m�Vի�fXUH��)��Z�$��UN�e�����_n�����!��:�Ɏ7?�nB|���em�%A͙<�}��m g��x���4Nc�W.Vm6��F�5�Z8�^Xe�z*��ۊiνP�c�톢3�t|�A����3}�Sq�����d��]�ͷ�,�5�ڀ�@�3AE�C���)3�5#�X.�pg�8��DO{X�2�V�M���A/�#��|,zi[�I�L"_�e2H���7���u����R��\!��k*��ǫ��.H��*��^7��������|~��p�g#2-r��-|�*f‰���Փ�� �9���e�0����ow�Z�*���E��)�s�H`�/���ǽ9�Yh��*��*T僪��g�q�s�tn�q��%q����M��j�XDO֋TQ�S��%��u��@Y4�H�;EU�������%�Pma���\��MiZ�i�-��-d�o���¼(�C�;֢0Mz�S�3��C3�\����Ea@-�Q�&�Yc�t�S�1�e1.�>�����&2���,*і�
�0KWB�1̯�h��\��*�@�|�	�a�v��,m�54�Tl�!�\��z���=>|����O̚����&kN���9��;��4�y��r�k@�:���V�i��� �+
GV��m��|М�s��`�qH�9�����A��d̛#ݤ�)(��ݤ��ȄI2j�L�s�O�p#�������(����YX-�+8�Z�-�h��x*Ӑ�(��^���^d�ꃿ�!�\C4%�+f����+�r ��a�ħ:�
xC���>�9�uN�푊d���[��`\+�g��*}�-��	����{���7�w+���T�ݨ�˂D��U:g7Q�>a�Y�ܢ�N���ƊƧo��Ӹ�I�z_M�`�v9�Y���y�!��|�W�p�}��J�`�M�-��65$B�4�p�-l����V�um^�C�[!�A%77Nh���s�Y�,R�����A>������?�?]�_��������ß���G���*N4��f��}���_���y����_�����)�r���?��"��ʌ��%��FbA�n���{�'��)F!yA>���_ɋ)�iTP_����H~yO���~��iGb��Cs�ח�T�)���
�s|��1G�_���t��Ph�q��E�(C�fO�A�i�~t��a:-�3$L�܏����c�b?m�#J�̨O�c}�'���|}�
(e&
���`��	������}�C��'"��b?Ƿ@�:#Eݝ5�>�fO���ӆϘ�A�A�������r���nc"g��'�c�5u$Ц
�G74�`�!%�UJb��28h������1��!�8֪�φgb�1�T�7^���x��ƚ퉿��ޣ��zGb������9�b+Ԇ�~���Xc�7�S7�i�g�`��sE
���?j���]�����".:^�_(��1�3��O{"�9c��Hoͨ��=�op��::c��s��e����kf��~3<C��O��Pv��1�)�-� ��b�u�y�� \�~���u56ֱW��E��7����;&����u��;�����=L�<�V�������$|�Q�'OmN�Ǽ	W�&w+�7��2�G����v�J~�#ݐ�1���J�'W���
�ȱ�D��셷"c,c6<C+�l��E�c9r��_<��+���؆��>��M��]��Ƣ�2$�@���
N�hl��߿h�ұ��&/�yE3�|#�|���c������k�76�w+\e��I��bo�r̃����b�i��?�7˱�e,��h�'"�?�R�21����#���"
m��y�����D�Q�w5I5�s2nH����:��U���_�1�q+`�a�JNg��{��78g�c�s�����f���zڑ6ҿC�s���t�,
GB�[����7��tv?�!p7��X�G��!s�_��<3}��=�獄!$Fe䞉C�����c��Գ��@�Z��۵6�~,3k(�X 2��n��O��SA�J��`�e�"��LtF��nLȰ^c��Xo�A���۳��i�P���sEgd";n.ߠ5��CF�+���Xlx�oױ�˜l����3@=ī�ʘ L+s��N���C�ƶñn��f�5�&�8�A��]��'��Nz

��c��q=��ww���:{ԁpm�����6oo֏t���tN�e�)OՆK"-�X7�?�M������F���c}$�1�0�1m1rrDž�+ͤc���H��-�X�~��<֠9�h|���=[�914�t����;bb�:�n����
	3�7v����� �.���Qc����]ω{�v/ܥ��+t�~%Y0��5�cex�/8�_t�G�%��h��Ą/g�g��xO��m%ͮ
�B�Գ5��q��JBi�=Щ�(q� lY?f�
��3�MG�Fl��#7T"��z�f�_%����E>���%��
 [y5&4�1�{Q�+}�Wc�7cc�h<4֤b���ٯw�CY/�vyT���35D�`�1��z���^,_�����n-�G�j�/����ە��K�V6�%��[ko���rƆ�y�ceOC�O���2"�+њ�&�؃?Y��j{Ʋe�Li)ì��/���6���Ǯv��p|E_�/��!�g+�}���K"����y,�{ڪ�%]DzncD��ݡ��{W��^eO�gǝ#�{tS��������Bx��7Ƈ1�w��~� �p�	x��Ř�X4f�O7���. ������n}Ǫc����L�
rg�jߏ���Za���;��y��M�o�����Hj��*�'Cßፅ�WA��3�c������]�0��[ȡV��=�c�rϊ����3����~�1��8��@�Km����w:�:v���/�m&�R����;�V��݄�}ű{/�2�g��n�R���}����X���h�[m��K?�R2֨ix�7��aG��n=���b�3~C��€�^	p��0��UV���J�k��3�7��6���c]oƎ��B�}q���U����P�8��sK�Z�>�|�:��,|�Q%���lҀW;^����;f��W��{�Z�iis����c�>>q��Xc���m��㖰��=rO39�l;�'��y��\�j��Oߌ9��]�=~�U'l,�{�ãc��3Q��
�=���*�c2C���a�*���Ƿ��N���=�QmCL��Q�yN?�y��گ�w��6[�ï)m~�ड़,7�O�D�~Cf�$�g{����
����>t�s4\��6�3�l_��@)��Ր�0<���ɞ���_4P�b߷�G1�S�/������ﺹSP��5v�ñ���>#c��w�ip�un4a�/�1�➕[#��ز��z�w�P6:uF������W��4sAw�\�d4sŞ}ۧ�.��
q���m�n�`([�3/~���W��~���&�M��0�0�7^�d���A���_�2^�x�/�����S�o��[����XGIڻ�r�����KY�g���Mb`��!���_u�#
v��N�
!3P�Ǵ�`�����k�A0]�W?�A��!�Qc�cZnp��̱፱�qH8?����ҳg�Y���~ce
Zzl
~X=���{ P,�L{���b�6D�X�1��ю�����3�1�?�1���/DZ�-���:��+���ٱ���w�Xpc���ˆ<��?�1� ��14��-��f����ۧ��=f<���y�CPn2u�r�_�(�������
��Z�y�c�Ѯ<����αNk;�!GZD�_r(�(c�k
y���^�F��W{��I�a�����ul�S�CKS��9�����}�"���N/T�q/c^����\qM������ָ��k7�oyz���c*��=]c᧡\F�b,��S��f�[�;z
{/v,����.���咚s�y0,�؞l�՘�p����X�.#�3$mlQ�)��Ŀ���5G�L�t,�;��O��]��w֫U����&]e���N2������Nٿ��5��1�m��/�Կp<>�"���0~�9�~�W
RǨ�oH�����[����x��ƢC���8�^� �W\_C�
Is��\�?��a�����w�~�j̯0�}�,<.W�M�ϱ�n�K�g�aY��|�j*ƚ��c	�{R�N>�z�KN�T�3�c��N{N��!��Lk�vUgϱ]�its�e|�j��gxٌ�i��_�Sܓ��.�X��[�M�����
�������f��~4/��[�Ozl�{�����?+w��Ur5�fc��C�/-0��B����s�c]B��xS^���N*�uo)Y2�2�қ$�J�eH�X�qSm��k���)Ҙ�W]L����Ы9��koߡ>Lî_42%��x���ӂ~,W�)n��O�E&�K�6G�hC���k�Y���a�ƒ�c3�w}�@9jLv�R�7�b{w�t�zCD�r�ߡB�A׻��+?����
�؈ǩ��c�{�UW��i,mw,0W�����wt����w��r;�\Y�%�tk�A�qj�J?֘39���)���a'���!��!�w��+Of#�M��X�h,�=	�)����
Q�ժ��Ԙ�XL�鞈1
�;�
��K��~�X#=rچKg<��{�?m߱�c����~f�-�#nx� ���؆v��W��2ic�x�P�	'nӣ��t��gg�1֘|��
c�?c�p
F�5�i�2��z�U��Ao�B�%L��2]��n��NgV�{�j
��>}:x��s�	�L���Hr�6���1�;ޯ����ި�Jt�<M�r�>�0��<jW?�~8�����G�n����	Ʋo�Oo�<�g���ے�������yt�_���o�lxc����)�X�1�t�'��I,��2V�h����L
��;��S;^/�ſ����F�˘m���1��]['w).?���߼�a�����7�1o�to�1�{��5�0,�X�}|6ܥK��7qy�?WK6�m��|�z�!�c:oP?F��&y�G��K�����UL�_�d��a��Vӕ�ڱ&�{��Ojǒ�����C�c�ޠa̸*}��.
B�D�L>ޥ�t쨗�&7�*�}�{v#�t���L�w�/n�t���wu5��L)�Jh�����F��8li���aceڱ��g���t˹
�ϗ�W^��ely�2�F�g�3�!T��ߚ��n]��˦����M���;�/cI����M��w��dέ$2��y�r|��Y�nx{م��N��ؚ��;���#�7���0�?�v��
n�]w�����M�u�'ݦp�B�N��kq,<��Ǜb�+y�M���%�8N��vƴǚ�����J�c;�
���%z0]�Q��}q���g��D�q�`,%|�˚ڥ��qa}�"���a��/�a�}���{�z�N�>gl�w?���ER���#O��+-�c��Lb�8�ܷ�����0��K}��ñO���usloK6ޔԻң|���\�:mԟ_�3=]c����X�1
�ch9<Ii���7��KC8�S>}��>C>n*����1�X�s:~y�Guޭ�3q{J����_<�*��j<u���i7�t���I�1������l�2���2�ae
��o���ۑǿ��B�_y�7R�M�����VPz���瀦^j#���v�f�nic&����?䳶x�"����v�7BÔ�pc74����c|�����9|�W�$B���?�<^?��Z�e�X(����g��Q)�C�e?��������X�覰�%��S*�Q��,�B^t%�M'��7�}x$=��i
���>�Q�l~�B~m\�m��^�����ٗ��M�hy���e�6N�������/�G7�2V�3<����JM��T���+�Ȃ�E�.�H>Ih7i�|)�l~��_rL�K19�>n�{;�{��P_/K�Nġ�����S����r�aKi�2��f����o"�<�}�	�a��_}И��1�7"��9���:&��`�^H�c�9�5���0(����_�i0�78�_DC����~&
Kfb�W��!�����b:$�#��Aknj74�X��Y�e|�����`�n.c����fx,Y��ě-�����fendstream
endobj
31 0 obj
14422
endobj
47 0 obj
<</Length 48 0 R/Filter /FlateDecode>>
stream
x��I��9�&��S�	�9'�U/�zQptf`V����o�|�pR����1�#p*�I�H��?������Ƿ���x�?�k*���o�e�-�o���m��>�.y���(q����?������&_9����R�O�ޕ����?o�Af���3��Rm�Y~7���1�k�J��1t��>s=��c��%LJ�S�С��t�W���gm��b|��J�S}��=+�؞������R����?�TS{��O*��?J���Y�峧\����'%��4]���(�㹴����X�R�I��3��:�
������e������8v�zK��klw?��s������ �Zƶ��ߤm(q4�-=C��d�?6�{��ղ���B)�^���Y�9c��g
{}�X(���f%���*;h�ϒ�`QSz��gɁ�y��u�ۨ��ܺ��0�~����V��O�{�[-�|�4�����J��E
��Vaö��,Q,���Yv�V�%/Xh�������|�En9<S��d�"W�-�X�,r��p`���`����\X��?��޼�,�ı+�p�6v~�2�m�sk�D�g��0������*D7X�n�2(M�#
��3��<��)����I�XY#K��1м��Rt�f�����)/w40+a���l���B��wѴ`p>G:JN<�e<��+�8�i���`���!��}T�P�@ZP����`��!#�Ք��R�?J�cg?Z.O7�%Q��m���U�A�Y`������0��MP�[�В<�5?�`�EPZ�`�'�6����:�a��-?ޮ����^�R0p�c�����*K��^������}a�'x`�
�U�ȍ��
8��]E��_v��Q�����)�K6�F���Ŀ��ד�w���v�'���sZ�E�x�3�C�iٍ��v�9�V�a�6%�9���������=⻖��P-�]�u�w�0gG8�,J�?h��H���p;��o��
�sD��K��B�6����X>��%k��͛�����<��8��}��#J�q�n�̂�0�Y�A1��/�#K�y^�����ǜ�ǽ7ฏ�yz����}��0c*��.��wő%�<�͜7���;�1��8��}��#��ZYҊ��#�o���3�lM��h'\�9��^ˉC�JZ&K�=xY1a���O���[�C�A�\�}�B"u1Duz�aE���2��=�	��k�[��m>>i3�߱���g��$��0α-��l;��a�6T�d�>�m����X(�CI�X"(�8��I�]'E��c��&��
f�u�Dvq�1��NX��]�ݝ	�瀂���%�1��|_Lx|q�7XJ�"kz�^Q��[A���ټ���ݛ�x�(8�O+Os��H��{Lc�p �-h�^5\)ȅ�>����qb�vt�u��|Wex�ө��j}��.����(�֬��g���8�X2�b�]��q��K��3�����:��,�����2���(����6��hj(
�q�#��x��������]M�lv��i��Mѽ���b8v`4z�X�̢(.�]T8ԅ�.ܴ3?;�Pè�5�`��RY&�T
�=���iʕo�sf�=+�}�K�lƱ��r{\h����C�;_ր�Z����.Vc,ŋe�,��,�c;K����7�N�S+?���
!:g_���������R��Vˡ$�C��b8���*�u]�e�p-��#�%��b1^��$f�H��EW��j���}��D|���!��N���eY���.؅���m�Ī��|�`���0����'n���ڐ~�ayl\a50�:�ڿ�hF[��1�cs�!'BO�C[���[�u���j��A���~8�C��T�T�˜7����W���*\���{���
�ߖ�,�>^�ǭ��9}c��	iS�,��>�a�?����SDylcۉ�|֧٠���������'� �tҚ#���顏�}_9�1Q�G�C�}|��!GUoYs��
���C���/����w��;�����ǿm9˿���צ��o�S
>��(�}(�>�cFo]�,�g̩��霎�(Ģ�[)�QK�Z!5�c��\��C���kD8��q[%�0�˪Ū��9�6�8�
��hݩ(\���*��\7.T�_O�;WvHV���.�X�.~ö/Tx�c�dq^�']����s�6j��J��c��0A�Ҳ��w�Q0�R��
�'��
��[A�:ge�^��^�����,&~���_�<��e�S+��A�?�uN��\T��!��^Ta���Iz��=�Bܸ�9P&��c/��=h9��B�쯥�r�r,d��-d��B�tpI/9���ʥ�;��&�S���8t�����⇉�wY#%���kT�M~/���/�,μ%�����F�h�k�#�'�ۚ8Ӏ����t��b>�B�ޢ��?i{�a�Cp��XƀS ��k�^iʙkT!�Q��5�=U'5JA~�Y%�c�6��O�;]|�һ_�[�.��]m���~~�.�l��m�����mF�DB���w�(s�&��~�귴�������	����$m�I����\m8*B gm�ِM�%����\J��{m��H�w����5~Q��s���B[����P��9ˢ�R�ȥ���5W>^+߮�����s�%P�X�r�<�t[����\�䯕���{_ΕO��Ww���J�\�ۉ��>�3�O�8���x�2�=�tx�ѧ��˲x��N�$�*ln����KPx������)�!0��s����B�Dk�f89�y\b�AK�
�NXW�I�Ɔ�z�^5=,�]mQFE���p�eD9P%��o�.�~�`����|7�W�,�M+���8�EO%FI�,I�[2o�D�6Y�Σ[)��%2�r�g���D
�ؒ�Y"�L�$Aa�L���k����N���V9%u����
Ġ�_�sK�Y"ְM�����?M����R��Ђ��������:�̖�|CP��nηT�ؖ����-�DZ
GqQ�В������lUl����&%UG۬%`�	�qD�j)�HJ��Pb*zL�۬)(�
"�CX�n�*-�Ԑõ�@Q��¯������^l�phx	u>�R]�ARy?��i�M��t���!_�,<�U٥�L��Ft�a)]��3�&�B��9�QT�s��S�O&1��	��?Ƿ/��"b���2��{�zv�a-̱+�N�vU�]��˶�TR��[��\%���)v4����I�}��`QC��ߩi�hK�S�q�wܧ[��WLX.��qV��<„��	R�t�����CT&�%�ȩ�"\a7
7G8c���KU�^jH���"���FUmz�"����[���&c��W̙/��8�w�[�cΊ΀��pw�Z�:��s�I�� ��mN�~�i��9'c��z�@��oJ�*s���
��%��ka��G�4w9�5pf\?t�����_?�M/{=9�z��3�1�8���A��Ը��)�`��Ze�Uc�Z�
{hN�1x���JB
4;UIi��̛��֠IM=�L��i�":�T�|y���2e!�'��,F��]J�f�����-���vcӣ,�t�Ed�<�"�n�$s1�z{��\�ytu$��àۆ�d��(��0�&�
*���#=|ov�.v���Z]�т>��UW��ϟ�jk���5<f�8�m���m�h�6���g�P<��(�v�^߯���u�;����P8�>K�Y��pl�G�X��oS3��1f�e���V�?����j�	�>��0�����^K%���8(y���ƃ8�@Wo����d+J���j8���Pt��&1۴
[�ب�x�VW�ٙm�5�a�
%	=p2��e�O�\*QL�kh�1Y�d�B'
O	��V<��(�:Q�;���@1���`뜱/��)à� ��QR
�͢���'�k�D�A��Z��RF����Y"nU=p <L]���T�GzE���u���3%��KA�i�x�j+�z�i<F$��R��KT�8�<��F���z��F�aĎ��2G�6�Q+��+�5���k��Yd�Hbx��A�e�6�e�CѶ�W�y9���C��z��ƒz�ٛ�x�(8&���f�KƗ�(�T�5G��k�c�D�$�|c\GX���b!��XgAQ��#0�l(CK`�8�h��n"�Z�L��[)���	��k(��p]x��KY�7n1	�Eg%Aq	����8l���^5�Y��,�����ƃ�+|u��"�&�$*Jަ��-x�FvZ"1��J�b��a#0t�VuT�~Ql���Y�v6k���#�l�h܈����b�F��yN�p�K���{/Р���Qb��p��r����p˶(�����Wl�p-�©�����["�k�B��K��3=�?n��8�Sm*Ƣ(l�	y�^�}����I�()�	ىX�����%�U��fg0-�
��.<��W/���5p+6K@%�$��E�`C-v^�k�<'ϒT��z~O�-J�Ac�ޚ�%���Ȁ����V��%����}A�(BPZ�$ҊQ�k�
�aas���q�Y4�
0�6Y���,��`S3�J0T
(4*��
n�a���}$�l!3�!L���(�e=�c�٨!�d�R�I�XW(d@��5s]Wo�P�#�z���'o�0��Z�f8��7�D��0���6�k��͞�7򌝘QC�; 
f��fO̜�&f�p�����D�O�V/Ɗ�H��h(,���		��O��M�^���4�Z��������jsӣ��� �׀@�DNa6�Z���~W�^�
�;q�Y	(��^��y�������)�j�"nK��Lp�6}dr��&�Z�DVR�0��Fb"�u�a�X1�Tz�1�eAu'#���%td)�VDZ7�?n$��I���7 ��'Z,��#�� �,�b�����^K7
U����L�x��Q��^�e���g%�aT����Zb���Zl��P�K�o�hj{/@m�%�LqIOS
΀#g��Vl�
5:a%��%(y'���P[#�v���E.��1`e
W�G��CĶ���h�P�G�Í��N=�K0p��J��M�	aϟȴ�h]ZҬD6W5�5���ND��^����9�5g����@8��I�@8w�ͳז
�h%
�e7<ί���K"nYݵ����;�B�Ȭ�8
G�=qk6R�yk6o�FF�(o<N�p���v�H=�2uũ5��s�l����k�8&+!�68�x���}$��[�d�E�d�;*p%n�vL���6kK�!<�q��v�b���
q���T	q4�+\����j�,ټU���y�pƼպ��T�$��
8��F�%s-U;p�Y�<qı؈�%�J��P
������@@-Od��ͦZ׎�+w���٫zC��ٮ��V-b���|�P��jk$�u_8H8�ba��yo;kv�mҲM��Jɰ���v,N������q]�1�:`II��
�&~6uS�m�a�vl�N��HA�����$0��J�H�ț.W��CJ0o4�1k9.�T�A V��d�j���x8��@�m��^��R��fC{hs�LyocG�t�����@�?RfB�ڞ�J�	�F�
X
E:�5���TV��}����P�Gj�X	䁳٬@��tV�a�F*7����6}��xLܶ^��6�[����i+���
��`�r����C�=�1mѦ-�2v4N7b5?���:^\�Cg%�P���@�%�m��6����6��		4��`���$�5N!b�v��vJ�U�j�_ף��qo����Hļ��::(����G\�XF�։a5�y�%�x��-pl4cz���}#��0� �]�>��8N�ހ�6 0,�����x"0ζ�Ѷ���s�(:�U�댌=�㎆-��P[#�F�:J����`K'��`�f�(��Z���l#:��Bc����βFuC1��ۂ����l:@#�WL
wȘ�%݆F�@��������*�6��m�z ����g���Y�G���6l��q�f�X�E��0�:l�`:`����@��6�t�b��/.f_8��'ǩ�ћ��h�q�`��Xp�$k�B����p�i�G��Lmplu�q~�o~�i�V�P��L������Ď!��H�(VCAU�bf��qcqD\��}@`�<1�)�D���)8��P4Z��P��܀S5��؜;G���Wo�cC����WɎ"�38)�lV�L�
ł~��bƆ����a"��,Gg�(�Q�!T�P�ɘ�X웲�E蜮��%���X%O�'�
�{o�(�Q,�SS�������Z��P���D��<ݸ���q�a��)�k��b��+Q�����
��؜�Zxی�0Hƹ��1mP�\�q�[�-ǽ7ฏ��(q�����q��a<q�C�<��6��'
�{����c5".��F0z�Cb�͋@W}�D�[.D�i�1��on��V���Wo��-�KR��n����n��P���j�n̔y��U���Fl��Bc���m��
(�F�ܟEC�{e.��*�J�)�^���q��0R�L�'\��w<����[\�G�qˆ�zS����
�i*B$�	�ɾ3M&��:qd��x`�lp\���k�go�����čU/��'���zv'0�6e��H���E�@���1�vQ�Ea~�c��z����k��e���I�2�y�4��"k�{Q'�8�]��@�8���R�9�-�I�2��JRM��4�B���w�+0��_��-�w	�$݆
������;m�d�=_�q=Q��g�%��M�1�d���/�X���5:��r�Œ~ms�QxK����,a��q���m����o��]�EZ��l$m�:��V��O��x����>���?sN�_p�q,6+꽟m�;�dt�ǑT�������L^8�kc�q���eɦ1�
�UH�q�������Up`≑w;<��!KÊ>�͒��P�E��ő9������]Kj;1���<8�06��*�ȝ%%?f���}��˜LWoo�����\���|��
bm��h`.2��L8�ljG;TV��>VɆ�$~�q*vSr��i�h�-�LA0Dž��S�x�Q�_{󫷏U��.z	�Ѱ���� -��h$\�>���
��g׎6<�9�Wgo��.��J+QT�~�e:-��gU{g
/@� ��t�q��{�x�G��M�Z)�܁c�+l��=2j��%�4�QGіn<�X{oo���i�]�[>�+�K�!�؇���z��s��~�ƫ���{�w-���t���ߊeV׊��E��0��3��#�"������]K��q�H�FB�=�YD����)��<��'��Woo����k�L�S���^�U����Z���}2���K��ٛ��cD�
�]%��Í�n���6ѳmSYR��&�Mv}է�T�@��%��ۙ�:�c?K�S-�4uX73%g�ca��S|����R{/]�Ե��Nq{�/��Ϛ��2‹��|+�/���6�L�t��G�4~^�..pW���Ʀ�ti�z�{t�=�DvM�*\5�7bz�U|�-<LS������\=�}�[M��kM2�$�Y�D���f����0���������_�}����Q���������z"W���m�/`쳻�]���m$���T�^����٠Iӊ����*�Q�n��2��[���eKЎV�Й���\4�;���R�]��S���:�]鳅�)�/v%��	��>�e.�����Lե�l��z��V��f��B�8�S�uK
=:�T��X��x(��F��}V�5*��}�ٸ�+M m c�8��P���#��>VVn9*�T������S���,�x!Lu�%���ṁ�`U�q���H:P8�n��H�Ì%��mQ#J|D6Slņ�tjĞ.lˬ����𒒶��C����Ʊ����:�n�����>�zkP��E�zn0�W�Zy���?y���m�&�6s�qP���e�#B����NO/���'�!߭3L��r��hw�p����8����}������굦�f茰��B�e����<��F�y"�]��z�n���;�zj���7=6Cϭ�b��ɳL�`ю904m��K���!~�ސ�q�w��	��>��+�sa
8�g�p#%|\ʵ�F`+j��Gj�wn�����ֿ�{p�{Ud�=����ts��l�T�,I��g�˭y\ʷ�;�ǥbX�}����)	f18dD��Q�]��'�h�'G�B�䔸�����>]�|�����7�"�V�v}y^qġ�<�5�����o��m �����L +Iə�C,���f"h�eu��-�����P�#X��=�ƙi�
r��XH��FTU^JҴ��
����Ϊ�ހ�>"sm��1Ն���"#iM����'ﶂ��/��w,v�w��i#Rm�Ȭ-�G�3υW;!���(ͶKEzT,��Kl^�}�]ý_�7ʕ��q��P�i�����R��>�
2hn���]��;�x�D
.PDn����`h������>��a�}l���h#�����]������I5�޿&�����+N�jd����pL�:3�!J�Ѹ���f��x슰�f��#�2K���L�!�Ht�#,�5�ZaQ�bVhF�f��h%�io�Oţ.<vK��
k������Bʏ��g��%�yR�I� �N3&��eU��1r��\���O<�y�ޢ�T�6�JL����j�3�Y���S�H��T���t�l�4���>ϯ:M�����{��fJ���'����sy��s{�ɠ�6�a�G��bx�����K��n����P�b��È�y����g
%׾=c(8�x��������oW��h�f}ã�~W��BX�h#��59���c�0wo�	,s$�s�6�@Ñ,DJUmy0�]�W��/�%��	�����97fw��>⇖d�axQ��b3By����^xhf*�+�8�WP�G��6�����
���2�­ҿbuc�~E�Լz�@�OZ
���[w�E���Yw�)�8ݣ���7��,61��,��l�`�A<��WL�Ē<d��95�_�D3��\���ykyX���č�S�	2^���kRs2�M'y �=4pn���O-�%I���񹚦Rl/�I����Oy�J�i�j�*��L�w>�m��>�>Ɖ��2�N�&�c����ۅ̕�c��$�E:?�O�p{;��~��ȹk~�4o�3�]L��
RR�ޝ���뙋�v�_/��%��C�~���0^���\,Y��=��8����x]�"��L�.`.����2����ۻ���]�Z'��hۣ�zd�7Yk߰��s�{J�jd����f�^��"ZƝr��ZęY,��ens�*X6?8���.�r��`���d�3������R,�{�\��y*�EdL�O�%ur�
H))V��3v����D^穄y��n̝��%��U<s��yf��lUql*���y�q⥄�.<){��%w����幄�D��x9m^��80��ܘ�2�ȠX&&%)���lU��;f䈊v
\{ӄaVR�s+�m��,R�.�a����3��8K���8X*͞�"�K��B���ZUE���H�|G^�UX�gIʚ�G��n�5�[�ӵr-O��X��[L��-�5g�<`[��E0��M&著*�7���l�zeד��'#_*#�y#Wn�`�o쫆>8�g��5��V��oYϚ�|��/T"�ֻ���p�,Y�*ᩫ�MW�%�tU���l�%�T8��xgnU�F�z�[i7�O	W�m�3`N6�*��k������7��ߡ���ڭF�Ո7�v#^+��4B�F�5%>,#�l�I��h��N�F���W��쐞A���T��*(�&#^g��A��T|^5���)�^C��Z�)<@T��I!+1���פ)��eg�f\���$�F��\ �+�8�MA�(sa��ș���>'�ظlZ��df���vy���hz4�K*�����I�›+9�ʣݶ������)%ix����'�%JAHp^�ϐ��h:sS��� C�����
�M؃���#��̵�|[gUӣI�z��=�*6"��[�E�K�K�[c)w�ċ������r%������rx��6j*�����P[Rn�a�,n4��O���ڥ�i�M�/9<+���RAl,��n�_dp�dp�dp{������E���|M7o�k2ػ.\�~�ѯ�`&^��o�wD!A��t�yM)a��Q�����I"��F+9�;YJ:)�2qҸ�'��I�|��W���M�v�"��S4�dv���&�=�������S%��QOp��x1M��k
u{�;�r~����q	��G�Q./�^xD�xD{���&���������/��_�ޔ�r�K�O&O&a�~�?�_�����uO6a꺿�����$aR�E�O>�^�D��D��D����Q��)���S�{�����/|�l�Tu{�Tu�u�^�+�?K3)(+����1͜fi��m�O/x��o����L��0�"-�2�$k�f|F����1>���#fS�P���}IS1
�x��G.��aۈ��ga2o��ȯ�.��JA*i&L�|���d�G~E��hB��Q�D-�~�a��w�'%r�b^��m���6�ԕp�
��1Օt�+�RWҭ�,��_6G�9�is�����49���2M�x���3��/u������TW����K]�+N��q;SW̭�ԕr�
���A�����X���_�v�28��b��X���ή���k�܋נ�h,��X��5��mK1��Aca>U�4���,�͈�k�wв��-%I��Ɋ��v�IcM��\§�����U,G��
��{HnK~��V��9�ԇy��d�g�X�;�/$�r'�C}Ő(8--�	���:��B��L4����z؊ޒ }�v_��9�,��.�,��X��t�sM��b��Kg�*�u\���U,��b�L_����7�/��tV,��b�Lgſ�;.k���
�+���x3V�)�u83vVBΙ#v&M{�dlQՄsR枣&iל	�s�Ε0l�h �ف2
ɡH�7ka����y2��j%:�s&9Ȼ�C}$B�`�ჵhd%![��+C�>q\��2��@K��E���F殴`���t�C����՘l��
5��1m�|�~�k�םX�C��EdFK5�.�p043�^o�C�j�\�D�'ܵ�3Ň�E3�-�{5��	��f�q��>';�ۃ�/O����N�����vZ�Whtü���砑%3N���녜��zɦ�h
�j����f��Y{bM�l'��mш\�>\��b�㳉\o�/ю�wyU)���)=��S�j���n'�|���,\Q,�v
�
�M4���:u�w��M�:o!Ao��$�rt�������-7F��A#��N�Ʋ��C8	z*��h�z�9y����E�$�6�"��B��Q7�6�7�N/���}���hZS�_$]^H��$�E����I����I�C�p�z�B��$�z����4U����ʖE���g��̟���g�L��o�l�Q���l�,b��Q
�2	'�"�9S4t�o�	)jT�W�V�b�������_��	��G����&Gb̖S�Rz7�`1�����KF��Q�&���T��/�i��L1�����g^>�w��>�s�����V���^i���B?��yl�����I[�P
���\e�	� )4(<����ߦ��	#<�M�6{�B�L�9Sz��[�QԬ����(N{H��28�MVM�*��%��t��<U?��J�9�MO�U.���1C�1u5�3#��F#���i����<�M��=��<(t>�mf�����l�>3���̫������y\���낍��R -��<�b���G�f��h%��Y�8�=K�����[���;��R�Ϥ��3�O�IW~����'\�j���@��*SU���́�~L�D�`��T֓A
�˼�I��n�v�9:;T�
C�M��&������0'T��6���mt��y�T�ΖI������K�}�Yyw���˼�]�y�!��f
���klq�C<Z,���7���ߤ��O����{3��ބ�{.�����N�.�֛�&���)�-�!����a����E�q�_�a��!�r�8�F���ޔ�{c�Й�&�!�.�A���e����1�U�"y�������hI�$�{�Do�0�I� �,@�����8�I�K��c�v?>.�􊞢����~��K���㒅3qA�Q>9.Y�i觙����Ot��?�x���PQY���� ,� ,��|u��B�o�AA����)�%�)�XYR��[dF]
��ya�Ln�w�M�d���E��9El���,��Y8�+�k$�+�kF���I}�O?�g̜�I�u�s���
� {&�$�g=��\h�o��ɤۖi8�d����a ��
ļhV�-��K��桹}V�ނ����?�W��uO��ɚĉ�AZ�C@a�K���}��*�Bx#?��\M���
Q��I��+%Qs#u!8�65�J�H!����6]�J�����cY���фX�b/O�]G�K�3wm�$\gr�4�O����`������B��ï3
|�zP!.�8�
����P)4u��]ks�����Q�o�������+���~�*��7��gI�Z�R�#�&
�|��C��|Mo8���]�Ӎ�I�%\��ib�o��'^�������(Fsv��p�FH���)2a�@�5���rzh�s��*ٷ��u�3b�r(��ɫ�.3�)3�%3�%3���l��l��,/"�]"3_"�%�ޟ^�5��=m�$�w���Q�}�L��Ku�`�J��)��wW��3!�pa����ȇ�ʼ�r|�{"|��.+ˋ'��率d�ok�|����$���X���l���Q[����v���عx��N�&%��K����^�oe���#RuK������@����d���n����u*J�F�!�$>:�/������S�sw��e�줛���NK���,��Η�wȎ��"�p�l�C��n��\�PJ��Ĺg9)�ZÁ�ϐl����%ФP�c���"�<�bS�oC��6	��$gԩ�@ �Q���tv�j\fW~i�0;)I��b��|�M��.<;\Rʓ�<ܓ'�ƅf"��
O���B/!k��NƠ�*�`���̂���0�	oi���'�G�h`��%xK6M2�B�_���ǀO���s�f1h8�b��������͛�?{`��@&d�Ŀ+@erRW:�	��#��屰�������d`�|E�I��4K#⎩nv�5Q��#�iU�Z0�<�I��y��Sy#�n�f��#���ə�Ѥ�`�3]�1�(r�ʈ����:���~�=	�t���O��3}��|�Μ{fz��ͱ�w��$��ӣX�㼝���ϳe�c��b�T�4���^c:W1uڥ(�f��8@ŀ�2H��|
5fз�πc���&�#+�N��J�#��#�Q�H�רJ��gا�)�-��,��9X��e�(�A!K��3��R�����$��{sW��pW�gܕ��VdÓƊ��? %�㎩�;=BL	�J�}�;��E�o�L;�L���a��\��z�փ�/ԋg�W7V&�A�m���}=�^�	�f�:۬V�H��j�FR���岡�\�ԗH4�Z�	x�բ�+8��բ_v���e�up�y�Y�ȉ�+��Q.�J�P	��z�I��l4��	�����G�p|*_�v�c��"�zl#�x�6^�m/o��\^S���L���;�oM�C��!��!��jh۳�q9K�
��ZLA��2�]��f�dD,��J4ͫ&rZg�Dr\�]4�xU��P"R;t[���bv�T�uB����EŮ2}}zNM���xQ��a��鰱-cN�M���9L�_��?��an�S�������/���E�!p��HFUm�3�+Z9ޫ���Qw^K+�wv�4��:�F��ã	+���W��Z������,�8岇H�F�[O�*����A}mb�g��S?�{�My\!�hK�0���d�Ӕ�����7��ֽN#��R%�Y�;��,7��Y�s�E*����H�|�xV��x�
��I> �g�qji�g���P_)@+f��O����n�Xk�����O�"ƛsR<6���է���]�vƇ5ZW�3�ԙf�ʻO���̑�|oT��6M�/�ɅdyZZ��t�;4�6�덉Ӄ�˕عv�mzk�����y��Lx�ϯ��U��:p��*���W�n?L~Q�冩��P^�0~���&L��2�ĩ?�S06�X�K��ROV/�����H��Q�g�$u�u!�1Fxٷ�?T�W��
�x��~<y�D���H���x�>�-�
<��zc�Ĉ8�Mt�$����iA"��\;�a�2��=zrm�:��J��r��O�m��T�>��٢�)#Z����
KW��h��I��V
cU씫	,Q�͟�`�<�E�ኪ<1��L��8�s<��b������'b
��iH���	����o_3fR,�3� �Z(�vj�*mdo���o��fLS�7$�Xrh/�԰�}�$9n*�'l���d��TH��ԛ�]ő(�gr[WW	\�t~Ž��H�/��t\��a: �nA2���ԳB�'�ݠ]]��{�lQ���p;a��<b�p�'��"^5R��r��W�\O��P*����}7�' 3�*�gh��{ty�#��(�]��מ?Զ �oѼ�����B7E�H�
���8g�\�D�_QrX|�����XAdM��X����O<D�_�k()�=Un*^'�)&��Ky����Zw�&ۈv���|�Cǩ�<*S���h3� ���mp�����%kU�+�N��N�\X2�Ef\U�
L�"�)_p�B���ǃ \�IT!���p�hqI�����ӻy�~���E+i-����w���cZ���`�����)ۦ
�n���a[?=�jRBPKE2p	$��oz��8��{D���G3�Ӷ ����/ʌ*�T�q�F����D��i*{�b�>�z�|7ۇ�;��j�W��`�dK\�s#���v���:�@6���MI���C�"�V�f:;�Vq�ZNH.>Cj�a/���j�<���Q�w�4��ؙ�,��Uҕ@a^.�g�~��lP����}�[��F���1�5nЖ/��l7�J1����*��OcM�lC��I�5��̏�i1y��������
�N
L�[�Q���@BHv�)�. [L��L�&�J�rϤ�$�S�`��6��J���*�g
j��F��W�w��~��	�_V�0v���M���=�!$&���*�υ����C�B�ΕK����x�����͗��Rg>��,�7D۷jp���Jt)�ݢ�C'_+��)�&�p��Yp�N�c�]��a5Y�9^�q�j�Ǖ�tfh��L������'囅|\���f��ѻ�e��~��ܻ�[I��t�W�3�Ŝ��L�g$��0���,Gp@���R�aTs֪�#XT�ùT���u���
'({83##r�cK"�=��l��T{5�ك�� ML��y�n׸ܞ�x	�	�=ٚ�Aa>�+��d��b�w��L�hsZ瞱�+�1s`q�� d�$Z�j���f�7�V@�ނR��2
�Q��Vb	uO�AT0��X�̛q騞,�Z��)#f
�9�3ٮ��G��<y{O�H�g�	{F�}N?3n��g>n�h;�t�Z/����3���v�IL�!6�b����I�a?2e���p҉Eڵ�`z�'\���s�@O��('�Z��4�9�������I��.J̳�v��%j�)�	��-<g������3��9c6+soP!���C�C}���9�<1�r��ˆ՞t�;�}�h�$��o���u����]�����|4v�ӯ5�&�w�/l�Zt��_h�9�v=���b����1_�\9���ӽ&g���E����\��'6�A0�F��͇D�C��3@o��+5��f젫`Z�|��wvN��O��ϝw磹��͍�$��ռ�H�?�`[��7o�B1Y�ad��<C�'~=��d��ҜMi�?�q|�-�*��}|�OoYѢ�+�h��Ȧ���M;����p�x�l������(g�7������;�~��{�O�����7I�8�F7frtԛZ�)�z��TX�'=z�Kx�+lB*����c���f��d�����c�
.~�w�1��a��qgO�֥^a�A���m����H�����E}j�!3�;;L�Fz��J�V�_��9�� ��J�n���q�_�_l��*�W}��E}H?(���]v��!R�A�R�$L?*���M,�������V�0J��!�9P�}
~(OEj�l_�ɹ.�p�ƺ&��X�I�����I�_>iz��K&�ʡkĠ���I����_�J�z�@�(� \p��3w�Y��,\s�9g垳p�Y��,�̙�~՜e�hs�l���pIyz-�X�D���Fl]���l���8e��fk�}g�~�6C��WM�ƱY
���" �h��oj3�^�gѦD?�mTo-��H��N�����Gkj?�?m�)3-֏o\s��o>���e�--�jW��E#ъ��vc�T��n��F�&����A��t=:��88𨆣��|�����Zt�A�^]�C�z���${��	\�
g0�h]`S�P�'�lX|��3�Z{�����.|V�Y���&�5����D�G�*~GOck��b%�/u�T�C�\�.ъ�8�"A�,x�kHS�ni(����a&V�R#��İz�p�����oA��pg���E���;$"�:���ƃr�T���w�
Դn<����N���Ēw�Hp��8l}n������=څ_L'>�Gn���2z�����D�aY�߁��Ǯ�ݽ�g��%��8
�n���4�J�Q"'��F`�q��ǮXݽ8��9��]�Xm���>+yG���6{��8�x���ہc��Z�6PC 8s�t�J� [p�8�٥b�8f9􆻳C�~/�;�d����^.�:K�Q�=J�X��RY]
��\�����z_%z����?a�u.�GK�̽�6L)0�T<��K�޽}��#8�M�
�:�9����JE��m44��.��}��wg��E��y�^:�m�q~�W���w�0��BjCs��l⫆�[��h��O���N!���=A��-��)�"���0��0Q��B:kȂ2+K�դ��Ot�N����lo�'p���;9y���k�,�r]ĺ�c4��]
���@`�^=}�݃Q�@�]�"�|��u��Y�.(C�0�㓚\�����m�j<ݓ��*ʝ!�p�.�eVorAJ|��죠�'t�3�յ>�ؽ�wgo���(�%1%H;uh)DŽtϸ>:K|�#|�!�IJ"�H����O"��4����B���A���T�G�!J|��	 `��;��Dž�~�sw��v�ɑ2X�j�	���qiMu<K|��&���h&�٧�)?N<�$6���gq����a�h���<��LIF*se� �׳>��ĥ���W�ں�؃a��>����jމ��5��kV���d�\@>)�w2K��eɫ��7��>�0�U��x�k���׈�BE��y�Ga_���"з�Y�[�M��FJۈ��AK}�H�������Q�W�%���K��̻h�ķ����:N�h8ni�����6�z�X%��w�A�
�X	HL�X����柵�����
�̅��a�Xg���{�"�;ը3V�y��
C)�N{�.
qV�A��+�zC�.�[��}������:+�W��L:�D4�`=���Q`G�7,N}t��v�Gg��j��U�J��W�[7C@�quQY�ه��qaq�6ggo���^U��Dw‘�!?�yC1��f�%l8��?n<�3���h8�w�n/
�D)�Yr�X�ߔ�]O�tkj�?�b�%ԭ'|+�,����z��j���dz�T!/P��B�S#:�>�,y?KDJ�p�'<�	aǰ�-[���"���F�LN��Mz����>JrypH����\�}�����R���P3ω����Nu|/�J����`�WoT��ѿz����-S�#T�Pk��2w%��](��"����>b��uqO�����0ѻB
�m��W-y?Kv���S��8���3Z$s�d�D�6��+?pn�K�Ӊ����%�=����c��u�F�d��LU�=��+��w�	5!,|�UK�N�'���84ի���{DZ>AWE�++���jAW�f�^��O=�>���
GM����%��x�lyB�k:�7��K�$G�X�����6kX�����YlJ&o瀠iqn��Q9W�a����5�%�gIh�F�;8�ḷ":�����=�,�=���r������.�C-y?K�N�����s�Fo����'�Ԩ�Wm��Y��ԝ�ɼQ�~��v������sΈވ�6��,I���fPw߉%�gIy��a��Ϥ:���fN�V�����4�:�<w
i�\�؏I�'��LJk̓�8G���c��X��S������O�f�}{�h|��7��ۈ���:^����H�0LG�7�)�(��X7��uf
����/�c����WU�П�q��<Yf�׸!����OtG�䩛=�t�hl+dg��U��g�Q%+�'\��.��΢�{	�POC9�t�G�1;���}i��<}o#~��G<����JQ��i�e*p���p���A�JY(%�{j�n�˸�Vb3?�.����^(�^��^�/{!�{��[��;���?}����KV��w#�F2�� [@3l�����?�5�*��կ�Ic-o]-�?�
��d!�K�z��E��DZ�T�k���h3�-Qe�6�i
��	7�(2SUT�%͠��@���Rx���=���ks��jl�z7����X�Ң'�-�,�y���ݺX8o	h g��A��N-�� ����c�ҾFEcԎ5���R�\G -�Z�8���A�4p��H0�M��5��^�������5�v�U��Q]�B��
D�hSC�7Z���7�/lAu��b��z8m�mE�}Tt�������AD��"�)t:u��^�����B��
$�%���F8=�E"1�,�������o��[���|ѫcr1
�ǀ�Y�gzY���z�']+�q��Q��7g���Ch0Q�Mt��;��m �T�
H����,@J�,z}�r�#���`�N��#�ȥbM%��Z��O�j���2����/H��ˀ�y�SX0�q�/�P.���f*�����[
��O{�Z�y�#�Z�E!:c�K��+���l�}DI�X��y��dD�K�҆�wQ��Y�}��W8u��Qr`�ހ�%�hxh+�#�� ���YR���u��깛��n��ﵛ빝�Y���u|@�h���c(�f����j
*�!�-28����ɬVLz
#'Y�S� _&YO��&�T��!bcw�j,&$L�^�聞w�-�ݍGeJ:ɚLlmV� 5�r;����ɦ�=��r�n�!"^:�9����
��Ө��ˤ4ܱ%�F�`�e!pA��R�U��:Y�P:��9-�$]��dY�jw�?̘�z���m��ژ�����o���:Bo��2�)�+�dM�P^��Xcc���/S��f��3�^����M��1��I�s���5���0�9����IR8�i��ߑX�e�:i��h�GI�-�lL�.s�\f>B�i&�O�gj��:�Sl�S؉r3S��Iˊ)��N�Y4�f��>����I��k'M38��m�����|�N��g��,{I�\J�r#�h@����ըS�_׀�P�&��
�S�-1���s�65B��:1��lSn���'��5��V�<�����-̋���k@!c���+�qΰ7������VXpz��k�%#e_��
r�" �F���TL�;L;!m=D�i��잧�"�T���yl�{�ƪNb��r{���.L���J%�Ű��+��ݯ%���Y�F�V`�F�,�;Mj���#ɨt�j3�2/������,�53����3!�*�
�k�C)�,7�9��J�`H}�n�Q�Jo�#3�[G�L/��J�"+�������C�G�56��mWyo�D�߿���]�wf�5��yE��w�a˂�޶VR<���~�����`�bU�.� �M�	���.L�@�}$��%�o�{Y—���m������W��m]���W5�PY!K��^Oi���JX��K�}l�@��r.N�
ʣG������70;�hLݏ���p�>���<�O�=X-v9/��~���](��'���)<�F��,�d^�S�H,q4{5h�Gz4�G�2E��@_VX�So|A���t�j�XJ~UaxC�ĵ�����P�驈��;F�0���R�%)YM����3��b���M�pP3y�����2]qQ���;{,j���R��O�r�P�wp<S8�ۨ]�(��H�>��z�=
�������ڶ�>6���=�I��U��|�s�Z���i�����7�qҼY��x� ��u�����<9��=��:;�r�N��Q��=���	��~97�o�Jh2Y����N�t�,r�G~l��]�mYUU����^\��8���[T+_�T7�x��f�Ѣ��d�Ŋ�+
+�'+*6IjAx���s"N߄8|�1��b�ڞ�G�b|l�I�n�1eB������`��e7V�4e!�$2-�m]�E\�>����~1�9��<��Wwe.����o�!�{CK���7��]�|�aI.5H�K��aG��o4O�@�:+/�+�O�
*lڇE�^���d�z��K�&�����ay��=�)��pC��ѨǎPG��c���g����5h��s
�>����r���3O<O[�{ܜ�S��o�����ǺZ�c}���W��� ����g�x~U��Ep����tl�aŅ)����:�d���w�i,��Ai��!�R!8x,<�O���6����$TM6�m-�D/}��M+��RR�^�Z��onk��m�
�'��[��򬑟e˜kPq:k��K����{�m�3;�L�C�Y-r�
�Y#^p��o��R����ǘbkW笁�)7�S]�-�V#>��-�y~��ٸ�T*\�nsY�>7�֨n�	Sa^-*N�V
}�u�˾ZڂJ�!7R�j�9�-�3��rb�舟5*�&���ݝ���hL�(�K�F�zS����n���5�kۉ?�i�k"���V)�5ʢ&�볝
�dZ����v:Zx/�e}���E?��#%���W��p24kl{B�
�wkѡ[��͎��t4�۶�Lw��VG�v��&��Ead��[�sr�-��h�y�`5rX�L�)[����*�o��	��Oyl�r0��O�\ ���԰O�gN�
�x[TըV�����Y�h���
i'7�GW����s,G��3�
y��L���r�����0�f91�&b�� u���E�?;HӾ�aߤ�ǃ̈́���=x�7�Z���n�%9�t'N��:�����"p�N8��;#�/�o
�m-�	����]�`?��%7w
o4�źŴ��,;���e�Ԩ���s��EvSu�ٟ-r�Sf-�<�@�<�����ES�ڂN�Y��ͥ����Ѣ�3g�8)p��Z�I��Q�ʉ�4H�Z���������S�R�p�3�81���E~ƽB��#�P���:�Qs���|a��f����(`����Wc!"N�t9�ۼ�@*/�@nz�Z0�|2
���u@�&?ѷ��(xFJ9M�evH�%jD�w\������u&ś쫝�ԙ�"�k�	�\�%0���~ũ��R+{�@��`�ĭ��F�7N8S�Y-2&��ͼ�u�n������zv�[�l�����m��㋫FzcH.��A!��
��>���7�]޻,�<���>#�&�I��E!�X
*���CU����jTO���p�med欑�V\�!�A#��
f�n�J�l!ԾW�����@�bG���fp��F�~O�5z8q�鞨��1j�h�m��ɆQA,��v��j���F�5�͓k�)�YÛ�ip�ɟ�Ŷ�մ�7�x]ObӢn��i��4`g����Y�rЖ�i��t��PNvR�"���Զ8��F�w���n78^�PL��#���?O��;��np�7��(��e��F6A9[:��Fa�	狡k\�V�2.z�"p���Q�9D��f�v}(�Qlpٷ%
�}1Z��IXc@��=�&�B<�{�z;X�
��P=wS��)��f�1�>��P��-1a(Lv�P8���:a�	��털æV��i=������K�6���5ҜO��
��p��~�Ԛ����m�wh�FY
��|4��B�	����X���^�gΊ���/�~y���r��!/��?N��3�>Bi���o��>1Tw��CF<-9k���ĵ^-���0�0�P��v�ը�
7괫E��<68��G�[���#[��j�(
�F&o6�P�_-*}�V����9��ާ�x�[\-"��0�`ī/��
�9a�g�j�"k�'w��u��1���+�Y���Ք��.l��Y
f�p~���̹a����۶�sC�Þ��y�(�z~R�s��U��n�;�w�y�?*^��y�f��JQK�+��AްT���6��g߻~��])-�Pg�B��`s���HEsl����G�
�1�=ωM�2�-���p�Q��e"t�I�:W�V
���B.Ԙ[n��@^	�+ĵ�
T�G��Nj�����z1�MX����|�>��e-t��C�:����+�Ws..�����?󙪄��E�o�g���$�[��4ʿ�T5=�C�ƣ/ǡ*B4������8�z��09fr�c�(�(>���kB��Y��e�$��E�J�e�)�٢�F�����W�L�h523�L���;f֠j0a�X-2�̬E�I�[���r��c��ՠ���
���,G���dPքˌ^�u���F?Ǩ����l�}�́1aܩ�[��r{���f0�5`n�!��{���Uy�WK3d
0�֢B��}�w8=��a�SG��"1Tl�(W�v�Я1D�ƍ�ݜ�p�)��2�-|�}:��%e�+Tp�	��@UD�3�CR�r�Ȍ��u�*)۱��ۂ��a'a���y��O�W�*�b9[���xt9��}[*��b�zw,�����h�ڗ���XX4+ԍ�@�ML�M �����a���y�b�J
D�qV:��p�`")���%�֭�]&-������Ĕ}p<(����B�Ľ�ϒI��e�/�,�
�1M�0tz�(�_V�7:'�v��+?[t�t
Ύ<t�ȌH�5�كE�l-�E��l0�Z���j�s���բ�5K���q��z���w��|kANc,�`���ZԪџ�����_�1���L8����ը�4ө���rd��y��p�8�g���FI��4�3�{��(�-:&l�9V�[�F��DxXt{u���ϑ���iF[������c��o_ʭ�m>�w@78��B�u���Jh�� ���*��P|�fB�U�.=��c�E��b5$�x�>s4�>D��Aw6��6��Ӹ�MeⓊ�1q��NW]}q���UW/W]5v��B����S�3�\m�$e@Lm�[��9�Dk���V&����UO�t��

��	3��j��E�jdd�� Oa�Zn5�U���52��`F���<h��9M���]NxC��)�Qc��ƒ䭺�V��di�m_�o�<����n���6[Ը��\;�1k�L�v��s�Jn�ՌcY�}�z[m�Ud��d3�v�j!�g��'ێ�\�9���}�@�o;�l ,�
j9�#�
G�e�Ha�;R��9F(�gxd���~t�D�h&Nƻ�=��c��I�2^�fG}ܡ�+���q*��C���� &���u�W W�=h�%�3u�(�ވ�L���ݟ-����s��h�`>+0�܄ӎ$�uG"�`{•��j�H"V�S�.<rZ-���c�0Wp<����<�A�}����Y�v���v�lQݹt�&�|m
�We52y��&sV�J��j�`:��HT�}F��v��������j�}��^���BwG�n�Y�3 ��Q�nNk�)u��f�s�Y�+m#�w|���֥�����T����l��?��Wh<84�t�٠��eR�$.'k�LèO*�ل\�_p����!��{�_�h�"��λK̀��!�&X��d�m���m �Vu������3�ͭş375��՞�yph�7R�[=��̎�K���K��z/&%�;�x�^�$��f�����U7Ÿ��xtg��s����Vں�:3���֍�<���l<�Ϋ8�k�
�Y{oJ3��ݶT��ۜ�H�8�'�6�{�v�����~��)V�����'ve�AK2��B�����
o*j
��Fe������Sت�to�ٓG��?{Ի�?<g��v����r/�{�'�s��j����{��W�~���5Z��ͻ����{��˜/,����C�I�]Y�ћ�i����`��׃�6�˃�֑=h�a��5��j��)��(�"�%�K{�Mt�ȘT��d�=h͞��9���S�ǩ=��Ϸ�}�i��N5��z�Z�q��<����hm�m/Zs��Ek���M;�W�+3R�֒��|�X���@�‹�:lH���^��ζ�9����<���:ߏ����O]��� <h�%��t��a]{�h|�u�^��pۃ��%���ƕ�/={>�j%�O��փ�Z��ŵO�[\H|��5:����:`����J�L�'��%o�W&��z�z��}m}*���������Ak��=h��7���,6t���L/�ѭ�^�ۃ�Z�i!f�1��������Ak��=h��~>N-����U������/jݯ��G	&��1��so��g������X�'��$X,���p�g�gl���^5|z=i�%�m|��xr���'����Ik��=i-%���[�xx�9NL����e��C3׵�5\����#
��޳�޶��9��z�-~�5�[r	p��uL�u���9L�gu~D}�X|������l8�K�[�,�|;FԳ�x���sP�����QV�/�)�dž�g�Y���9k���YK��o�Y�>v�l*#$�D5�6�%�����F�Ak�[��Ak)(Ե<d���*�9�!��2�f��%�B�\��^���/Z{���^�>nU���S_q�� ��Ek��֜��'S;^�F۲�h�#��Ik꨿Lg��o%�8�?{_�cɎc���84��^@4��@�< wߗ<�eQ���Y����L#���B8�2#��"�k��h�'Y�����)�fS�`_�9�E3�f�bz}�bA@z�ѿ�8M
s4\NS>%�S@��f5ZҀ�"��v�CHX�½mp2>�Up��i�����M����
��{&�8����7��Z$B�b�vbfՃ1ꟗ��^@?%�$Ȑaj�{r�%'��￧�_r����թ��N=K>^%�Ne-Q��,��/��Mk������m5���xͅ��f
t܊�����&W�� Eq��AE�PvI��I+����㔈 X��[�N�F?w�5D���8��	k��+� y��[(�x���n!+z��0;tNI9o�*��PAY�@Ë&�P��S##�Њ�[0=©7b���b���[_�f�s�J��X��?�TPo�C�\���n5�vhE��-:L^C{�;$H�~���ƀ�ҡ5$?4��*�����������ЂH^^C`���d��-2!O�y}�Jc�|�L&X�ӥ�Ϣ�)6���94�\B�
s��h�o;tSHhAWv��� �*��Z4]q�j��PM�ZVc���F��P��[,D�z�KD�+J|�4ա�!?-4gȩ ��}Ez>ƶ]�Ԁ�?�3vAZ ���d��2p߇��R˵D$ns^#%-q��.����Z�f5�����*��>�c���C�ǡP���5��yhM�[�י"��α���(+�{���y�DŽ	Us[	�2෦(��,(<JM��̆X4�ȋ�x@Y	�b?��Y*X�K��%~2�
U�L}
�DC�T2"��K<�����:�����0W
�ͫ�������΍�@+Q6���[d�6ټF6o:����ɇ��)�������r[bwf�(��`f�R��VaVe�j!��5n�C5��x�EZ_�S��u�x�܊���i1)�X�u�P������rd��;/�5�_-�'�x]!�E�$�S��UG�S���סa�-��5��w���<Y�$�CF-+��w�^֌�zZ�;Q�{���%�A��g0�ޡ�Z���T�ЩDz���*^_�7Jo1�C�`T�7yo![=�k�ӱ�=��<�
3�	5ݧ�S	=B
8�9�tc�E�dʬƾ[�-�q3�Q9�o6o��Wx����ՠ��A/�+��3����Q���5���8N0z>v��_;~�Hm����;�#�s#�g�8)>S8��]�k����[$.��8��Ᵽ����e	V�%v��ʀ�-]h�ܕ7h���浵�����r�V�];�)��;���z��8Z���x�%�ף�~�د��~y���$Su�����w|�D�1�ÆY� �NjVA�ii2�=�mu�~QlSH��U'tY��K�V��
8�^�SNL��=ᕐu0�F#�� ������l
��Z6�ʃ�Z���ZT�����n���٭��]5V�Uqjpv�+�MO���<3�3JVz�;6�#�YRF�f�n��TD��tՐt��~�磅�X�SC�4"-��=���C
�
EZ|����1����F�P5���+�<�ִ��E���5����;�-�@`��ɸ���Aw�
Br��w���m'-iY�W�V�G�?�t�
�7zj�ЛW���Lj���zU��JE֘�i�gh��{��5�1��߃��}�1c��w�"3驱��$��[d ���q�T�pނ�&^���EEp^hQ�5ۙQj��Ԍx���)���9V�5�ޢ_��W�@�=V3Qw��E�5�gl�m�5V�J��I��[l�zYc7�F���3��jah��ڑ����
�F�׈�|��{�RorPu�o
�!�W|CU{VlQ��
�mb��h��-��_�5zނ�V��=���W}_�[F��c��)��W�5<�E��b��c�yϿ�^w�����,cr�J���
^.����UU=��W�u�5
jӒ	�NVK#-dG���vB�Ӭ;Dy��'�������NT�i������`�pZ9#n� 3�[s-7��u\Q��t]�4(�����C��ҿ�V҃K3)!��6ɥM�=Lri۹��J�>��=���[3�^�R&�q2n��L{Z��$֘�It�ej2o����<-B��-D�����\[���}���§�ri{F�����nO�_Fo��R���fd�-�+�(���э7��(�L����a�I{��v�pVc�g�����=j��tO<���O�A��H�x��]xjP"6rSg�
�)Xc��i8~��RIb5&'�;� ���D�0�	�]�j
ė4]5�{$s�2��~�9a�F蓰j�na�vʌ܋�lqɩ]
Z����(��b�^��TN�(��ªSN�G\�����VN-~�4~�[����3W#sn�qj��95���Z"�%�֭�j�Wʪ�HO�a���a�!�Z��|�f\�d�3TI_Quԧ�d��J2�MI�
\I�b��}^��SS�1�3���[���j�k�+�i���GJx�r��:ێ�����R����N�Rx�Um�hb=QZt\ʍ�TV6I�7�D&q5C�R���Gۚ
]�,�"܍P�SOU���ҫwX-�Z-!9	�G+`��"3-޼
�3M|�[�o��z�R�K�/�T}(�փ�����%;��N��:���2zuc�̦8�)�%J��%c�!�K�!@GҋF+���y7�
fj]5^��ь^-DPV�5dŪ\e�Ā���b��遖��~��S�6ƛ��&?uט�C��r8����vjЋ�id_�-�=c5��vh��E����FE��C.MoQ��>5N)�[��$?�c�$ (���:�x�S+>�X_N�-�8׼U%F3KEh0�=;��}Z���X��}W'D�z��L��Gf�PC�p���JN�<(g[����74��P�<�Ѝ�7��w�f�4��B�F�3���5̙�@�1~�����,wZ���j0�ȡ�c�iƁ8R��D�􊫞�T�\��V��z�N�R���R�F�|�i!*�0��K�H�s� z��(5�4_�;
r�y�Z��9M��iQ絟U�{ِ	0��U�A���	-����M�w�k�7�X��8��}
-F�'4_�c=V�pSa+7�.��"W}�RP��v����l!K[�2�$��0.Xj�[
��b��E"�T	o#.��pI�|��R�I3ߑ��j�\�z(%�+��[1UonJ�E"7��pS��L!����o�M�D7Օ�b�8���M)�~T	�O0��~T�C�,)�ӌ��hxd�O�j�>�EZ�gl�0�Ԑ���QE�]�Z�"�GZ居*��׀�h9?4�WB��s�j,(���Zdʁ^��,4�ޮ��'�F�
���e��g���[|@��Ϩ�|��X<�H�g�Ӣ����6�>����9���M�8���So�W�Ġ��h�f���b���Nͫ��K�*LϤw��$C5�g�u���WN
~α�1'��1'�"�k�4�ХBMsZjլFM�@Su�0Uq0��Z�	��5C�*V��Zd�S��%�7�
�Qp��^����+L@���V���w���'���[�LƎ5v�Gj��L��
-�������T�F�F��k�_k���%���8*֐��4��8Ce��:�C�-����!�;B�Cg��Cy�qGS��ױ*oa�D�1�D��C*L�*:y�r�W�Q�s�Z1�{h���*�A�󺈙�4!���RC�2`
_��b�.񊘴t�_��{w'�������z��Z��R��~���P�C���P�CU���*�T��2_��M�
��~��V����|�+��9@�.��ܓ�+�����{U_���oZl,u����jH��B�\��B��z�!�HdDl�ڨt��������-���5%0��qZ��N&��Ż��Q�B�Bg�;���b�#�֨)v[��q�� ^-6bҭ�N�lO�
ļ��#��wE_=���e��U4�Va�~!=M�-f�#��T|�8Oߟ`�k^��JF�Y�W�yW����'�̯�6��7�Ȍ�t�?-�æ@�F�9o�Ր�Qӵ62R
�՘?Vh�Z$�;yyo!LT��l�
N��.*>S��8�t
-&�\V�4�9M��`er�����5�&��b�Dn5s)\�
a�be�f��xZdZĭFn��.�[<��ᢌ6.��׾s.�H㢼A�T+��sQF��k��V�*Eڙ(oa�X^�1R}ܛ��P��<���	g<��b\���c��Z���4ݱN�]��/<P�`R���V���EW�6菥�#
�Pg��z�2�b<l��V$~l����Ec[��D��QA^�M<��&H��Y�%ʘ����r��Be�fqf�)�g��,FwA�&lY��+6g��GGp��X��w4/�߅;Ml�K-��v?Q�&J4�@=�T��ԇ˸U����M���ȸ���or��Y���P��,�+�*	����D�ž��i��rQ)	߈I���|���7=o:3���_)
!�o��#�
���{��M��[�'8l	���Z����,&��i��7��
="9G��ޫ�#(
R��-����da�ɐ�Yg:��m�x/G��.�L�F�Ų����#Lv��:C*�	����r$��X�ؔ.O���o�Q��vw�^��ΜA�׀�DŽX=>�	)�Jb��X:4��[VJ�.Cm8lB���I�q2�+������0W�N��q�a.��?	I�TH2�|��L�lA+'��dJ����6�A$��g+)Se�eߡ!(B=��sc���PCCPf�-$oW�-dlzh!�xwI�kXH
h�/�Z��[&����آ�����^�*0��l]o�M)j5�`k����-J��nx�J��A��X4��Fe����=_
*=���~�FJ�e�����H�=[�=��f-�����d��0�O&=�s�f#d5����n�f�&��&xZl3X�{�5-pl r���&�;<reϫE�qh�8�5#夰u4�`ΑngQ�j|E#��=N&�[�~$ǽ/2���Q�A��K�QVa68�9���`M�*�v��G�i��=���2��6U��P))�HIqC8-$�!�ȍ��&�{��h�Q*�IFSj>
6y��a+�E�ŭL))�r�ts�P�����G6S�Z�ya&�S���T�~�IqdG���
I�G�NY�qm<�-6�U�cV�E���-v=�������mp�*H`�2RW!Ce�ŘqZ�i3feMGD�\zg�i��\�DxW(��
p�̄�ŒeS���̢ub\��D�Z&���A���(���~��~1bC���Fy�A��w$ T�����R~���Ϻ��Zs& 50�3�=��ܷ��㭴r��#�	�
��2!�A^tC>�>����ϤD�<����%��w�>`s%Q��P��,��v�gĞO\�ʁJI"����Rr��.^���i�L|���_.�Pvv3x+M�NL*��;Ǝ��/��DH`���k���<�cָ��
opZ���"����Zx^4-|y�RbҦfp݄�̀�V��'�B��h��0�4�k��z#���|Jԓra��6��U|^P�"��VgqY�Y�T�ب=��0�V4���T������0�נ��i*�B�5X
�spz�Ӡ��M����E�s��0X0���
-�$f5��!��ݢ��jX����-
�n�F`t�`$N����Dw���E"������JlA�P�ܮ�k�	V~��^#�4z¼�V-6���HIZ�k�T�#�	
�
L�m�_��Z�G���V�5���/>����kE�D*�8Ò���w��4�M�ڏ��}��|�c��p���k��Ҝq˛��!f�ة����@�w�)�����k�S���5�lt#[wZH����F��٧z/ZTS|eY��	<��F���	=uZd$�?5*�!��{�i��N�:oE+��O).2�e���P����P��t�0)���a�-��w���5�+�
.��P�P�5^�k�t��BR���i���"P��#��r�P.>�P���N�]-��(L�b\+w Նq�r��-S�!E�7�$���2�W�f#{��gF�����>�F�TM�� �7�<��P��z�Y5�~c3�t�R��u��)u �~W����J���QR����Z�V�.�Y��A�̮80L���cY1��&��EAS��6u�Eɔ�7U1gN�12Wv�B[�V��*{��]�N:���A%�B�T"jZJ4�z��,՜��d���NIW��G���,�|AJ��%f�|i�wR(�]�9Lm,fq]{�![\I=>J'�'���:؛p�8�u�xM ���	:�M{��E�v��T+��3�BD��^��̳|چ�XXg�A�Rgֲ�u��1�w�^K�t�w�ĄmxI)
p�.²�p�����;�t�S.n��c��`�H��W�Ģ:�@�����?�K
x%y��k9�H��F��r9zXk��h{�VJ��@�s)�j�z
p+��Mx��\���Pd,�m
�D}���ޅ�4h�Y.*AVDaJ���b�,�
z�9e �-{�ɂX���w�[�٪n�:��<w���:�nN�I5��qNb.4 ����uz�W�Ts�`��ӈ�
-ڤ�
�M�:� ܞ���{�5S\c��!t;=(Ox�R��A��_n;����L�*��N��l��F�z%RM�j��XثKj���F�n����Ŭ��Y�b������(�cX
�[��ՠ#W�W���Є�<-Z�֐�4qňL��w�#LlQ:E5��~Z�uU&V���
��b�T�E)2M�FJL�A�$�l��T2����q���~�d8��H�I[�i1�d�����XT"��ȶ�N����k�}͸������5ҵ�%"��Bk�׀���
o�;�=�Q��M�����c'�R�K\ؔjšӹIo:�/�2�r�
b�M�j Hq=֐�g�y�n!�C�!�=��|��Ŕk�z}�1�nQ�~��R��Ig�"����N�j1Dy�B
1oՋn�A���P��T�j�I5��gV/�\Ha=��ʜf�%PC
�5)���6�cK�u�@���-Y�Z���e��,�X�D�b:o�ȋ.�-)&DU#�ҵ�Rw���
(�IF1Ś8X��3�$�רԡ�����	G�57��V���p+R�=/��:�k��b�GՈ��N��Ue��8!
�"�6r�hg�;�p;�5�mRu�51$ih����&H��Z�ۆ�$��pH'KwpU���6jT�n�h��)�<lY���J�fx`i$�F�� ��N�H˥K#��Gm`M��
�ʢ�C[�BE�-x馰��J��0�ă��\"u!Zdg���t;ѐ3L�g~�s_i�u5k�v3�
^ܷn���Oj���ᙙU5/(́�*:�I�7�p�p�1Mӕ��3�`�R��ܷ݉` k���/Q�Q�1M.������>|�򒋯������p���o���^k�~g��ףF�yg���k����}���\�Z#�{�|=[_����t-����ף���7S�<�C��8��niF��0[��j�@GR�k:���3�w�>K9�������}��<�3�l1�3�Zc�[��~}��=��/g�6�ݫP��/�׃�͹W�h���kÏ��Z�#�-ʦ��5Jw�4��N�<��W�>~FN�I����b�8��՗����q���[��/��
W�g���W*W_���~^5R\���>B���Z3�H���IJ�� ,i���c�ħ�j�b��#n��%�)n����^�
7?\,Q�ja��F�����i����T����L��Ԇ�́l������51L�ׇ�&j�ij���P����H�ƔM��	5���!�XCN�H��n!<I��Oxګ�@�Pc,3v�����<L��p�z��0���*jC:�/L}0��y>Nջ�g�jR�W-�p�W���'�]�7iI���/0x�,������0W�A�<|Aɠ�;l�R�k�I2#�ƥ�1�:�����NV
�3��/�Q�qB
&b����k�+�-^�B��
+
60��@�n5d�1dH���&���B���Ҿ����,��f�%��wH^�=���3KT�۲[�4N�g0���2i@���sBrk��Y��d6�<�7 _]�o�\T��&�+:�h�|�����a�4c�	Z�����~ N�@4s�<v��w�q����е;�hmi����:�i�&�R�cQi9��j͔/]8P�FSw�#���P�^��aB�-2Qa4�2����u@����0f}��fT"B\T�X�$#�T+����6¡ ��B�
�o�	�p�K���čAm�$�ԧNۃBd�d�7�����-���Se^s~�'O�"��8�c
s~�w*����	�p�z��9-�yY
�ԓR�^-,��hT,I��Ѐ��V�2m:mℷpq�5\�0��ޢ0���Hd��7�''bS�����D�p�C'����"os��LX�<Ѯ���;]���5�y֫K"M@�i�8C_\��%�ĊO�L�pZ�|���d�&��iјN�jT��F�#��1�"M\�V�pZ�o*���)�{�to�������B$��b�|m�8-����F���H�����X�8�F^���A�X
�)��8G@1�"~�H�F�{<"[�v4���kBE��;��a�F�T}=��D�b�KV�1Vy>�*E���a�R�����"ѣ�kP�42�
[)Q����),t(����9�-0�(��XS����Aq�.ƺ[$�8�VU��S-�j�j?iI�T�;��c�d�N��(^�G��2����W�������?A�訔�z��%2l���MɆt6���u��By���	۬\�}�.�CyQxQ��r��Q���$��W���^�'�|����|�����p=|��ǜ�d�4`
(�zH���f>h�Z�-!���.�kR?MG�E�l;!�����Y�>3:����AF���;��� ��Ѝ��[V�bS�ܙ�J�4/&#ǛyE�W�jx�
Z}����H�No�]1'�=��{�o�vC��xv��􅆓U�\��;�BD�_ k���H�dn*m3~����r�K$q�Yq�Ӧ���La��.k�0��Dw�@@���d����M0�{N����tO��6_@�D����b��� l�\)z�����H� ���Ԃ^GXO���#���y��*3>Zb!���g�{�(��)��o>]
�NҸt��L:�7����^�8t��Oor�ϭ���߸s�Ɯ[u����L��MϏ�]�O�=����w�����V�T��r:)�ǭ���?]��̸Uw^��+����Y�0��@��(��?Sr��dK]�ǎ3�x�^	�_n��侯�t�.���la��}��F�]ϭ��펣V,��d���>��8���d��-�
�2ۡ���u��3� �"�g������HR���&R&��m�F��j2�aJ4��1�V�
p����r�g��Z��J�)#�k���3��(�C��8C�S��w�d�a���n��o�/���h٘�>�̄ld߅����&ͫYe�eV���s��
�� �a/,.a����j,�l�.�5�?�1=�bf������'���]�%*�/b�!ū��>D��F,�2�q�8g���=]d#v�WZ��ɸ�e_ۏi��R�*�w�3L����Nʋ�,���XH��}'�����f��fz���C�οX�
�:ߎ�.?���Csx+t�j ���oj�g�E |��*���>2bvU�5��zL!X��8��%���hs$��76*�#��ŕ�� �M�5ܑ��_i�E�5�9�	�E�|��;]�ֵ�o?�Q��f������V�*v��XآT?JP�鑌��2`��G9�#뢦WO�u@����k���25�H~e(���[�& �Hΐ(=[������M�;��^e<b�zL���m��}����hq�����_�lQ�e*,���y����N(ro%aDZ����H���2#9���|*-����j.�F�[��t
��$a��{�=��e���v�+{��IƤ�E%�6{E�;/��{Q��ԅ;Y��
{2�wH��H�^{�R]�B
�<!����l�	m�5�p�O�7�0*�N%�[ª��+�U�P�U"ծ��������>.aVj�5:��s���jȥ~��"��`����!LK~���QCΏ�u�p
�5֐3�_t��f�Nf�5�lZ,��������Vc7,5.x�LB&dw��P2gx
�)�=��#�ѳQk��A*�V��`��Լк�@���>���^pL���SM�8�):8��X�hW��	�E��9�\
��
z5�}U
T��R��ՠfFu���ըkM��*��t�k�g	�c�m�0�Ƨ��S�#Օ>���y�#�Cu��VGr��W�A��-.f؉��Zo�Is��U6l��+��B��r��W��p�b+�)�u|��m�;p�Sŧ^#�(��
���RU�v��V�M�;�Ё/)���Bu��zS�	�XO���{�kE�X�0�pq�n����tS�z1{u�L���֍Y�_�oV��ΰG�;� 5�^�7���q*�'=�U1�7G�U��6kl��`F�yɬ��`�6��‘�
�)�!�L\��ڎ��X����]�>�����/u��ë�xݭ�b�
"�������b������e/��~���>䈆U�\���!hvXqPm˪�F㩰9�4��ad�0��^J�V-��F@r�T�wN��Q2̋.�F$�U8
�ңi�u�o��$~� K1��̋��kC�ܐ%Zn����B����0�p��Q���?d^Vס�{��ab�.����^��Q�6�%�"��t6�9���`έ8
�;<��;
*��y�TZ�p�1<yAu�Ȭ����U`ت��Q���		N���@�
����f�9�H�\�C��*�X��6���`����B�M1-W���J%�n����:�b�&���V����
�m����O#DFqg�m���dq6�9��ۼNx���S�M϶f���_�s��x����$Ȳ����u�e��:��r��pd����D� �I@C	[K	jS	�c+��X�5����|�KP�L@�	[���86��hb
��Dk�	��r2[���(Gd=\����d5�VC�<��W���P:(5X=(5P�(5��J
��J
�8J
��R�-�R5��J���E������ժԈ���}E��,�=����h�=�oW�M��VU�,q�A��.�nmβ�z�qyA�1"�\��i�ߜ�*��X]�eſ�k�^�1��ȱF�[�qԟӔq5�`=\����mF$�cXU�;�ֵ�R�n�`�V��sq j���2���eF\,�ͨ�6UmF�p�w��GZeA�j�{��=@oWWـ�i�xMN�"#�@V�齶����FZ.�x�i`�5�E#��3a-���>���j��w�vT,ZC$�H�s�՚�-����e.L�b̫D�#���x��j�R�!�3n�]��*3�W�Ø�C��u�iZc���+^乔��-%�7kp,�"��k�,/�@�^��V���N᥂�?��)����q��3��i`
WnP�Eݳ1L�2_��*S�uF1O��Ţ;��ʢ�Q�8�tB���0E�{��'OX��U����� ��SQ3%1|�aZ����^ŭD�o��������u��K6
�W�t0K�5)P?#�,"�wz�/�`T?2�^3�*#(��3M�
�I��Z7�a�-Ɇ���X�5��CT�)?���G2K�Y�׏�E�J�|�"�����Л�F�?��c�'о���X-��3��A"T�M&ɡ�#0J4]��z>#[M���Z�K5
�c	|~-����#kT�	��V�i
Ee���Kǁbr�,��1]�
TY�҈����`����'�?Z̓K aj�I��m U�]�i�oЧI�R��/s��z���2t�H���]l�^MLf�5�x��t{���Ն���"���JǕ�ȒCH�Yٖ.�'GW�@�n����nR|��˱�P��d�g&*��,,S�4]�]1�?1Λ+���>��6��zxK���No5��љх7��e±F"�tw�����@����
���{�O
�E��u�m��p휭��U���P�?�@0��i��jsխ�5��cj��A0T�nM1&��ͩ�Yπ� �58[٦"��C�67���^�����{/*q_�wg��?SL��j���,+.K��Q��M��U�]@P�"D����;�{x�����^g��uc�oj_�`��Ln-S�0�L]2��y^苚�nZ�ƝS�~E���u1z�R�Uq�j{�g����\F����2ZH��7��S�S}���^D?��\�d�tNXI�sD.i4 �`����\���qp�7dձ�v��9��(���� �'��B���Q��6J��P�:X	:��yǴD&�8�Ƅ�LLL�,�ri+N��Q�CSy�43I�j;�r����#�7cN�"���$�n���,܊�Xr���F��d�i��� ���N<-�j�(�؝߆�<\��8��lf�������U�]L�:��w����#6��z�(m�ֿiH�RB���Z-�To(���T ��Ҹ՞V܋��zS>�^�f�ɱm^9��Zٜ5�,$�Щb�����������6��}��-�LIC�%��O�v}`��i��͍��1�mvCw�Ǐ��KF$U=��~B!G�<��6/�lY4:�"�VΎNX"���`y9v1H�
9�����4�Jք�h��2���z��o�u`�0y��h�×!ᵡB��̨��:�2�:��*�O��~�Ffi	�swWe�̀f2i�a����|e#f�RR#�($Y��TH9��K4����훩�%
bRA�(�;4�������Z�&t�rR���[�b\��c:I3�k��J0{�e��LKXͩkS���9!(�b6P�'˔)C:x�̂�1T� &M���K�TuN�"�ê0c��ـl�*���aho��D4�P2�b�S����y����-�+D�b��.��h_��8Mx&^��S`r�O�k0~e�T�	
U����
�'�v2�$�AP�>���5<\��D΂p^+���й��l4'<1�@H���!��p��5S�����GP���/n�|�m���wV#����#p;Հ���~�b>`[�f2Z�/��/�SZ�u�
�O�ˆ��9M6r��5��^l���T\m�X�3f���w�>�r�6�u)�P�b������cV�,2�.���"�Džx^XdFbkp\��a��H��ʟ��Ȍ>.��E���xY�[�iXd�	Džx(����x�=����X!��|�,���N�!��'��ƈy���W�c؜�"W���X�׍\Gy��X���m�Pd��-�B}#=�L9�,~���~͞�����o���������5��u͆��g�;mF�P!W7�NB�]�6�q���)��5�jt��	�RzM��L�"+�B�@�C��t(��)�I(���(�#��o7:��q�is+�;ۺ���];Imna���;U�t٢7�i���sNmnw�J�Ƕ���y�'��֮�F���fw�ߑ��A[#��[8�7C���몝�9)f��BuE��f�TB�j8��_�C�Z�m`e�!��b��ݢYF֨�gxhl�z�H�5���$Gz��t��N��8�A�ř�_-,��hǧ���Da������!�۝ε�
�U"z�X����9��-c����|!�e�0N_�6pm`��~�a��kƸ�D��d��	e��,<r��J�ǣzi;�mc�dpUf����C�L������IdR�����<�zF�+�ڨ����<!��Q6#��t��p�de7�p���I��l<6萶��Hj�J�)�v��F�Q��oq���6��s��������t�t/�d��Q�#�T�8��
��B��	-Ð�;�����Ke��y�Ň|Ro�<�fVZ]�!��D���t1���e�fbJLG��}�
S�@أ� "�Nv�}��.s�á��('1�F�d�s������f�P���34Y���JTa1�\7�?	�~}/�'=zE�IGP�,��x���X�j�ΐ���I��6�X4�7$wZ덹�v1�h[���]$�#��c)S�"n"�h]��P�� �ԧjx�|�y�:��k'�σ��I\�{�L�An65�&����Z<�i��,�QD��n&�-�r�`f�yh����"�� LF,{�t�j�G"e��7݃l���ԙ\�X!Sv�"��c��j|�q���+M�b"��0�/���0�v��@���w�֞��A$�PI<5Ȯ@_����������P\�@<�щ7��Щ�^�5݅C*/:�4�
��]����VP1e��D5�.ŹM4�]l(�X[:$���<�h��3�Ѵs�+�kw����y��`�5�:�LbȌ� 7�T���<3͸�3?�����0�v��իt~��G���ֻ�t��������P�G	v��5��nҲ���x�e����`���-^a�Czorv����=�l�*���(�m@�ɀ�1����>��&�ѠF]��G2��S��żS�X�3b�w�W^ԃ�U�#=Yf����vc�N��ƛ&���b�3Mqrv�-��ܓ�z�Qw�Ґ�ENo�%קԀޝ�=�-��Ɔ.�@�^�qE\h�z�)c*��d�1!ˠ�%\����$NŽCJ_���b�As��\ʦ��N�E�xSM�d���kb��q3�f���geHU�jG6�4	��r3�%}U�Y��
�h���� �YB���э
z'jܲ���L)��:(�\�,��6�TߔաA3fN�Ӝ{b�kX>�ֵ�̦҃�a΢b����v}�7=nHX�=��>�㄁+�*��0R�1R��H��s�2�_#�l�G�u���J���U�ڌ����i<�|pOM��M4#3�t�^JpX�-C�1�
4�ƾ��X���hVs�4�D���:���	�c_ѮK�Y�B�&z	!�VZ�p<<
�S���xoN��,4�ϠqM�(R`�=��矸t�c����ٶt,QmK�ҹS�DR�Tj^�;~c����_U���X���O��W�/_U~�U�*�#3�z���*�+g����w'�Ի{~G?��OD�=JH<m�+Rg�Džs%=�Q�a�Ф¢��[���n#��	����>~<��G���>����t��
"y�L���F�h�*�Ui��PVh��ld�ٚz�^��}5{Dїl�L ��ɟש365��������|�<�S������8xFs���1i���4�%7�֘�����p�c�9��T��0I��������K�
NŪ�5+��Rmt���fʚ`����Џ�����1��av�m�/��#��)\����T����??�[z��'�P�W��}k:��W����o�8x�_?Tm�ߺ,�)]Մ��쾦\�/�ҋI�|^��d9������?���Z�����v�M��Q�6k]�z���RQ���rЀ�
t�#Z��~�r1yy�ӟ����Oc[|����z-!��kEvM���#�n8G^H_^�˱��m���e�ޱ7w?L{x�Pz�H�I$�
�@*�ٿ�Ǯ�|�K�:m���L��X�#k��B�Ɔ�>HK�O�]�1�;膻��in%���Y2q7{-�b/�k=>�_�In[dirB���n��y�̟�zS��H�%`Z�4��\�vc��Y�;:덏�a��&}�����D����AV�N�O�y�BØ��v��lu�X���l�y#?��}�ި}�8��u�Չ�jͽ��Hݣ�k葖�H޺|���c����D?�w޷R��i��Q��d��O"�vA-D��'L�INRd,/�.�$����lO�v������gO�.��<_M�U�0�wؒ�hx��[���{�v�lt�4
�J��}�
��b3�E��ܘ�J�<at���3�S"��(��hdH�
�8�j�a�
#w�$>����O���=�؃��ˎ���ex3���xD��pAz�@�M�*�:ˁtn2��A(xq܏��k���TE����p�Y��'�TL�i�G�gC�9�C�8����//��e�����\6�Az�Pf���h��
�@�}B1��PY�諍�.�ʔ���vZ0�!4��r��5�Ύ����Lh��%:b�+��AV�Y��u�!���t�
�1_�1_㞯��zM�Q�~ôi�0mur�0k��Ӝ������H䐁IQ�Z���Y�3���͠nǯ��6�n��1����aS�8h� ѳNl���i�J�wLf�h��)��æ��1��������Ӟ��U�Rؤt:�n2�A��
]�hŞ��H������Ҕ�\oڂ/CɆeo�Y��gNx��6��1���|��|�DŽ�/���o±3ΌgNx��z�R��Ctz�&2��h�ء�/�BẐjO0Y۱����V_-h�K\L��
��m�Iǭ=�@���?�+~��?�\��q����n'���x�Lh3��2�&��aW�!�@�6�IOcId�=^Nt���hZ�xe��z!BJ౞8�g��/����e�c��c�ۗ�_��������@��r�h��ؚ3	<�2:9��Vm<��3Ֆ�N[�����1�\Bg�s�,j��*C���t��ع�g_��2�m�#?C��L��W��:�w�s.|�6�js.�1����N�3
��>_�gZb9g*n��ů�Ls������0z�+��l�>;ەoC?�)�5B�'Y�����eڱħ#j�_,<��\i��Ѝq��/����V��7�;�?�8U�)|�5��1���e��cܟ�*}k�a�뺇؍K��n�N���;��e:������d���z��R8��n�Ƃ-r/��7̗������N~vjz.1[������{��9؏9(߿��c��
0i?j��h?�O���ZexN�Y��wPoIޚͦÏ���F��AQ2s2� )�*Ãfc�
�;�ߕ��cc�p�m v^��q	a!���Z�c�{�
�
����G��2&��n�DǑ��l@��ᓗC�pONX���̅�����lF����/��}\H
�<@���~&=]^,d%���:����g��nj����A��������T�ԗrM���
����-eWة���d��K=3�@"ңMhe��v���dw$���re�������_�$���
z��fr��M�%T,��Ċo��&k��l]�3�c�[;8���2]�F(��4�S:;a�M�C�rN���}���v~�q�zg$�5�c�`"e��Dı�v\���͡�e>��S��{��O���j�3Nj����q?pb�1�~���u��ݝZ��o�jz(�fu�T%9�6U���
a��>;����7�ϥ��lu?PlP�Ն����
ۿ��O�|�|��On��]9H��&@J��a8�Ӯ�iC߸�;3A�I�+3w!_rR��p
���-#jB7�H�i��=�kw����co�M����>ߔP�	�o�U�M�pE��,:Kc-t$U��,9}Fh�66�/ev
7
��ƑDqX���2�*�C���$�c��$�rMk����*�‹�ó*`�O��P�I�8�:�D��0;�]�`���sfjtw�Y�
b�U���\�״3X�2(Y�������c�,C����IA�߿YVuy�z�LE�y3[b@�G�q�zl�{���L>�S�ӆ-V���̰��$ %8(2�}���䖈3��{h=����
��=f�R�E������e�]�S�-t��jSа�5�uS�����i���j,PR����e��I��[T�U�X/^��;]��e��,S�|Ǥ=6�U�I˼{���%Դ��d�|��A.va�X&�&��x;WK�<�*���b&(���+izoMɤ��w�I/t�05]sP4	��C�eR���3S��\���s�	'��ɯ�
F��$en��o���0��3Q���H轛���i-:h�\I{p��3��7l�D�M#?�<��8�/�\���m'��J6e�#�XvB��ĤY�s$7�d�H�
�`"���[�C�LͰ6��r��[`���S_h��nɅJـ��Kř̮�Vmڊ�@��?sھk҆]k�f�AK���f���<�DEUhI����s�53�Q�K$1ӛm�bo��2䱛��
Gܤ/S��6ݘ���K|���2���36�6���:�j���
>�MΩ��ᠫ�r\,mb�l�S5�w��i�W�c;�B���ӕ�`a3v�]-���%.�Ѯn��3�XA
�%��Y�*jk"KCAF&ڥ����Ti0�1pf/^��پ_�\��~wB{��o;~��	�G.��M^kә"[~ɤ����p���g��Ҽ�`�h���b7�s��;i��!pb�u��߼P����z�-���CṜ+Ԩ�0OZ]��A'C��ì�'O�����u/��帑L42H-a�)��U�2������f;&���5�������IC>W�m:ߟz�?S��囼^�it�
��A<3�LW����	���Y.,�5?�5#�Kbn$NP��v/O*��Br��uSDN@��@��#���
k\��^�6 �rakZ}0�{�.���X���X�L��BK&Jh��l�'�r�����.��HqSW�Ѥ�ޅ	��Dq^
۠5&V�+{7LY�:\z�i�&9��,�LY#h\�ۭq��?�ָ�〈�x\�Lӷ]�f	�uj.B�N���I��;��U�u���@�)��ֳ~,)��&��F�]��/#٤���ٛ9��7�*-B'�M�R�'�P��4�[w�[C�5wd�Д����K�v𵑽�t���2�g�d�z:���4ق�;���ΰ���x���:���l��ae�Fh"F �1��Tq�L�^9�~���-'����SPAyp����OU*t�$�7p\#��E�������V_�2hOڰ/	���R�a
������&G,ՐH4��p�Cxb���VV�� �>J
ׁ�.\{����ȱ��4֞Z/Z�}b���L�z1LTP�2��Jݨ-ք�p�5�}T�$;�<�����a�G[L��s1�'����\M����&�\a5u�(���a2��u
C �_2�mm$�#���U
1�;e��rؾ����l�0���v�ds�	i�`J|�K]kc�y#�D��<aY*Y
X���E™V�t^���`�}d�?/���bIŊ�"�α�z�w�Ø;Og����0�>8�1�L�x7*�2il��(����r�Yf��
Xܴ�m=�V���g~;��>�`��$5�Erݥ���Y�4�*����z(-���Z��My�l��H��M�>q[v?)��?�w��t[�?Gd�oZ&��LLI���]�a����fE�͈Y(�����
_�����c� =�x���FE�8߾�˔ʑ ��濈��>�j`���uvF�Q6^�3gǸۙ�M��nl*��P�$$�#����'%���5)Po�ε�3|�0]����o:sƱ�c�J�J5p0VW��-�>��Zp�\�,R��V�v�RÐ��]zG:��%�U6��or�c���07(h�h.�.���D%�F|F�>D��	B�o�/ӆ�L ����$i~��dOF��j&apD�B�;�2�{_��W���g<�U����"�j�V稯��_��অ�=z�C��o�e���k�=��rU?ļ��gh(2u���W��*ʏU��U�cX/�z>L�	�_���(����(�u��	���_�?4g�����6�I����MJ4�s�]&Omq<43/
�v���]��uS�)����Hl��.�Ȝ����s����2c�*8r�|��a�^T�:�3�R����R�~
�>g3��^pξ+8�{��4�p�e�iAR-;������܋+��0S�C	8����랑��o��JuAK�Fud��>�N(��:
e3n�/7L�NW�Cz>�	]_;H杍+��m�V�C�tΔ�W����:,;8�lp�.���>?�h�v�|��E^�nR�i9ixHd�7�ؕ��롔�����ч7!�[4�(��NhT�v�l��v����;q�',���2Op��Gi�֤:��ą���qa?�wF�����r�Bڕ��\nX�Y�H�=3x��בZ�������"µ��Ӏm�@�J�E;��*f�5 ���-q߅'|݇�]݋���G�k���D��s -n��á�(�ӣM��W=Wͳ�F|�BZ)�$�
�`��-���Y���ӯ�_��1������PL_����$��H�2��QÓ�|x�Q��Y��t���;`����^��w�,,�P�
��=���r"�+���<�/�G�L�@Zݽٿ�:�톫�����a�g�Dh�a:���3� -`��~<���0�ፅЀŀ�����n8{��+�t2�Wv/�i�Ʒ��f�T����vHt��=<o4Y��@䭝tQ@��	h�ހ۷6a_���Z��d���H��7�����ZA���3�
�V
�O�Y�H�ˀ��A׶7{��U�����B���>��^�[GL@(�"0�Xu�Ζ"j9�k�3�Ĝ��g*-�x�~\Ȃ*]��}z���@�*��X��ˤ3h���#J^OU_
���̒��7���fڐ������6���u�w9��4yH����;�8�	��Ə�ր�x��������B	|͸����0�ݢj���`�0�O�����]�)4���N�Bť��<^�^�?������m��l~���Ge�M4��^��%��Q�^�C?~ޢoxZAsT�P�����CLOf��S�dn{�g2��=���V�\O���|�Ǐ[�J��گg\=,��6;>�����)_�=ޞ��y�ݮ�}�x��:�z�^��6�#ʼ��%��-��U�:Ku5����C#�n��O/���*}��esM)�m�3��+R1��L��)C?Z��i�?�o��q0_ʧ��i=�1uހŞ�����|:�n�ow?\�b���i�?�o����5n;�mv#u裖�
�x��FK����^sN�~ؾvs����7~�8�qWkf
�F����C��|B&�q��v�2�J��C�f��ݿկ�ުZ������D���.��������z�P5_���|���Q8L;T�p�tI���=A����D��H����y����>P�����"�!�Dhbi����M��v�_t��a�?�/�@I�w��M~��*�0�4ѷ@��'*]�۳?��Gż�f,	w���,��$Ү���E0f*H�����$�L�q��o_5[�oX��������c�!���%ǃ+Z۰ӭ�zG�v����6L3S�=�%�>GWh��6�5<�d�f	�I��Xߞ�������=�=�z`q�l���g�T�@��o�n���zU���>��{���dO��?�~O�f�?0�O��_]]���^xE7�a����<w��'�~�W��j⛯�i={G	���I�ݙ�8��B�x�Jt	Y�������³�?����z:<�=�C���"����0
��ޡk�2+�9������+���bC��V�J�=���8-f[üV9w0{U�'Om���
o�ڪ�1���#%���=�9);T��dr�6��yG�Od�qemj���g��G5��Q�?�����`%z|��,�[Oye�i����|�=��6�q�%0�w?��
O�4
-_�ߪ�ՒΈ�}&�#����l%(��	��#z���(k�RN��k=�,�t�Dt�c���Z�v1#�s�֌=g����Txgu��Q��P�е?	�#�L�Q��b10�@_�=�6�3��{S	ϔ~L띆�,g�'�����QB6w�V/Z������з,�w�Z_O�2����:vze=49�z,D�kµ��y���h�~4�%�kK]v���@�v���qڽu�3(ឝ�rq��}�x��w��ť��uz�)5�ˡ�+’�V��=D^��%��{��b���+>��
�mv	1є��k7S��W�~��	&z�\�G�X��Voz?;hwYOY�v{�*V�'Q=w�$�y0%Wۭ��3/�?=�½�}���{�w��6����}���(1�>"G�M<2С�y�����q�qە���i��{]^��̢İ�\�x9����|��k��><�����RR��V7��t�=�b�.���A�������}��O���|�.��kJDZLH��CgW$B�vq�ߋ��{���V����Z����x�>]�[������u�U��K�k�Z��|�������ew�]�w
��ro�}�6
nѧ�UA���$�M�?��||���P��f�z5�y`�\���/��C8\�3� ��1
���Oy�JF�
��tn[�]�}H�W���7W"#ʇ���m�!z�Ӣ����9�H��`j3o�u�I��(I�B����a
y ���:��M?�"�%�T���TJ�X���V"�	�T�h����.���k��НʺӢ�/�?������)-i��ͫ`�46�>��6���bFg���Bd�Mg��T0�\�6����y�WS(�7���h�gT����Є�5�Y���K����{y7��E-�u
�U-k����7(��9�Xus��ܯ��C'��[�*���$c)t;|e�:�+Yr�z��|z�������W^�����T�%��v�&8�Ǯ�=���3R�S�aN>��=�q�����z��x��dr���#�Tڲk�	�%dzm�{��3ͳ�ُ��|<����L�83B��JhCcJ���."��={؄�=�@s�yv�b,��XJI9|e�ݲ
_�_�J��kc~=|���<{q����}�x�P��le����M�IZd+Yb.0|���ԭg�:�Ĝ|��b+�ܭ�J[��?�Rh���V�A�+Yr{Ц�c�Yܱ�ُ��|<�����,h��Z�=�tCP}{��|�o�׳�q=��ۏ�dxO�Mn.��;���?��_���Z V#��xa�VB�6H`�;כl}�Y��FZ�H?�\�w�0vO7�?^.������)�P*�a	�d�.N/��%hiyf��{�Vx��O㍶��_��@�2/'��3�(�-�q**N����bj�[O�i��f�ϗ��P�ym�Y<�;�~����nZ3�{�z�hy����4�g፼/K�u��hU��%I{$�;�#�O�z����<�я��x���ya&ޘ��h����M�O�.j���75����A�xoݼ��ʬ�2y�$�G��~����G-��K��G<�я�����7~��3�v��+�Q�;n�*w���.�5�	�|��r�y<��������z"\��Ѱ捃�A#:�Q��%���������w�j�Z�Tǡ>�V�Ku2x���B��K4x-��ţ�Вx�M�s<y��_/�R�%o�^�ZP�=R|A%'��/�|�%��"��4��K��Q_ؼ�%�w4dlWZ��/A�Q�1���XҮ1�g�t�OF<M�(�1���,h���QgU^B ��
�ѭ�;vܾEL?����E��ޝ��w�/M����FI�4���G*�v��xJ�w'~}=�a��R/��i��.Y��D"A�=���qw�?:��o�<�=/d5��xC֘�b�3�zvq�g磏��=�q��<�f�����`_�p�_:�ߞ/�&���;����5��.�"B��UDe�ؗP���NqP�(�ni�Oԣ�Q�/�s�=/����;��:+�����>�D�I���Bb�KV�@iᵄ����@���iEp��V]
F��X;��n��X�m��W�%#���TL�-۬l�pȫ�sUW8EWC[�|+m�H�-4%
��9��lJt�lzY�z�C��W�Y�J�2ѧ�z2k�,�0�tT{稢A(��dԨ�k�ΡE�ҧU�i�-���Q|�Z`�t�@B��3�
�k_餁f�ij���i*jB�ڝ�vQ���	aeU$,f�,ry
"���%T�\*⷏y�$ܯ��ym�
�&�\�ʂ��S(%��D>{���
��TV
8&��W�^7jV�&9+�]����'l��o(b�����������T���
\Z�W��Ri1���W�C���;���eP���	ʻ��53���E�&dj;�MX?#X��)�k���e�Y�e�h	`z�\\����e���/��8�^g�nޚ�}�U�\v�9KZT�;�{��WR�x@t]���� ڢڠo��}�DMı$�J�
��+S�G�h\Xh�c!O4}�*N�k����=�&ٳU��V����T�X�`+R�����*WZu�pd�t-��ue�-I�
��Q�)]Ũ�2��;-߄�)YG�c�o�7!��k��|�;���Gri��aڥ�/�m�Jk\<�:ӊ&r�z[��Ι�g�E�K�U��uqv�[U�-֚��P���R�)n�XKJ�Z��fʢ�X:�w��!&@ȕ�߱x��I�-���';7��$�XQe�Q�sPoT�.롥3'�2S�[u�8r���ʘZ���J�B[x4�쵤�ds1��f�<���\=��P����5�U����l:�c����'��l}T'[Z]�\����;y��a�
ڌoX��E|�%��P(��Ѷqj��'��(�<+�g����
��m��P�_�#Fy�
��Fv5F�k'�z���|>`�dk,	���OC4]4��"���D��8��UWS�~�L���Ɯ�T�� u�*�X� �v&��ЉU�q��f'�*C18��\ԯ�p�3���b\��7ם�ͫ%��7�ˤ��*��CU�`�_�r89qL��Y�c��^uъ�=��<�U�2J���w�G���<�w8�����iz�U����
.$"���L�cHo��M+Y>8�2�Ž"%��qczIV�\i�F�_n�<��-�W��j����Ս��AO�=�!�d���|/�7_���`��p�.�$�	Gҍ��r��+_�*��q�.:Fꅄ�� 2M�\��Z2���B��Ry#R߬~�
�5,�i��b�vZb�#5�8^�&mv+��e�Mu�J��{�X��y4ჷ[M���D�>&�R��lC�dA$����X�B֤�+&e!���|�Z�r$M̵r���Td_� ��z��[i���Z2))t�(�F��P�7�A��_�8�OG)��i☳C����g��ȼ�̉E<�+3/\����ϘyE������p���
x�|�,*���m����j�-hƜ4P�U�vS�l�#�7Dv��SX
�=*@vn�L��߸�6���&k�N�ByH�O�M����|6�1i	
y�jؾ��	��1�
\��m�\]�\i�@������:�4�a�ܲ��}q�WBy/"d�BD�P���I��4�;`��(%]M��O��J-��A�D+����B%��>8#���s�뿊0�+GW���*K
��
zN�4Է_�%u�FGwg�����w�*�+��������'K?/�Zl���6�A������'Wl�T�Yԋ�e��T>���J��Y,I��PFce�s�}T���^��"�H�'g�*��ˬ���FY�NsY�r�PR����}0�n�zM`܊J������VOH�|�$lB#+���\K��v�*��lJ#�*� �A�H���D��53��Fks�W�l��M5��A�(�T �	1NV�9M����(���q���E%��S+U�+m�	t
�L��o�:��y�ק�%T�8�[\�\WK�����R�r��l{(d�!��b�{���r���0E��xk� ��3'raUB�hQ�c�
�hjB�׎���q�m�`�}�(�B7a嘨x��_cȂ�Z"AU��[u�C�`H��QL+���^�:\�2�3�	
�R��0#���j�*�ZUf#-����Y�1o���_��o��
ij3 ��M���x4�U�荃;9rX�D��z��g\��o���<�c�<f ~тg�2j�՛�Bp��ĺ�� l+I��x�}�I�+����XA���#��r����޻$K�#ɂ�
_A���zp|R�+��o��@�ʨ�x7�D89!@8
F���ʃ��v�s��X�� �Pq1�b�J)^��fm@�Ӻ���^����)���(܋+����7��{���;t饾ˢ�EY!U���-���	�}�2�Б�I#�6�,��yt��j��E�`]
}�;xY�*���9Gs�IZ7t�I�wP�U4�	��O�f<q�3'Ȥ$ٳ|�Y`�9��Ok�]���M_������:V�)V�!$vѷPp���Nh�yh�ʬ�_�x0N:�����ӻ�n��5�$��j�ś��y�r˹�c�K����$�eÎQ�S[_m��:�~u���9vyǪ}J6-Yx�i�K��-�it/���`�W�~!QL֍��M�t73o9cv�w+m�IKM'#@Q�pL��T��a�,�l��š����,�f벛�(D�"͕���0�������@<V]NKr�+�h�w��Q~h���H���,A����SHh��[W��ʲHm�+�^M�Ec���)�=��$4"���[`9�~ 7YE,�h�T>
���DQ�J�&F�-RƇ��Z/�Su�B�����ó��"(��}ۣ���"D��!˒�
z7�K��IK�i��ڱO���#kj`ک��w�~�ݣ�;���ك�7G�Em\X��F��%�����w�iR��g��ܕ�Ƽٶ�6[�}�ܵ��ɒ�+a�dl|�~��+����$/Un((�F�'��>�D�D�Z�a��#e�6-�]t�'R��X����b����~{�~�<>S�߉_�ڗ�w��!V�\QOW�a�XH觋�-���l��y<͗baT�קF�r�^˕�Ie�K�k��,�ee)�jB(���I'���K�ߚ>Rә�d��E`��'��=��=[���t�ɫ�G��o�?K�,��s<v3OS�M���1�wX��U7���׫W:�T�t�¸A!�y.~He��P.�`�e�K�S��fO����]y⧣떏@�	W�l�	�}l
�������<Q�D3�!r���$1
�}��-B�+�k�T��U(�h�[Fc��E�}a���u�X
4�V�F��Yt�� �򵬸0��Z��ڴ�����n9�24{P�����)�i!������������qȧ�~-���J��_�����s�n��h�2����qu8�-�K�f�m�|��W���g�[�����h�\b|�����#����̃,�Q*	��;�x��UH6-hB��Š��2�g��.�������r!��ܯ֦���������V���EE=u����t�"ڻ����{��M�:RWF�S�йzh�F�-�ñ/֤�C?�r�:��だ�Y%�5�CM�HVҳ�� !�5�p�
�X�=PƧo���ɢC���<TOx�%�5y�RoQ���E�t��{��́P�s��4�ʄX��
I���Yn�EI�ɀ��_��\.h�y��җ�X(Xi1�p<��sVM4�Ӥ,].�H	�O�9QI�M^G�����I�=��?T�W@�3j��q�����˕V����6$��0��.1@�|f�`�T��B����~*�*K�$P]�Y�k��g���*}�`�<id);��yG�,�M��J���=G;����27�ِ �z}���F�e�:l�I��Eś>OH�Jж�I�[�Y��"�X/N�6�-�!u
c}�I��k�B�a����)*b�z���,��a{�z���6'[u)��3�
�Ժ�W��<��S��MT<$Lև�I� �+W}�,��X��	0Qݼ���Z���E��ȞmB�ڽ�R�EB��JQ�=��CP9�~�%��Q�5l��
)qI��$iz��n�p��O�Xl�w�&����s���~3��],qc=b�}��|v����ā���[�ͳ��Qٚ;һ��`{�������*�{�-�V�L�\Q؝��q���]b���T�˖�y�s�����a�t+����	���]����	�������"HC� $��Ɖ��jk��.
�p��X�‰^�3h�OVBW�R�����v$C��jhA�[x��*�vJ{iѪD���&Ak��U�Z&�'п���}8�Pzڜ�y	j}��^<t�y�MM��|ȥ�:�\JG���^����Y���f��${a��:������g*��	�\�q�f�@�L���!
�X��B���K�6pA�c���_)����=C�}Z��sE�;���
�n�<� �s�lќe)�n�4RwQ��ך�,�lٞu�C�Gι�^a|�@��ex���i5'|k�^W�c���=c��~���`�/�W4����-�D�"T�O��+��C��ձ���x#;q���D��$�j�#2��P�$i�+*��k�s�@��>yR�����E��C�'!�‘����Y��e�Q��~Mb����fC�޸�x���yrc�r髈��(.C.�{��~�Խz�����uaZ�n�:��%V���]��Z�J��bb
l^��x�f���̭�Ň��,ƅ܍)��$7Uc��O�0�+�?��J�<I�2����rk�/M^,��dO
�h�̦����FL@��91��Hc)��T��¥Mًi�#�	��֝�/��XMn�R��
!�0�B�?,T�w��x�PpH���
�f���p}�EEL�Yk\��Y_.��\R�A.����x<��pPFR�[��Z�i�l3b��E���ϓi����,A&�C���Y�=��!Y���Bϯ�tW���f�|�_��i�g�&p�<K�[�������>N�'%|P�U����C!hU�~�G�qk��4�U��}����>�Z�Y�D�[��K����/[^��^g�y}EE���ԟ3zM#�+�`���
&�߸�&�
Ўu��bN���B;�<�[�ʮc�&�Asn�>��@�D/KU���B@P���u&�R�pk���E G�6���-*��s���*8�7-"�`Jf�I�m9��d�/��ݚt[����4MK�4��
��Dj��:U���<�\��$k���Ս���u<��zU���+p��jۦ�	���� ���uD������5r�+Y�������:�����}��;�B�tXi:!K��h��ؤDŤ6=�ul��8�M��>M�]a=���}��v�V�}d&�/�g b���nr\���aN4�(w�+{FOo�Z������}��0�>����X�W�”��)|�����0����y�L����>=�R�R^�vbd����a��gNXΜ���̡{RJ��(�����RM[A+"��C�:2����;	RU��2�U~��� �I�(M~Iz��Т(��v�K�
�h
R$t��\XR��K��#(w!�I2���I�̤W�,�y�C�,D��$�_���9�)���Q���ӛ�&U�!�����_�mIV�Gu?{��=�]�{7���c���twUJW��˷P�o��_�C|����_̊��X��ΑiI���jڶ�]�7E֙��]qȵ���d=�K��t-]YU�3���_�(e��APj�~B~�r����b�����UErn�,]3qt�\9���=Q�Wẇ卫��HЄ�V�fK|�2{2X����<wTzM�H��Ԕ�o��Hz�q�r�J揰�P�hU%�b�n����;��&��r@��cEq�{�5��\�CY�}�e���߿6��������[�߀��P�DT'?�&y�ҍRb��5�~��Um�R;����2 E���5�}�n(�Rn��[t`d�K�p�[�p��=4I$K���dԺ���Vb���Zi�٥��3��'^W�OS�jN}�����V��
]���ѣ�Vtb�`�׹���&���:g6�握c�	(�<�|��e�dԟ/�]���(��"�У��u4tr��S�>�>2˿��DА�$�tQ�w�&�z�;h��!��Eex��B������V�ð�WP�"�ϘV���"�I���F�+s�o���Mr�����M
n���ڤ�n�uT{d�üԾY��BǬG��vq��̒x:�����+;����,PU�<�eZ��L�yS*�Q�<4J�*C4){��v`s=3S��gZ��<��h9�ɑ
�C��5Y[�||3C�u|���f�}��(J�ҍ~��2oXS�u�SC��_��z� k��G����k�R\�k�q;J�|���"<нw����a��j��L�6�HE�ui���cj�}��Fs���j��^=���uo6�,��u(L߫��zn
��G���H���Y��9q��l%�N�j}�2����;�U몬�d��q���7y�s!2��%�1��N�|�H�Qqx0�}��\��B�m�b�8Z�dE�CuC�r�J�&�؁A����ɢ	7�1��.ߐ�g~��K&��~PE���6�[��m��U��J
�
/��!�p$����.�L/_E'��ў�T
뚚��_��e����5�t�)\S1�kl��E���J%Ye��k�8��UX�*؏�z�q��7�)M�����c����H�r�t���qE�?�=��<�U1�'2^�J
y����t�1��*ktG�Q�K�j]�}�� �C4��{����$�wƾ��k�x��)�!�C��ҵF3��ovt
����Uw�{)Ӳ�{�p�9�F�Ykgj��8��B���c
�
>I��6������F�L	�]�|���H�
�zqT�Փ����̙m̭ͩ5�T�vy)�2�K� �l�b0�Z���_���*�x�O	�ͩ���D=cm�q"͙���F
�-�}����mCIz�j��+���WP��^\6����5����@~{m۽v�F,.�E�x��0�N�n��f��^�63g�T\�z�T���
�i�:��T�e#����EŞXh��^���k��kҿ*�C�ڵ99U���ɍ�����T���{֙�v�h��*�ғ��XY�h��ͱ��Lև>��Drcc)ŲP��G���bT��w�cǺ�zb��Z��Nhy�-/��[�?e7�hN7�6ʸ��M�����g>hrwM�']p��D#��x`�T�p>6z�Y���YX�~n�
�ڞ&W���*���՟��:M*S���ܵP{�#~3�'̂R�m)	�\�<]!�}���^��4���_;[��B�����Ņ'e���i��%�!�|��ל�
�Ei���-�B����:x�ԓ9_�-���V�tlxF7�Wl��d9�v>�T ���>"��+b��ֽ�y)�U�P	��Rz�=E�ʞ��Z��=/Vj�}�o��2��f��Y�6{]ެbz=X���q�����1��ȹq����G}���I7�q�B?�z���i�ʚ��M��t�c��y��T��l#�^�+NQ��`�@i��c�q1��y�y��Mwы�{��,�����k���o�$�����G�A?RI�0~k��P'����������Ws��a�?��U��=Ge[�'�6����ٸ;
�A�=z�;����Y��"+�!��H�B�%ݑt۹��A:��9j�U�U����¦3];�E5���NE���}8��^+��p�����^�h����1����3�z&�6sz-\����%���8��,�
����5�>�E���Dq��Ўq����'U֮�Oa�Q���wP/}xU��W/��n������@�z)��>�5�s6��؁����t�q��+i�����,2�tw�D��U�;*�7!S�R���[���
�?<@��TLf1Ƚ �
	[;.���߿<h���&�	�^ |SRM��_�p�3�"��领S����ii�C���i���B�41��k�㦬�����������J7�Iq�K?T��s����E#�g~e�#����J#��b�!}U�]��U��%jwXQ�儭-4���Fk��`_S<�(2�#�66
�L���MR�2�)v�R�P���TJX=���FP��u�#�iebS_�u��ޣg*%��Bd�6�N:w���J	��q��k��#�2�ӎ�Ӎ�M{ż���=S)a����H5�$�Y�}�$�f��I8�B�Ƽ��j%�������_�^q�v��hnN��Փ�Z@4�R��	h*�jՕ�M{�P{�#R�U��v��Z"������Yk�$�w]Т+B8l�޼+�,������ ��m�]q��}����@��|�[k�
�j�)s�!���x=S�n�$�t]��=�H���Ҏ0�VX�0� ��L/Aٙ�)`.6�����~��
��Em~��fR�R�����Ki���	�M�nk�$YT>y�UY�]?���E	��+M��LE�� �|L�(�>�&ʍ6Z,��ˣ�=!�Le�As��6RҗM�I_&�J�e$�ʭ�K�+�BL��a1���g��sZ��lL�n����eӈRu�zݝ�κ;�*T��R>�^+}B�a��ۘq2܀���{j#��G��[O^:$���JWF~�(��;�,۟^�Ȃ"?�"���\T��Uec���\�\iQ�a2A��˨�P2�9DF�����&��c������,�o?�YL��S�F9Ul�p��x
�J�'0J4��U�շ����by��q-����:Ƹ����?]S���)2�3�1��-k�n4���Z=
�K�5�3��PLj��=�:�-#i�g�S�Q��I_�f��jQ�����,��q��vY-6�u�~��f���W�㌅zJ>� jX�t��:+]6.���l>=ۀ���?�,���Ve6�I�B��b^����k�y���B����{D��>��Qz�6b��l=�8gҜ��A:�8�k�=Q�xV}�n��k2�w�K=�a�d���ne��e���>�7/����G�^��qDGS��Գ�H���_|�6>��l����G�n�I�ǃSI]^��K]�Yx<�-s\	��k�c���n.�1�\�%5�]�uTJ���e�?w���~C��ͬ���Um�-5�՞<���o���^��G��T��~����{]T�kgz�B�Z�y�'�N�"���ܟ=ו�d��7ׂߕ��oʖ�F�������Fho�T���-#��cL|�:�5��莫�v����8'Q�V}D[�ޔ-,*5($#�Q_Niu����G��0�Qi��Ȉn��z��ȓSF��e`�̙n�������fls����0�3R�+�CI��#ƾ�>��JN*cs�G�J~���tH���}%�����������>�; �b���ٴ��k�*�l��r�ֲMk٦5ݦU/2'B��5#�kZ돱ݚ:��1%UkUlrl=�W巨�.��Ժ
3d���}D���+^�y�?�a�O�0p�m���ۖ^ݖޒLN<0�9""�������2@�6� :�IY�S�|��N�b)QgR�W@vT�Ы��h�W"�/���ɪ�(��e��L�i�+V�!���\������5K¤�,eڳ+KU��Xڮ�Uĭ����5I<���ke�¸ϒ��*��V�Ё��	����t�ni�����?��׌���J�CT�s�vJ.��Tj���W�?�s��ޠmoж7(�7P����6��!�
�{x��L������B�x_/op�[��;�̀�����(��XM��#$�P��I׳���e���RN\x>���jd~����<����G��-U$Mާ�OŷL�������p��B�I�P�cZ,�ʙ���zS]M?~�?^pMm+�Y�'➟#ڤ�(���3���h^,:����7�B\�9��'�V�I�Q4L��3��!���X�V���
�SϨݠ�m���9�Pz�BcJ��q�;��󱨮6j���c]�1�m�Ϊ���ʴ����T���Ǣ�ڨ-<��[���|Y�����1��	z���|<��@�r�=�:HX�-�S�[��k))��BQz��e�2�V�3I�@�%�+z��p8�O�K��m���>�<h�\��A�g�2�t�+��Jq-�Z�1-�G��z�����ښDF������F���ڙXtV��A?Ob�]�'��#گGtѽ�g�1*G�g�3�Y>]���Mr�n�Kd�_�[\��5�/������wO`y�;�ce;��'���w�©��NwYoVGυ��Ϧ;�����]^�2���g�/b��JvL�~n�K:��+�A���F�����\Ԭ�u�3�0rRS���)�Eό���/xl,|,����>�7{RwS+<)�����q��~?D����CV��^��h�X<�7j�}D�o��0|T%�Yrm^�Ib�z��=3Z@�5�Y66�w{�Z��ч�f �\7R򤨽YGA���eC�#��(��
�W@9�-�e#����Su=N�Nh
#��|a:&�L�,zfD���fY�آY6j�}�o�4ie-�R�?ؑ�u��~��)�Eόh��,K4��A�=z���/,d^1/\P��\D�u�6�׸3F,��,����X���mj�e�o6�JN"��W���
�WPza��
�S=S(���,�9bY6&օ�R{�#~���Lı6�)�>8U���3���R���,�n��>#�E=}�o�P��H�����<AU�b�~���"I�W'�h��Zوۙ��h�m@��b1)�k�z
�Ae�b�3�ş|���(�H�/�^�h�X�B�z(�6��3s1�IY3��Ԏb�5����>D"h����|��z;O��ɢ�>��~6MX���	����JW=
��z$�^i8���>��w�ٚ�P��8��u���}��Ku���Z�̍�<Q{�#~T:�ɿ[��{h�>ʟ
daSXH|�^�'�)c�)y�p�Q9����^�$mC��7D��k����2���*E���X����0z���z�g������N
��k�I1��D[�P�J*�NR/)ɤ�JN1�Ced=�_Ϥn��JjccQIm��_��
9i
m	JA2i���d�H%߫Rt�Q��}'�^;�Fj����GT�JUOP�I��iL]]#�,����qj���v�YW>��F�=ұL�)E��Hš�ԓ�dZS�`�x2�C�c"����Eo�a�G����$͡}����M&}TN]��Q��
�Qꑜ�Gٰ�_$��/R������L�%e莔De薔fe�G%OC�P�w�v=b�P.��%~PG�^���G�S堯,)]y��a\�%�,��Q�+��P%_F�ɆuW��@r}�E��z��)�8��%eY���x�2S�`�A�]]�1�+!�[d�i0yݯ��P�ܤ�w��<�.�I�>��g���vI����Bu?�:+���PH��PHmL,�m����4b�~�T*��v�#!u��^2'r�˓~h����H���Hml,�w��=�J
gw{
�����z��n�zTK��Z�URzf��Ds��6>�a����G���b�y^��C�g?���WD�J*1G�PI%/,.����"~m��_�����.��y\z���J>��|TI�gRI���@�\:���E�M̫8)��3i��Hw���v�|!����I�\�%���Rzfh�Dsh�>6��F���͞�b�����r�\�凮�"4P~�Y)�'�RJ�Rj�bSJ���_�p߼IF�]PW� ����K���~	�*)<si�@�_���E!��z�����B��(�kQ!����
�.s_��
)�
���u�Vj�e8W�%)��
l#�T
�;R�Rzf(�Ds(�6&�%�R{�#~�'IEU�G
��&�+��3)���PH��PHm|�[٨�Y!��I!e=^�E[$O��RH��M2R�Rz�+�Dr(�66��F�(�E:�$�mRHd8�R�Rz�+�Dqh�6.�{e���ڇ�f��Q��8�â�RϤ�J,�34R"94R+��e��)�L)�ȟ�i��J��]4�0�I%�G�JJ$�Njac�I���_�x"���'�\�:*MH�O��a���bך9����(�V66��F�������ڕ,��e��u�}�?�g��c�S�|��y1>c�
��1��v�y���o���L~�A���ҫ�'�&�g�K7��P���Bs�kNY�7�5Ud��),]:��:tJ�Y
��^%�+|ܥyN��<�ۀ��b��j&%��x�iĒK�4B�K����2�=�<f}Z���5_��������w$����W�6q�[�g.5���W4�1�e�T�X;�������H����$#�H�_]�4ͥx���cv��=x<���x�ڱ����Ǣ�ڨ���%g4�SML�驧����t���X�z�F��.~�؞�6�⻔Q��w)�F,9K=��ue���bRGxzLm���v�͍�E�P�]�#�.#2\S2/W�_)<=�<0���i|�#6�Q/����jW��PPM��ç���%��1c<�A� ��][=�̇��������⛷5R������hP��7��.�XBӽ?�|`�s6�)�m�;�Job9��s�Q�D����u\�Q^��;��U�'���G��p�]D<�h�rOywB�<:��x����z�遫uN�Yi@��,���9��ϊP����'�3L7�?�W�NY�����^�=G�!���ͬ�8��z�e=��<���J�����h��܀��9k��QHc�aA�'���j��{+�=�@�g�E\bB�f�� �V*Ұv�jl,Hc�Ʈa�ٌW��KO��rW`��X3�jX��j4Vl�C����F�f3��ne����St�a�f-3h��t+uNB�u&���w�p��)u@
�ʭ5���45�O��JS���W�,q^HcccA�v����G��{+\��N~���r�����f�Tm�Fuɝ�i�X���yo�
ӕ�l;�ri�����b�)�4���
0i]Y��:�;-@c&��<���콜�
Ю~��J�K��{%�4&1*��r��:ʭ����7�< ������_�����P�u�?#��W���PT�آ�v��M��9�p��[��y�zuk�{�o��"���ov�^�VФ��3N=3�[�c�^n��B+Y�p嵳1�vj�}�o�v�C~���tahg6O�;�p�02���X^��5OȽ�0��6Z�e�D��E�y:�
[ՄV�F�A;�@"�HQm_��r���4��7�<x�Z�&�O`d}e����$��i�m��IA�8�"�X5�-��;�W�����C��Ήm�
����(����qZ�[��6��ǰ:@a�5烙�#{0�諦�y��20[B!�:��2z���4>a���A�����luXh%M�47I@�p��Uat<8DVV���U��;h�^��!s!���q�|̦���k�Q�7y�]���I��q����aG`>qXډ	6���21۾6Z:�c���@SƏ��3+㤉AU��6u1
��G�pԈ�a����u
gj�o����UFgڥ��6U;K~r��#�R�(`�"n�A��8�&�e��zm�}���w{I���� �G�*L����ɴn���\K��f����u�<���H��k�,^"��/6�h���@��E"�Åנh������tJ�G��v�z+�U%1=���w��Y��̮S��7�J`;���"o�Hd� ���aSE� �E�Me���beۋax(��W���K{
�h�前�&^����E?h���lg�c��D��]�����ۊhh[x�|�hf�6TTc�N>�•���F�K��T+s�vP��J�"�h��N��k#������{������+?�c�h,󮁡Zg29���6���}�Rᝢ��_�!������"����(>\�.O�h�ݴ�
�Z��Ԙ��R:nm�y����mk��1��J�:嶴v���Eq#�1�[��X?u�:�..�|l����&q1
�Rzug3k��'��p&O��_��p?���>��Nqa�`SI-��_�p�+�)�P9$3��R[Z���Ԗ�!�O]�%
�W�Hy!�v.n����k�[�!Y�Z���)�<t���!r=�na�y뉯N�ZV���M3E_{��t%��ӌtCYJ�,%�9SáE��Y������ɉ@�k9	Բ,|l��,Y�ޣ']�-�"P�(G�[��Z)u�b��Zz�&��Iz�W.6��L�
�M�PV�d�aϦ̤�֦]Oj���(�
q�
��hSy6s�i�b�}@虒J�0��??��H�}��:H�ӊ�I)�kzf]�%��J���-+HF�Uտn��tS��7��f���0=��T�K�n	�G|t7�lm�����{d�8��,3��I��G���"�实r�Cک���F���M�S{c�֦~
�it|��x�q�H.����u�I�&
�3}(��
�W�v�ʛP�L��e�9�������k�a�,6j�PM#J�U�*!y�CG���B1�'�<^�#�Hp�30ل�&��uSR��2�����j�G��Ii&u��K�~�=�v���\&z���D<��8	� :1��r���[�J���L��Bq=ېm���mYk���������� 5hIy��DzB����,�R#I���o�v��
쿶��ʢO�	�N#�G*/H{!Se���P89n���Q����iC f�"�c�E'e��E�M�z��C�0<�y	��|��\v_P85/�>:� ���FP��࢏�9����i8�Y��F�+�
���EF�A�Tɠ��n�
^z>l�N4W.��{�v�Wf��K��'���^,*�����&���{ܘX7�L�u�Y�z��K�@�ZW&IW�/d�}����˙`�v���XϿ���?n!��T5�oڤ�j���,��G,��k�Nӽv>�{d�&�B0�KҭP�X��+ԹG{�p���u,4��1�.��#N�9��F�jҮ8?�ǻ���� �L�As�J�1]=�1�g�'�+�	i�y+��Pg��I*/(��-��Qjx�c�z���5s�Hnl,:*<����r3�E��)��ѷ�MՙI�=�.���Q�<��^8��W}��˩�����R�*t���W�~w��x��T�v�Pש
w	-�m��t%���&W��,n���}/w��&���y�)��#�Ό�HQ�a�����:�ah�:ͤ0�>j���'j�}D!t/t��n�ϑ��F/�z����t�i�����P�B��(���x�|��l8���u�t���9:E��e�K{�|l(����G�֑v%�E+lW�� ��F�Z:���}�{�z]�aG���ݖƈ�s�M�q&�-B�,�t�����E�(�:�K$�_;ܟ������ʌ�<qL�aV�uP��q�ØE~>�(��41,���Z�nKc��A{���SIdX��/�Ȍ��i��G«�av�=sgc�IJIb����,����cB�0��U7=V�w�#���PLQ쑘;�_������S7G�b��@�Pv�Z��.t
My�p��b�ܹ؀a�����h����6F���K똵����BS�c���[�p�"��"&��j�q� �c���Yl{OE�HR��N1����
�Z��W�7Ю����!�%��d��=#��H�*��C2��b07Z�}��ֻAY�&�U�X��jf����1��d��ܸ�����L�����%0���1�=,u�d�1��
Is��ke��������x"�;T��ӛ�Á�'�E`���	�̕��_��J�/�Ƚ}��C�^�(�$=�d7+�b`�,����{��B=>�f��5W���8�/]Kws�x�3И,���4�qD��S�,u�C�*W�C�x��>;7�ҋ�k��4T���X6�S(A��և�W��k�[�H��x�ͳt�&ct���|e>�1E�e�T�j�ᆬ����{�&h����ki���=
'st`G���y���I�Z/�צ�(�H���xf�Ds�կj�&{�4���N��$cr��Oцw�U�m�5��#U�4�O�TM4w>6�҅�kQ�&x��8����p>�ޥT�G���
��H�ll�1�̧e��C%�
Y�}�u�˺\�,&�=rQ=�˘	�e����Kj�}DY�s����#�=LJ�Y�H�7˿4]hn�̰�� ��\<Lj�}D�x�FE���s��b�<�!D��=rS���X�m
.���t��Sg1t;8]=,�Oa;��ȵ�U0o���#�@��a%�nFР����܈��'̞o���j�0@OT6�S�p��i�H���#4�
�,I�����R}Z\�	���f�q�}��3�_/O��ק½�1G~>C� I.���o�� ��I��^10(i3R�E[n��3�S��}r�|�/t�6-����"�׽_�9�D�D8M��ؽ$]=�_Տghh������t"�0�i@�W�Y���䚍,b2�����U�Yŝ������*�š:JG���"�F�<M���f�����1q����GsXW�z�����M�nβ���¶�0�)�Y�L@��ԛ<���h���]K�4�B��D�;F��e������Ld �ZOKW�I�.iߟ񯈔��i!$�F֨'
�pd�g�R�/=��cO��Oђ����9������
�#Kz~*$62iy��s�&�Y�Nsey7SJ���Z�$�;ks]m'���)9�z�$�	%�ІD3�(�AA�/�9(D���)�1s��gL=Kv��5�g�%ƛ�S�<��%�g2�k1;�4�]�H���Sb���Y��k��G��3����,(�X��п���}��k|_O�{�S�J��W�MկN��je�����yʀz�c�x���7��M�t���W6��2�����S�S�<΅m�"��o;�<�?�2r����cztP���|��\�L��?���Ȭ�/N5}깞���{4:^����KT�=�X���~n&n��JP�&���/�'�L��`*��b'�:�eo=�{B�{�X��C�}��u�?�hl[�x�r �5��ܴX{�X�{ϴ�P�|/�b��9zƧ+5�̾�Xi8�'�yѻO=ה��8)n=әm�p�o���
ę���Vv��s	�t��W��ǣg��W��j{g��1�8���8���㫩�xt��x�y\����<n��0��ZM���V��8�9;�y<�u���2+Ԝ�S�5�}��{���Y~��V1Z�O��3��x��3�V�]���f�y>G�x�$������̭g,�>�O���1A�]�!9I{j7.��s����B45��Iuc��7�f
Y�jY�3���ڪE��qD��`��q��CIO�/<��~�^�~���1C'�������?�\3mܧ��g:F/J}i^���1z�/П��LKә��C�	uͯ1z�"rG����3�Mw4��w�f-��ӽg:H�ىQ3�]��s��k���Ȇ;�x��g����&칞�b��s1��?�L��Y��� �}��DKQ	_נ=:�pW8�0�&L>W�;g��t��!+��A=��6|��{�7�\�{lY0!�7�<}Ꙟ��s�Уї�g��l!u����o�Z�i���+��5C�3��ϋ�k��{��FcZ�k��".odn6x�#0~��^�pC&n��5��G�4�+����H0E���
�VMʍA�Dtr&�'��s�tP��{O�I%EF��-gs`	��7˶�-�Ti�����ãJ��3g���8#k�Pi��*�j�r=���AK��Ɓj�3s��x�Zo��A�=�:i0.|虏�P�	�4:x��Щ�&4Xx�+(Z��r�"zL�+h���{�@q�Pb"�KB���|��d��huyi{M��\��o:eC�ǾGu\C��3��1 �bڍ� 
��c�T)gk:���(��i��s�,"}�1����kAl�rZ=
5Rg>.c�皩�Խg<uNLJP�OSn�V:z.4�X��SOG#�S����>���1#㩫�F�1��`��>�W[�q�L��{�};���,t�x��X0��q>3Si^-U��S��֭��{.t��
i��3�L��z�=����\�΁�3�ə^x׋���	ȕa�'"F
�ܜ�cX��mvV����47���јV���*$5�˖�8�Ѯ��=Vk7|�&"7�'�{*�ҕ��/Wf/+�gu�
3�-�dL�1!C=ߜ�ҲC���<�%�4�cE
��d�%�y���m�
�ҟ���F�n�י_h�n��l��/J��[a�ǭ�{J;dg�
�>�\[���v�w��s��J��3��߭��F��>����t�c}&�/4Ӻ�Fs�d����L��}jd��k���kjb�{ϵ�k�߇�kict��g>j���j�hQ��9��i�]�E�̭d���yAҢ�z��[���S���ܡ�����gx�-�˨�\k�?u]�U���G��E4�N�~hZ�B
ס�*�6]�fkŚqh6��~f�V8���=���3���y��g��΀=�s��L8D���DƉ2����|f6(NǙٳp�3s����;���g:3��?n3��z��{b��xiw����/��c������{��<�z�bb���g�{��4|Ǐ=}�^�zƩy����3q��85�\�_h�yj^�~j���,��ps���ӏ�P�#�im���(\���ňz���ʔ��k�O��֜~PH��1l�K�����4M�$�yW�
�Z��	W�7�բ\��=�g�{ڻ�u��=�*r�l>�LO%�z虎_>7�m>~Gϵ�S����	�=�Qo�}�t���<�������go_�kw[��c�ŽP�|蹖T��s}��O=c6���k��m3�õ�4O�&�y�ʶ�@�M6�c�m���|ɞ'U�c�)���yi�cϘ��ԭ��>������S��7?��+c${Nmɞ�g�ԽG�5�y!�k��y��8O��c��2w���?_>�W�+5K��x���ޒ��MZ�|�	Ф"��R ���a��{'L�lnpG��68��4Ȋ��I���_C�$?�B8N�U�	���_����h�>+1$�S��1[�c���A;;z�DS�˲;�v�<��SE(,B�Y�=J̞���F�*�ل�獍�?�=xP������3�����mdbHtY2Oj�@$I4�+�8{���A�KnD?���"A��	�؍�Im���r*��jg0sB~�3�R��/85t̄����sL\ud/I��4'p��u��cf�3��ʿ`&eZ������Đ�OR3\4c���T8����
1��N��Da����j�y�ɇ��8��@A���pJE�z�:フS��_�R��S�]VK���$���?�X�$[9E
n�s��/Xi,�E���I<�\��'a<}\4��C�ys7�+)鯱�qP�]^�]=��)Z9
�b��௿r�.f�g���d����W�_'CF�1(��쀦�l� c5/��G�%��MD�oOS����8OdI��J3*r�o�VR�_��R�]^�.��ۘG�DX�0��C
�k���>�`�F�3+��e���S�B����b.��Ld"��1��ә9�D�3,a��63��s$t�f/���q�$M��K07�sm�|�ɿd�I1E�w�����CE�ǣ���L�t�l�% Z�\Y�T��`d!��|���3T�$��S�Q}�O��x�e�����T��n�ڐw=R�U$q?۴��3X�yY��Ĥ�df!�kf���9;m*�<'x�q�W��
���q*l����d�.�;�+Y����"{���=
�*>*#B��e<��9ہ�\��X�暸��_�6S�Ml�c=6T1B��.�hFT����r-'��_02�t��.b�7�v ��فHⳭ�kڇ�����%3@TsR̵��Ξ�	%���$�*��?�N�e��I;��'���d鼠Qʌ��H,z��yr��q�ɭ�a/��/y�����\�&�$��b��|,���0�0��V�q`����X����_����~f�A�m�>�lG�����x�����#"��M-�r�O�贩fϥA����d���1-��a3�����/�ge�7��̵�݆�:��籂|�
��>��54��o������͓=��@@23�p��Y���6����B�L��ð�4���y�e�s����_�8����#�q��72�h��.���#�Ô>�/��o��������X��L!��Z�,���~�0������\�."z�ឭgdL���~4���{&y�8��3��
L#X�hN:�������«)&�q~tf��/��'M�Ջ�1��Y9?��It	G�>�/ �J�w��j�S�Yk 9e� $+|��t��8�W�x&�ߐ~Y
�e�a��_�ك">�8-V��s�:������m�s+�����DfC��~���a~!I�r��W���?j��1L���P��r0��TE���_I��J�/a�]�j~�5�'Z�eDAۙ>r��w�COs x9*K|x�M�y�8��@�S�9�T���^���Ikb&}� ħ�X�6r��7>������
�,�kk��/��0�/L�j����%��"U��A`��0TӯC�hY��q�Z���×���|$*e�s#�r0AsF�nm/=����<F���x��Y��T�0%��=r-� ������0]P�������!��%Q��
1��?�c�{��va�݆$1��̌���`�ږ�ǟ���R��M�3�1dK)b����2K���݃�p�i���9����50֕ƒ{V̳b~w�05�U(�醨�9v�E��;v��QC͐KIs�@���,�vsL��<�p�E��I�#�n��?�5#���%��&}��[j̗J��o��}I,����Δ@�l{��7��h�B3aLL�,
�>|���yV��$^gS.?�_�/d
��fΫ,�z���1�l���|G�X��h���L�ͳ'��lAUX̉���a�/�91��+j�|�+��U��ܡ���c5ۆȣ��-}\T9�"��h'/��g��gp@��������6�ؖ��zn�(�a��|�Ѓ�L�XRf'ȹ/�`�3�S�Q�C'L/�2�h�h��`��:�A��
�ej�[l-��L�ff8����h{~�`9f�o\��L���Pd�`!Yp+c��`�O������2�=�Z��`��4�n����8�`vk8�ڞm�w�������=Т#�2�	���-�{�l#<�l#�0AJ5��	��DUi��c�LJ�s���ݘpܵ1�z&�:{T�G��6�@'$(=ەE
226�=Q��'H>{
��Mu���s<��L�6sR������꺤w��겅W.�g��%��,��y����C��B�̯��
KX:���Y�F[*
ټC�a�)�,�����C�̖��C��zgO�ii�4�I$�`�IS&{�!H�,�����l�j��r��*S'{��mM�gDm�;����Ξ&��v�e�Iײv�}x�¼N�F�Q�p!�n�:x|Z���37H�����N=�z����Ǫ���y
��N;S
X�����g��j�j@�詭��/�<d���9Fc�ّQ��F��7�P�v�y�������G�2�*J.�ڴl���[��_�z>�>73l�d���6��
��y��Ip����v�[3�'�il���r�dR�#���U��=�X��H��8�,�[G~
:��f�`���mB���=L�bi�vE2�`~^��V�f��Rʄ)��8�t?*�x��ѐ}��@T����.Le_Q!�:r#e2>;2
m����*WE��f�/*_U��Q��Q�s��s[!�=��Z��bE����h=Gf�q YˮkF�L�}�bF�q8�$_�t�|/�u�4�C�.�������p�&�H�4蓍Dc[eZ�s���A(S���^5���yE��	�͂�Cx0�W�#���w�Ph���t�����xkڊoĥ�K�Hyy�:�I(q�
��g�y.��v�Z�U}�eEE�H7�t���]�r%�l0��'��A�1ӷ��_��Ԝ����&\%��E�/a����-���\t���1�����,=�Q���b��Y1��,�%�r��1C��'<[*���,�S��+�q
*��}3+AHj�P�������?��A��P��D�iڞ0*�S��bց�{��̟Ym*��u��V������̩̰B�,}a����RY���J���V�B@嵂o�B��Ç��\yϣ+�w���O���x�M���
������n��+T�Lq��� qK�v�i<l���g�>�p�7����?����@�����?�Ҵ1�f!�*����uh��Zprc��+��-YY�16��p[�yV�l5�z���I��û��@��'j�U�t�ʞ���>+�,�v�$Uq��1��ϩ�?����9���Q-��]�y�J��Me�+g��)�#�dS=��������@��?����OH
�	�6a�D�ڸ�����
���48��\�qΤ0 �sqv}zCEmǪk�ϩ�7:��
�4G䏥��`�'�:�7[�@��q;����C��_��	�# ���g��L�2>B�_����Q�${��ֶ��GEe�<g;���b���C�\`T����
����6^�܁�o�/�7��o��e����
���?θ�2Q�
�oȿ���o��~
��n��ݐ�!��!��!wC��Æ�݆��
�����7��n�?�ȿ��?mпޱٰY�?%���������7�_n�?m�l������������
������
��
��!
t�_n��m�n����������rC�uC�aC�����
���o�?�����������p��������
����+�/mC���
��
��
�����o�?o�?�������?�������������������;�wm�i�;�/;�+��7���
���w+�߰�a�x�q�u����
��
��
����7�a��b����O�w�7�#�z��C:п��C��o��l��m��݀�����
������~S_,��r�/;�Om�~�WT�]p��(�i.H��FaUJ��9�9$�� F����h�9i��q!O�BTm��c�)h�Ԩ���9,�v�=�y��N��*�/i�f��6�JUݦ��/��Naؿ8b����;&���GhBr�r�b+�٤�F;4)'m�miZ�F~bυ�v������?��������/�4�k��né�ǏL}�^2�}�\7�\+8O�_k�k�Q�ne��0?�M02S<zRp�U�����j��k!M�7�sL�����Fa�?1��ge��ъS�ƞ�~��m�O��.G�ˆnڳ�H����h�}��a���lph��YPY�|����o~>���7?����䛟O�����ϧ���'��>����WG��6O�r���7O�x��)7O��y������<}���'l�>q��)7O�����}����n�>������W'�;�XV����o^>�����o>>n��q���������O�||���}|���'�||6�������ǯ.>��}�򉛗O�y�����g7;�7?�������'�~>���6G��9�ԛ�O�9����'l�>���n�>iu�)m��7O�t������o�>����6G�9������9����'��>���o�>as��O�}�O��6W���ě�O������O������'�mԣؼ}�w�������'��}���g��)�����So�>�m�>eu������ק��>�Dg���O�|}6G�����|���'o~>a��7?�r������'�~>��>в��>~��O�y����O�=}���'��>v�-�>����o�>es����O������O�]}Tw���7o�t�I���[�}���'ݼ}���9�ě�O����'n�>LgD��*"�hm�I��up���o�G�#j�2
��q�+C:e	wH���
�u�t��Ig��x.O�G/��نk��D*?ޣ8� ���?���_�(�c�����V�OU<�㒱� �����}$�/�,���iȨ�S��P�@�:�)���/�οn:�r��M�7����M�_W��t����/7�[u�nS����?�J��)�ݦ�o7���w��|����?mZ��i��M�nZ��i��o7���i�æ�ϛ�?ܴ�������?nZ�x����?nj�.t������M�6����7�Y�~����?ߴ�~��U�nZ��i�aGY�yS��U�ߥ�K��nj�+wq����?���/��?����p)���O��?ݔ���/��߭Z�|����?nZ�i���7��'J�vS�Ǜ�?mJ��)��M�oJ��)���7���i�ݪ���?�����o7���e�/�D����w��߯��]�w�����o����zwS��M��V�]��E�K��6����7��i�������?�4�����?m��|����?����i�ݮ�w7�\u�]�+~Ү�O7����˦�w����T�qW��U�_6��i��M�_f�?N�Y��n����˦����t�e��M��7��ZI`����3g�4o���;�>]P�|�#�Y�_~��C��m�ؾ�|�>*��_K��9s�܀+�&ȋ�: �q`g���z�5���_~p{~��1��%�OfFQ�7���r�V�*5)k�wa3��"�Xl+�l�O?E��4������<�>������<�>������/���d"�� ѲaU�B��G@�*����u�!�?�����*":��b�#<Ή������=�M�@R�J�wkC%V��r�!ז:����;ZTϑY�b��?�a��5B���?0�b��)� �9e�'�[;��
F}�ʩc�ra~��/�d�y2�<�}��>Of�'�ϓ�����d�y2����>��tՙ`hNM©�9�y*��uǔ���QջLL�6:ve ��8����	L�����w�V��0�c���dF���O�0�;�}��L���(�+�(|=��o����-n�|�0pc�R�V��Z�V��%�
ݧ�?0����`������?0����4���/�Hiw����')�4��!b�b�mTp.��=�Yq
�C�:�:g(�pp��U����m9}��4�ފv��ʷ��`{ڨ+�o�UQ����ڕ��C�	�9��"P��<�:� \��5�ރ�8��������<.8�����<.8����/��d!��:�(�J���@%���@ȍ�`�͍�:,�eR���B���a�L�܋i)s&�	
�ҡ�`.O�O��LH�q���a8�8a8��OЭ�?��}�#�<"�y�0g�a�����,-�{�͟��vNS�C�ņֆ�O �H�a�'��	�}i�@�'��	�}i�@�?H;g$�o^��CV'��M�����@)���?΅��J����f~���a�T�_�!�Z�N��5i�#?���7
�r�7$/��^����'պJ�i��"���E�qd�Ìx`ݖ#l}
70���C��P�8�<5�C��P�8�<5�C��P�'j҄6���zA�,�J\�+}O��v�[��r`�|]���Y��b��Ҿ��C��%"VB�D}�)��A%��s�	>PAq�i���7
���	'���sd�IL�{��2��[�
��[ؔ��i�L��,�kk�6(��@��?���� ���@�?�;�L�"QO�
�xV�"��?G����Eᒣ�ItJey�}��d�8ѣ]`c�{�D�^)ql���US��֖g|Ms����X�Gѭ��6{ν3\CZ���
j�ve+��j��`������=i�I�%|��=)�����̉(�s*��;��h��Q�	`>L�P�&��އ��wncs�qL�oC��Y)�_��$�_�K9��xΉ>/:H9�lqX�;–y��Ӧ+��x�S���mw�l�4��l�H9���H9���H9���H9���H9�����S@�X�̲2y��RY�U��]���ay�G�J��,��7KB�S�z
E1PH2�m0žB�*�m)��`$C��dy<�m[w�ǐ)��t:x��/��{��kg&ޱo���]Å�3�KJ���$]�Zd^��������s�o<��,�^!��y�j;�rs,e�j�;
����,�l�e��������qOcTXo�(@X;1�Z5y{E���M��
�B
U�TJ�?�ܒ69���L{��K�#��n|T�Y��:S�!�2�^��=����������ˊb��e�+�zηV�k\>�BS�����	'r9/zs̷-v���~b�_O����l?1�O����l?1��c�'�ً�GQ'��UU*��I!o!�j�q�y.���
�� �#�D
��Z��e�����O�E�pr�n@���p�m�C[]��FY�\f�m*aB6���Qd��vy�	�AIrW��z/�ߍRB�vk�	Y[�a�"��O��̶��tE��S<c���i.�~��a�$�8̬-�h��B��q�C8�t��rQ&�'EY���ϫb��Ę�s cO���ё�_,�1(�S��|��k��MYajTb��
��P�"<�N�q�93���J�a���{�G@z�G@z�G@z�G@z�G@���@�p���hV�Ī
��?�6��'��}`r
��m
a�ĵU�׸�,P=ЮYh��R��+��Y*
a2P�^���&g�mq�9��e�̏Ц:$��r��N�ȝ���G��ȭ[XU�lEU�������*P۹��쐾�H�-�&��'�0��"�b��8TF��y�x���(�^��[�d*d��L<�4�P'0e�q�&q�&��<�`N4-�I	����G����vu؇�xt���#^�N�!yZ��!<���ү�)��]�dX"�Z%p4a�]�M<J�x�7��K<*�x�7���ģr��*�M<�7�(�ģ��G�m�Q��G~���*�	H�& 囀oR�	Ha��& ���nR���	H�& ��#��Gq���M>�ģM6�l�w�ȷ�p�7�h��n�Q��Fn��&��h�n�Q�D���F�&śh�IFy���M2�d(���Q܄�|�nY}���&�ģ��G~��.ջ|Գ�t�(n�Q��G�Lay���&��|�n�QZ�#z�_R�	H�& �M@��|���M>r�|�7����#���&�M>
7�(�䣰�G~���.APY$�˚$$�IH�&!ś�TnR�IHu����f,�*$Q&Z���IIu���.%����	Ie�6�ބ$�6)�lRRݤ���TV�h��t��&"m��&��x�n�Q�ģ��G�&��x�V�(���|�M@򛀴'	K7)�R�	H�& �U@�Kl���MB�T6	�nR�IH�&!�IB���*$՛��v!)mB�ۄ�|��MH�����H�&#�UF���Tv	��l#	�Rfy=�:AhU�P�#��tU�PLO|)ޑ�@���0i���*13��� ��<X���Z]ɇ�j�;��v�S�20j��͘K�#��P��m�V�S�@}��\���8{��1П8E�H�
$��.;�(���%��Q�j��6��c6��}	:���,�$H�����F`B�˹}���mN~�/���Nd�t~n�m�w)�k:S�o)��H���H���/���/���/���/���/��������]2y�5	��E3/�k�޶���()�XMʍ]`�9APl�^�韠�۪�~z��H�`�iG�v��j��a'���ڞ�	��=a8�wW@�ĸ�{
�}�S@aa��=����G��P�llĵ̾Y��`밃%��"|
)BX8�y-�??��,�sO��x�=�`�'��	�x�=�`�'��	�x�=�`�,	h��
D;RU1����(�s���4���>�r���H�do��E��B�c�xc��E����]S|�,��Un$�I+�N��j���#4�o����+;#"���.�Ԯ��x�'�+��V��g
0Yq���!�"���|"L���!�� ��Ӏo�ѷ�x�mw~+j�ΝB�g��o<s�<�Ϟ�gO��'�ٓ��I��?{ҟ=�Ϟ�g(��)�	4p
��ŀ�\G?���m����K�VN�#�l
���:LN`BUq��D��B�C
cX&�-�V7^ʂ�Q��C�tq�騲]�#�=�<\=d�\:������^%٩�>w}��A���/P�}��
!���Ӕ)���6�3���Dۇ��Y�s�96T�c�*�[���	�|�N���'mk�V�_7�o7��Z��ul�
<�o��ڿ���m�^#u���[߿*l
�IF�	��vo���7c�[�s_���Guڼnl����s��s�&m�(�@��mڽ�΃Q��N�7��&Umߠ��}�l���m�m۷���x)N7B��?KA�sn���^�	��cSa�@f
���q`4���bj'Q�P�=�5��n�X5�F����1т�p��7���F�#G�c y�K�A��G�V'��ئ�Qv�!��M������DrQڎ#�~����dH�FL��vM�#r?"�#r?"�#r?"�#r��"w�o�-)9,̙���p!4�|�Te\%��D������(�Yn�
M�dd5˴(���j�����2l?�؇ ���]"пB�7���'�te0�E�8�>p�)\��{-��Ј��."qډ����^jsד+�@q��+�G�?z�z4��M��r�6�MIזeH����q�X�9�c`8�L\��T��ThlPܧ�{�JO�#�%�<{P
�����cn�47��}�O����񴻁�����{<�O��iw�d�� V-�+B|N�]<���c�M�����&U%r��`:�ê�`u��5��"���ڎ��}�������K�꾻�>d{��b���WĻ;����M�,�]�THY	�D��v�.��0�0��&<l��$6Qa��
��8EQ��ŽL��r������r�_�SeC���眞GO����=�$�������>}ί�Ə?@�OI)f��JH�y�w?<_v�з��7&�iʿ6���=F��	����3�-�����05�)XJ��T5�q�ZL����TR) ��� ?�-z��$ϖHڒ;B�h��؍��(vF�3��Q�bg��ŵ������\*��U�N�Z(_q5��LIw �(0�?�i��d�ɕ0a���BΊs+<��ِ�J�1�n1��e@jk5.Qq�M_�,�8�@�!3D�#�����-�u�+"Ȫ���Q�A�Xj�^�z����;Z!)�#@�J'�U/�CD�5jm
������ď��������}Tݼ�w]�d~T�̏���Q�2?l��Q�3?L/�C.�ď((�?zA�V{e
[qT�b�0��A���tYג��-4�Q��W�R��…�M��	2�	R(♒l�3R���Tg�:#���`!U���R�����U�P2�O�4���ϟ��@��fI��	0H3��x-Ct���e�IZ]��PjܝP��]�*���i���>�'d����@�Z:��s*�A�V�M&	��!�Ē.s�ƒ�1ŵr���-�Q�8���;|�M�9	=l��-��<���s�3����$g �$+A1�~�	�]aU�7$}/�U"�B��4�,�������#dj�\)#���QPphtj(ⷢ���`�Hl'`B:�1A��5��XG��L[��A��D��|���Q��ub�M?�
k�|�+U���M~��]��̜���~�4�*R�f�k.�+��t��\
sU=Y�(rF�3��Q�"g��C�^z��B�c�`"I�iX_�~��S7���%(XF����i\�XQ�véF�~&L��djD
������N6yJ1@CH�oYKarU(	�4���Fcm�&�£������g�W�
����P
���
c-CqqD&Bk,�(���44?���ṛ�،�f,6c���X���Jj�R𩡅"p�.ZUQs<��{���+��N�L���'���U�� ��Hh?��GF��|)�B�(�ߊr�&
��*4eH��$JKT�`W�/�j��� Dз�5�MY3�ް�-)���^#C���m~��}��*њfhT�P�A��/Nu$T�JCI�6%欄�}`��vm�4g�+�6�bŽꈞ���f�6÷����
�J���*\)h�tXL��#2����gG��$N��kQ�4�,%�z!�:��Ae�:�0�ߊ�/�/u�s��H���z7h�9�l�u�CM���^�,"$�I�󑩋7�CA�Q�J�%�
��)ν��2�%d�B�*@�������8*<'6��g�?3����v�x�]�Q�NH��Z��U֦,K�����I��rO�[���dp4*\��=c��<k�EA;�L*�U����OB��I�,�	�6j:N~G�[jF>-�`5��a�uI����8���N�3���J�C�P���:r�ں�)����V����F�!T"�qbW��5���"��'�g��g�4�7͸i�Mی��>� �?��K�t�� F>��p�pQ���U�2�TY7�w��>`�i�h�UA�jR��j�ULj�:��!#������`N	�.V,5�.B��m�d�#�'���9�z@���h��͹�&��d0M�N�M~ϔ!gVa:�D��F9h���$:*�ݧ�F�rm�z����f`4��hF�FUx�bm�P\³
�omu�3[RU1���D
�U���<�T�ğ�ҤH:� ��(�
��lG�	�����9�(R�~TΡ��d��ZR����פ�5iw��W�EwS�7F�Fup�U�LLZ���>���B�&4g�n��T��U߂=�3D�?`���s��ʳ�Iu�E���u�'����̌df$3#�p$#b(cɏ姰�N�~����
��u�c%��h��AP
��j�h�Aׅ�.gU��4u��j:ij3A���
d��lt)���د�Ŗ�����p�'���%���8*]�*J,�����d��٫�'B*���V}�]&��h�R��[o�0c�3̘a�3~`a���XJ��9�
��Xp�i�,��4Zj�H�j??T���,*�B�#W�;$��s#ɢ�W`ԧ!A=O��0F���4>�qp�u_�����l�4A��zT�hM�H�D�tқ���@M	7�#�����2�
u�\����2�S�2	N��
��c'0Q�q�O�k4��aI�����J�Ӗ��B���/8�o�C���{0茣P�;���ay�.�
���7f�?�Y�Ϻ���_�G]O�5Az՛�Qs{Mm�+)��X4vkP�P���=t�{]aN/V;A�D)WAg���*I���-wO�e��M���e(�S�̕�m�ibA᝔"S�A����;J�lbV:WȘ t�����KK'hU��DS2M�e+O�*ƹ�sl%�bQ�*.D��=+�YϊxVij"~|(b`�p̢���h�.ѫ�k��0]Ή��u��oW0Nk?^dpjqFR5�e`A�(<@�Ry���A��<�b���9AFtЃ��VM�wل��x��t���`^�Z�氖5${�P�E�pLz��:fR��m�E(�ba�-٪�����))D�t֔�CZ�w�&����g�:��Y���uV�[U�VR�[A��E���MbAω��;�x����� ���e`-,�O���	l�����"x<Q3�5:�ʠ�e��)��iB�1%����v�w��S��\��^�K��c>Z�6�#��|X���a'���%fBe Q yf+a�O�X�L�qd;l��@I�lC�V	�CГ�"�SO�����;�P�Ca]��/�����F�~�k�=�
���3�^s�6yЭ���x���֓#-��V'��,�x�N��[h^�2�T��L"^���r@v|��˿C�DU�;����@`)�Q�z�~q�_�F�	���N!��mL+ZG�I22p$J`"�z��(+k�h��'�|�Uz�[�Q��T���d�g+T��	G�G�oi^�#G�9"C�RMYɰ�t�¾��W�*�#\ς}���H�C#�K���(T
[G1��Eb��
\C�J LB�+4�'5�"b�Eb�_"6��	T�+��A��H�����wv�lZ�Vx��؛�H
?���,z�
]�b�a��+eM&���s0�%]�R���#�w,L
I�mIڦT�ǖ������̘�@�*d�
�%�G� �)h�\��z�z�q*e��2�-0��Q3K������"Lhr����W@ĸ�"�J��u�=��3��Z�g���"���$.s���C�[Ň�^Ԓ3�а���AbC�#��;�a��n�KI�-���#��	l��#F�s��`@��2U���7$%�U-h/ቃD� �YZ�}�A	ˏ�0��[	�BH".(=�H����K H:YL�ڠC
�hE'^�8ۄi�;��S�{	ί4/���E;K��{$zJb}:�:�~�adh>�� ��BN68w��
E*�@I#p��@�b(�v��
U(~�^{�
��Q0�0���t��V�<�&��_S� PJ�(hI�/��A�Ut/�Ђ���i�.ZAG�R�;etW���~q�����m0�$�%�%�yDIR�f�,ù2u�F��&f�y�`i,ԭF�	�º�x��s<.����l:���_�@�n�	8�x�9I�����F6-t����S]OM�~���Z��T�
�,5lk��H�$4 c�Q��]@�ՠXdXTܥ�4�cI1C�%F�%~甪
����
���W��~n0��a|'�U39�fEY!�L�&4&u$h�#�~���LKH��
��)Lf��
|V`u��+�
Sɖo�������
�)�omIk�PV��
ި��P����I�bG,@]aKU�o�>:<a��
�H6��KD�׭�fMj��S�Da��&��#��b�$�^�E�uk���-C`�p��I����@���(�����gI�H
=%:�/��:�%�# ^��|��8��}Q�$3"f��n-�\���…Z&~���	�(�	�A�5�
��(�\ID�7*�l`C+80���!�C�T)�~�����(�(8�J��Z�x�ƠYb}MBj;����[����/Ϯ��i��W�i�+Zqϗ8�mr��h�VX���p>�Pk+9+4'���&�3~,�[X8O������jC�m2y4�??�?��D^Vx�����Ѷ�>(ϙI¼l��3Ƀ6���F-���������m�����6���ph�)� �-�tf�bZ]Z�PW	�'�t�JPZU�8�|h�tnj��2�&r�Ey
�����'H[�-(�,�PpH���ǠO`�PD�K����$#w%�oh#,�h��Xyɢ�5�3�U���u?֐
�=��BUQuMl�E���=#��WU�xB�FWU!@�$�b�v9������w�4�t�84��2���k�pZ`ex�+0<��|UI9���r���{�V�U�&���ք�휠�N�3O�ؖ�`M���,eiZ�
:���Xs@�P�T���y_f٠S%U#Stl�h��Ϩ��!�md����F��
���f,Y��Eժ�B�쿏A4yjO��M?�%���,�7tơsWK!^��m0�;2��?� e��Y������ �!�sG�WICgn
N�
�~,�
��7LtYw�J#
�<��-
�*:$Z��� ^�wPSBB_�d��*X���
�
�����’c�U���g����Z���/eB0>C�`��Dr׎�]�,^��P�	i1��8��Nh])��g�]
�A[�E��xjD���[$Ca_�QT�K��	r�!5)5J�G����_ٗ��0�`�O�笐�dJ?+0f��a��A!)�4�+�8�.c�F�S@�x��Wj:o�aO�b)%ձٺ��h��R�#�A��x2�h2��`�J1V�Q�b��k}��Ay r��͒%F�@�#��T6B	�"%�ɍ����(��ď�t�rXk��E��#����&�UK�C��zjK�rf\�pr���WT2(���7��)��N�X��p���!�WXS����j���D;�\��&M��
�f�Xߠ�m��9�P�	�Y0.(j��Uo)�ԝuڊ�9�M�l��.@�c�iĒ�
J;���"�Ώ2djPj�Ϥ>��\��'d�'2�P�t�sS�Zpس��jAE������!z!��t�1�h�lw�d�<�+����F���vػF
:3c2	Fj�uD����K�8*H�aGS^��Rb��S��Lr^4r>�;2w��tp�0Й�&��魣G(�U�Y�4��ֆBY!ܢ��L�V�}X�����3��9*�q/CX:�)�&˖�C=	qOҮl�c�)Q��g,dJ`!����%9�l�˰~��dD��#{����h��� P]��؃<S�$�$&�CSJ��gh��Gs4"k���_P4�d�Q�F�(iZ�tyk��
���hơCNi����8�?�(�B/�3� a9d<�;X��C�R��\^P��Њ\��5
\����\+��:D���X�T1��B��@�'�N���0po���%��I�
끎�G����:�[�b���♷LI�d�қ��y
��@�3�h!2/�P��e��
�d�}�*�F���,0B�s��;�1YAl���c@:{h�A$*�:T~S�F��0\��>��Gn(nX,�z,�{,m;,�ߤ<�u��T2k� <�H�7�
B�I��\���l�N��#o��%��X!
���9ɮ�c�R�'�iuQ�
c
!ʉ�������XйPo)���ߐ[(�#~�:T+Sl�0}g����7����lr{lMn���	i1Z�`�GaTV$� �Ja?�1�D�BQR�F�F����֝�*h�,��?(��xCIG�m1�z��=&v��Wds+��,�� zSRD~T���[��������P����`��Q�� ;�dz�PkJ�Ӛj��6�kXCt�Ƅ���쎩CxjhK�(�Xx!K�	���d��y`1�R��g�	�(
e�
�'{�b	ܪ��S)�n�$2��n�]M�����A���"5�ў��l
��T]�
H�N\ƆT��mC:1d�!h����T�Lbm�)��0�$f"�<�Γ��kjy͚X^�w�$P��_<́Gs��l���,�9��g��~0�(�
d<zr0f��x4́Gs��x4́Gs��x4=�
��n<z��f���b6=ьns���n7=�ls��x�
<:��R,IQFk��:�y��l4U]��i?���H�)������k�Y������+nX;z=06h	/�nx���:����Z�{�n�X;t�%7ܶpJ"�N�:���+V��\�>���%�Z��.�,��xz�\:~��:�%8d8�Kw`�5`�
W�;W*�4w�Wh�^���Z�����Hg��ɍ�+�Z;�—���W�}�R��r)֎^q�K�vձ�O�K���X;~U:HI����7��z�����Rj�*7H���io{á�|�������KP�D�I
�3pT�Q�Π`����`|΋vL��/�Q�x���׎;�=q筧^}���Y��r���g������kY^z)��O~�?���?�a߳l��k^������s~�O��7�]��z�L�.<���e+���5]Xo��h�����2��e�Zw�r⑽�z����.Į�_��	YeK�W���*��.�g�*yF/V�
n�R�o߮��w��w��2�O�}��u���,^z���0*��p�@�d��pe�s�F��֧�C8�k3��S�W�S��������/Z>��s�=ﶋ����>z���_�_�C��,�f9Ku��>]��(����R�R���*Qu��ݱ��?��=���!n�
��!�3\Y�\�wױ��P��Jpn_�S���k��_\��=�������}慿t�ӎ_���W��W���_���Z�>�����O�T�EFA��>��?�X��i�9K����5Ѳ&���OF�hD�Y�y�'W���5��Y.-����z�}��{ʘ��֞Ż_��Gw��tӕuf&���t����U�����_~��={.�}_q顧^����pk�u����W֙��S2q��w��G�nyx��ͻ/��oy��·�~�W�ݻ����s��ş|�h•	�e��f�tL�:�����}{��s�������ǟ�KOٳ��;ws�ZX�'���3S�'a"{�'�4��_��uǯ��o�5�����1�EUL+$�>F�ظt���ʨ�jU��h���.;���w>x����#NJo����_�ήŇ>{nB\�Z�DKQ�{M#��h��'��7�P��?|��ϹP_�_��;/<��s޴X|�yg��PX閬�#6)�Fa���~%����y���)]|}��W�K��E��޽R+�5#;���ڑ��QϺ����x��'?���9���ӬuB�Hh�n�;Ds����{�廖���/\��G����sO_}�y���t���?�ݏ���a�:�V�‹u��oy���]�]���9���>�؛w->�k���W��-y��;L^��w`W ���C��7�xq���6�AY�Q)���?b�S{�+�98��d���Uf4�r�׌��G}��/_���Oo��P�(���Õ�����yx�ȑ���]v�?����y��{Ϗ.�/]B��%$!F��G)��
��%j[�+��������TY���?��H����:�WL7W�;Wh��ds�5�ʄ��+R�]�Ff*ς��{O�݋��9��Z���Ttՙ��z���I����fo�ޱC���.~�s���	9��d��qH$K�����ʞ�DS�Ÿ�j2�ɨ2����C�>���~4�%�E�vYSF�-%�Aw*� ��()��Ī�Mm���O�烋��~��;��I_�d�<hv����z��Wڻ\�y��rU���H�T}���x��v���6�{���jƏՒs	�$PZ�y�?�Z�
�:���Y����~��k�=R���p�N�tA�n�K�ȩu�y���uw����Y~AL���y��9R	W�荲;pOzY{�<�E	� vyX:ZE��
��
GU?�>=|�5<Iv�}R����g:3��+a*m4I�Es�K�Z[v'$������s�z®O�~k�*[U٧ģ�8����ރ�\�ؿFw�t�;���d�����	��
٧�CyIʓ�gӡ���촟���1D���S�0�)__�r���V�&m�v�%4^�����wѝ��l�*�^��@�+\���&�AL-��;ssK����ci���t�"��3��T�41��$�|oy2ޝ鋙	������֚�$A܉k�z��͂G��Y���׶oq��_�K���q�|z5:/Q�Ow��Hx��׶/ؓ�,6��(�v�M�kSٖ��$,м��0	��Ù�.Ῐ�;��H��Y�c脄t���m�h6y�J����n�`Cc49՗᱖��D��~6����5,#�N��Вw6Y��yofG���3#o9�Uxc3ޑ�:?���z�������[�E��5����u��o�ފ��=�Y���HD�-�D9�,4V���f�z��JY/�Ãa�?�2g%b��G9�q����x��^��ޞVس���y$CK��
�<��Ĉ��t�\��yF�wv@���4Z���5w�
��׎n�ܿ���؊loE�d�n9ٞǂ��S#���:����k7C܏��6i\~��1���<�LG�2�� �J
b�����H��3�u��g(����p��������A�z�nI�V
-���R�����)���T�E��I ��@��R�9A��=A7nN��w�D"���jlF��
�rjw�}�?Im� ฿�:�0������W:+1�tL02�3��-]��uXI2�G���Vٳ��K{O����KE�6c�?ZA�t��M�R}�<d�����d�����e_��U{������)Y��������,�RN�œ�#���Zl�[�1`��ky�y�Q���W�Fȩ��L4��Z�:�L4x>̜�����R4��P]��z*7�Ig��R�=iy�y��˥�zjl6�[��H�=;c��cօI�jU
�
�F{��[�8o������2;0$c���PFN5�32n��
�6Yǡ���`%7z~Nx��?+���`����F��0R&���83S30��N�d����H)m��g�H��u�)�	�V\�����Wɭ:Ëc�v�g�):]5¾_��3�/g�D���5g����^�!!I�4�;�
����A��ߖ>?e�iа��KЮ�Rb����X��,Rclq[0����R��S0�zN�(��TVEuDٞ;�]���޶�]{�#���Fm g�I�Lo�Gg+Қ�C�JV�1�yol���Z�����ز�똰�-ǘ֎�K���i��ٰ
N�t�#y�8 �7:sM���&�E��c�B���\��lN��~��6�K(��;X��H��>L!��!;�nv_m�"���)�H(n�������0�}�ǃ��T��v<nF�3w�,�
�5�)��|���@�Q
�/2�Ɏ�Crx(ϙ�
����"�
W� [}����pc&zU$;���qC�{F�����9�n�ĸ�F3��1;C�.6btk��76tB��Xc�P�bH��.9n�Ɔ�~��"&+�؛&���K�qk�e���3V9t�w���II�c��4cX�K
~U���̋ك?8�qT���2E:�ጎ���I����v�6�D���f`QNRr����b�a�ܘ9)�H1����i4�Ï-�94�_�b2�.SJ�x����٭s�����X\	�bF�L�Z��s����f��y�Ŭ\���t0y�Xԧ��&am�,8!���U��KP��goQ�Nc2p[�����Sݚ�K�B��T�MU� ?�<��@�D��Yv��M�L��4g؀3?���mR${>&h�3lt���n����3�	�c�)7��w�a�/"�Юe�hF�!���#��g�K|�2��ԷzX�x>֪1j�(�qN�O���9���a��W�0������n�Ig2Tc޵9��eyo�?)�#��J4F3��)>��=KeĈN@�t���m�����d���X1ؼ��K��*+�9y�Dn'(�i��7M;!�zl5~;��1�
��(�:>����m8-��-8f � O�����FR0[f�_e%�F�pBVG\�V��:�W��kٜW�1�e��9�m%a �t�yCG�����k�]Xe1 0lQ�>6=���4�J�0"s�(�'���"�W����
x�'���D�k�Pt6}��N"l�Y'ͯpM�|�ecdU(�fK�VR_Xo/�"\h4�iVx����/�K�>�q��O����q�-i\Jo��i��>��r@��i�Sv<�S荿�GN�����G/->��]�|j������i��̫':\X�\��B�R���RK��X���T�*��!��;�ƿ��7ɷ<g�yX��E��/?��ٺ���}��6�B �5r�lK��|���O��o��ٿz�{w�����,��ޯ�u'%ti���6]se�s��޹��2X~���*���/��{��W~���O-?�ه?{߮��ݻ�b��Yre �Ț\�m��>����lT��rɕ�����j�F�Uj��w��
�|��o}���˯x�v����7��o�_�yq�k�Bӧ���3sѧ��<]hz��Q��{��ﺿ�x��c~���>?����5᝻�2�w��^��k���㽻�/�:���V���j��Z$��Ъy��=��{�ʛ���߽���щ+��{������.]|y���S��Q��>��S^�E���m�c�(oD�_=u���wY��o]}��%o[cY[��h�'���>S�[e��v���?�O������E{�%޸�{�{���]�{k��-[��Z-�XNW��N*�H(_��]������g^�{���s�R���F�a�d�w�+e�w��ʞ�����UZ?q� S�wo^��w���8�k�P��ܻ��Ӣ]k+�l����%,`�Qv+1B�������D��L�����m���}��Ϗ�`(+*��Uj�[Y_Y�\��Jm�=��8���t��Ft��B��UQ%L�'�%4Փ
Ka���jeo�^@t��ْ<
�-Е�_��ο��,b��]�aT$��QdT���5�3/���=�md~g�rk}��Y�B���l�r�В������]57�N�9ɤ������\
��2���3�Ǫ����|I�]��o��m��:�Rl�E��	6P�c,!�16fna3/�Ȍ]�!u��G�.��-�1���~�|:-�"��/e��N����2{+h#-{�kv��B�Qf�"�7��G�r�����a�^��YOл�u|���~<�]p�����,k3������d�N�� 
9f�RLr+�f͎EG��ln{}�|�d���fse0�q/Sꠙ�7)|���3Z�'��b�h��р7�ʔ呢��fB����<0,�0|֩8�?�zBf�0Y������ ���M�Q��,�SȠ8&��׍�e��e�$�@��Ad3�lO��qc,� ����@f����L"�`���{8�Y;H��ڑT,"6��9��J�\�9�ƌ4��:�2�|�lJᱟ�L	�i�bWo>�x<a���og�eR��V�m�RE$�j�&i�\_��HJL���pw�Y���!d3&C�J��Ӣg�TVH䛆�x�3�����Sw<���e�A��z�m5Ƒ|X-�����qW���뷳`*�c`���|�=|F�X��v����0�f��]eH]i�@�>/��IW�	����ͬ�Pf�^�#�O�cn/��TnH�Oƴ�5�'gS�O���)�i�kp
`�I�]ɝ3�כx��x�J�w�`�*y�VG��AiG�0��3�-J���ic�l��'t��&W����4J� K�@�iv0)j�1y{k�D�`�:Íd�1G؎-|��`��TbFӲk0�*�6&X�Aw+$(��"�c����i@,g�<#ST�
cX�c�E[�B�$��(��%�6.Pz�Wz��JF�4U�2�ꡳ��#���پ��F�c��N�ȵ����|�G2��1V�ʼa
�\A7���f+v�iY�q�T�\��C�kMڏ�	�.I�f��CJ0َ��~��z�Z���@-{�J:&���Øن��9b���6LM�1�o�M�A���
��*�0������I^�莣>�tD��#;�vw�nu�-엫��*�~�u��٢�n�у*q	�)�5��[nP��r��G�[��8���cG��_�L��`�{��L��>��rM�Ltq_ʱc�d�Ħm��}����k"�]��eSOE/�/�FM_C�
S��ma��������P
�Q󟞋�
bTEyXX�s�	�1iJ�j�+�l+ٯ��
�.��n�ԒY��5u
d��Ei��V6h��!c�⋉I*7d�\t���Gk=����ׁc�k��;_��I==W��ab������!���o�x��C�Oҥ*
l�m)ߓ��0Ƣ�U8m�����yh�71��ajf���_����ZXc��z
o�$��;zMm-5}�I[xS�'�>ri��dN$y�ƌ߱s�#��im�O�y�][�%#k%*?29w�ZW.2h��m���Zxå�زZ�E� ��9��Y�Gj��ֺ!�3�YX�֘��Y��kg��	�轉:�[���p�J�X׆Aضm�L^	�Ԛ���g���}���]Q�X��Ӻ1���!L�^.�O6M+�b�"��I
(G�צc��B`֝�J�^eٱ`�}�XS�¤�2��Vn��U	5ն1zQ?$PK�
���g~�L+�>�t'S�x�kYd�9�;���m;k�N49�D
�V�I�hS�ø�dVsp�����cR����Z��X� F��Yц+��l�0
��%��a��^��Mפ�NM��1�9O5���;�\����O��rQWc��V�j�ڮ�oe]�#�`��7V��`Ev~7L��?..�7-7e���y���Λc'a.�d��fΗ1U�v�<ԗ;sıq����@ۿ�R��z Vv��$J�?��l����8j`�>%#S��P�cؙl���[��`.ES���G']blL�d@pT�rZ��i��i���X:�6�B�#A�;�O<��"�J'��1C1���l���caݣ�~��i;Ҋ��
�R�^����JO�endstream
endobj
48 0 obj
94837
endobj
62 0 obj
<</Length 63 0 R/Filter /FlateDecode>>
stream
x��Y��9��~W�+��<����A�- �*	�.�G)��f�'�!U��rR ��kt����F�<�Ӈ����o�������s��i��&_9��̏�G�-<������3�Q`-V���/����ۀF���H����?�ۇ{�1���?Bm��ӣ$�)�Q�$�ޟ��N��iJ��3��>K�����m�e%{��V�>����k,b���^�%���߿�J��Eq��o���`QSz��gɁEk��J(�����n�	+���sz��d��B;#�X�,RhO����|��3,B���m�Y�XX-�찭Kް�����}�o%_c�[���,ٱ�ջg�{-�|�\�3X��;X�0v�>V��|�����/�8v��c����9o.<[�%�N�4x}d7V"��������u���Ƈ=���?V���X�����ʠ4-���g�Q+��N�&���Cj��YZ����e��s7��v����7���
�J+�y9[��[���!���CGɉ��?����%ν�c��d7�+�y)d�%��H�wY���A�)��(����~�\�nlK����,p5?�Ѓ6��:$��=���a�{-�����b{A)r͏6~��L�t��v����U'=�*�~�|}\}�׍���`�R����SWAU�:��di�†N���R���ȡ��I�Ut-��!`���PRn�����%z����S�_���I�;�z}��I�霖xQ-��P`Zvc:u��l����l��D�}N��8F�du����G�ԒX2��˼n�.F��g�E)�
X#�3��£�c���c���x���{aɘY���78����'8�dͣ��y�>7x}՜��dz���=��G�F�,8
#!����8�d�G�%����	�x�y�Aq�{����ǡ��Z;��-积�cS����G�l��6s����x���x����GD����ũG�5�,��W,ٚ�i��N��s�u-'�3(i�,z��eń�
^?�/��V�sIl��Q2i��1���QK,_�AQe0�{d���4�ۼ�h�!�r�l���9���6�m��nW��2��%c��nK�ݭ�B9GJ����A!.X���8O"�:�(�_{�5�\n0���%��Ì�8t��X���L0<�..�y��af�/&<�8
����V��	�v�(�
�J�� pr��l�x���Mp<Gǧ��'��	�Cf�D�=�1�yC8��S���‚X�
��8��x;:�:��x��2<��T�[W�>GS�ۀ�m�CSEk�^�3D�q(�%�.�U��7�t;;��ة�ʒѽ��P�A-�jpJ��hZ�k鎦�����9�	��.���^���j*e�;�L�5m���f�ñ�a���XdEq!�¡.4vᦝ���K
���x�a3;He��R)��>�)W�)̙���(�A{,���.�o��q�������Zw��?�$�\��X�7�LYt9Yt�v��7�?n4�5�fL}��(�2wt4��al��VJ�`�>9]�>؊b9���Bz��]�SE�����,���a�$�_Z#ƫ���)���P
0ռO=`��ܠ��?7p�
e,�*�Gw�.���o� � V���Þ�Pt��m-�>qC��]Ն|�C�c�
��a�G��G3ڢ$�y��D9z����>�Ь����g�P�V+?��4���p���"]漩Vf���7U�R&�W���]�m���df��2=nM�/��[N�H��gI����c��"�cۮȨc�=p�
�u�`���|B
RO�!�i0�9=ߙ����ß�}$84����C9�z˒�+�wxp���"0�p~Gx��p}G=��\�����w�;�m�Y����6
�P}3��j�,�`��G1�0z�2eq�<cN��co��(Ģ�[)�QK�Z!5�c��\��C���sD8��q[%�0�۪Ū��9�6�8�
��hݩ(\���*��\7.T�_��u�쐬'w/\��p]��m_�������-�O�pCK���e�m,�н�v=��Ǡ�a�f�e9|%�)�`Х��bO��UV{���u����	��ι����YL������y���:�Vt��*=�9�rQ
�w��X.zQ���^'9�.d��
	p���@y�T����s�-�P�����Y˱���������I�%�-�Xڿ+���\�J�x�O;h,���D�u:
�2�&��e����:�Q�7��W��?��8��8z�����I�����\ok�L
��S�U�
�Y{���s��-T�)�Mk��#Z`N�#�}zu�)gv�Q�GE#ר�T��(��f�@�mJ�`K?��t��K�~W�oͻ\�w��o���q�\��~������	W�u�H̥�ܺ�����2��₮��'�c�Z,Ǔ�-'E�g�s������gC6�.���?>p)ew�A�"�g�f��E�*���j��mE�jWC�R�,��K]#��^�\�x�|�V��+ϕ�@�c�˽� �m�����s哿V�^+�}9W>�+_ݽ�n+8^p9Zl'~�{��p>	��dp>��E��4���F��/���:��������<L��/A��+ד��"B\�d,���KΉcO�
��Q[�e����!p�-�*�;a]�&1,Z��	{iP����w�EY"{c����@��Fh����ك}V��~��H_=h4��7�@���T�=�%��$�kpl�@X���d�;�n��z��Dʩ["���b)�bKJZd�T�#2��	�3�.T�Qbc�;u�Z� �E�Ǝ+����u,Mf�X�r4�"�C��k�
N����m]�(t<�֡��d�t���z,t�p��*Ķt��G�RI���qT�-y@�HH!��V�6N�=��iRRuԱ�Z��G��Ɛ�ʀ��Y%���4�͚�rZ� b9���&����H
9\�8n(��1�*�h1�h�Ŗ]����Q�)��$%��sk����M/_��#��g�*���Xӈ.1,����F��]S>'�q ��~ΐy���$��9A�������"b���2��{�zv�a-̱+�N�vU�]��˶�TR��[��\%���)v4����I�}��`QC��ߩi�hK�S�q�wܧ[�Տ��\8a1�6/y�	ˑ�"��*	�*���L�K,�S�E��nn�pƄ
��3����
:Ԑ>�=EjGn����D$5a'����MƸ�1g�0Ԣ�H�en��9+:V���9k��,��m&��Hz�9i��1�)~朌�v�1I��)��L��"�j4XL� �/@���/	���m���q��!W�#��9lx����qֳ?�1�9ĉ��P
�|��]EM��~O�*ی�ԒV�Cs
���M�D�gTj�٩JJ��d��~x�Mj�e�s:
?�N�"�8_�3�LY�-�	-*��'n�R��v~|�&�mFl������6]At�.��Ȱ�<�\���Ğ�8�a]	�9�0(¶���_�z��{�u�X�P����7;|;F�u-�.w�hA�EԪ+T��/C�5^���P�̓6�G�F�Z�d��d(W�sa�w��WI`̺��~�f(h�%A���`���#{��Ʒ�l���Dž���l��Z��JG~5i���`pUNU�m�re����m����q�A[ ��7�q�hsX��%OPD5��`(:vj��mZ��\lT`�c�+����6��0̆���8���'E.�(&�54�,L2b����uo+~~Q�(��}@�
ELZ�u�ؗ���a�`���()�����fQlA��`�5G�� Pu-Eo)�k���,��8���so��#�"V]��:qt؋��륁��4n<�c��^��4#�r)BG�%*Iw�pE�Oud}j�F#�0bG�y�#��s���s���O��5[�,�_$1	<���2O�Ų늡h�ʌ��<�n��͊�yx�Uv�A=��Mp<G��JP3�%��j�	\*ᚈ���5DZ}"K�l�1�#,��D�EW���(�ё��b6��%0Ώ��b�O�7�i�R�i���q�F�5U�
�.<G�^����ܢ�����Unp
6�jg����x�]�	���q���:���@AR%o�E�<L#;-��l%M1�Ȱ:��
�:�uM�(����,�
;���Yt�^6e4n��C�k1�R#���<�j8ɥ�[�hP�H�(�����|9��wg�e[�h�Wl�+��	�[�T�U���-�5b!�����ə��^Hm����6cQ����<g/۾����l�$b��xń�D,���D͍̒��Zb�3��†�XH�[ʫ�V�	��%��m�T~��b��;��5S��gI*D^=�'��ܠ�Jo��C�jd@�{�f�b��}C�ɾ�L
!(�R
i�(ڵ†uް���f�8�,f�E����L�v\���\%*�]��0�^��>p���&n�c�ز��l�l
2f)�$f�+2�a뚹��7o(��`�M_J����M�No-b3
�h{�d"~^�tz��5{�fψ�y�N̨!��
���t��'f��	3[�Ĥ��l��'j�c�k$EM4ȅW��ۄ��'C�&M/�h�MD-�~�[���M�������5 PD@�(�S�
E�+p��U��`À�N�wV�u�=q����d�FJĭ���R`#\�M��i�	柖D+���-������m]�} V1�^�lL`YP�Ɉ��ev	YJ����
�	�jRc��
�#AĉK#�H�85��:��u���
G�AU���_�1�;6yT���F�� ���Y	v�c�D������i�D��+*����7���P�f�0C|�N������Z��S6�l脕����hj{/@m��Q.�l+ǀ�5\Q�ke�7�VJ(���BY!�O<7�r4:�/�H��W+*z4)'<�=. �jt�uiI��\�XJ�d2�F08��{��f��l�BԜ�V����'���
7�^[6ܢ�4�m��8�&/�f/��A8du�
n��{�
C ���(
�ĭ�H��ټU�I���8�������8z�e�Sk��"%�1��2qLVBm�*p���{n�H���j�:���aɚwT�Jܪ�lk[m�2֖�Cx���c����p[#�Vm���4h�W��w�vY�y�6O	�6�y�u}ͩ�I6��p,m�K�Z�v2�`5��y��c�i'J,���	'�6}{'Dͭ��Z���M���W�f]W�W��*1�]���Z��[���6{1��H�� �p�(p2���"/��v�<:��ۤe�$9��am�a��X�&��0Lq
��:�c4�u�8��?�M�l��.�����8����9
��D�
^;G#H` 	7���x%,�7]�2���`�hFc�r\V�Z�@�`i�0��`kI	�pij�((�D�1�;�6W͆��檙��Ǝ��,�{3��"b�̄�=1����(F��t�k@����Dq�(�������\��g�Y����&â�T&n6}�m�
p��m��m�Ϗ*}��V$��.�����h����`{0cڢM[e�h�n�j~p��u���#��J�f+��pK��6mjˏ�=l��hd}����I"bk�BĚ�0��ث�e�迮G3
'�"��1b
6U��y�1utPx3����2��ƭ�j��TKl�4��3,Z��h��o�F�a�A��}��q�\��m@`Xl�#V3�D`�m��m?gk�*Qt6���{��
[޽��F
ču�����N6��6�QR
�h%��Ft�ͅƼ�m��e��b��	��+%�1�t�F:L���1AK�
���ؑ;�Q����U�mR=�3��@0	y�φ�����++�m��-4��F͜�z�8���a0�u؀�0t���Y��"�m�����^\̾p��O4�Sۣ7C1�:��Ձ���I��
'���hӘ'�6��8�4�����8����
8�z���!%��)�2O��-�C�!�"Q������̎1���� �:�����yb$R�^�
S(p&\��h���83��j��9w<�8�ͯ�dž,4�%6��E`gpR�٬V#�b#�9�|�Ō
G�D
�Y��<Q\��C�\� 4�1�	��7eۋ�9]��MKl�f�J�(O4L,���
Q\#&�Xl/��8eC1a�����m�f'ljD�y:�qN���D���SZ��U��d[+V�HsCO����9����a��sG�!cڠ���ƃ��["�{o�q8z�Q�66�3��l3z� x���y6�lh�cOp���jD\W�`��䃛1
�"$������\�ӈc=����x�-��^��-�KR��n����n��P���j�n̔y��U���Fl��Bc���m��
(�F�ܟEC�{e.��*�J�)�^���q��0R�L�'\��w<����[\�G�qˆ�zS����
�i*B$�	�ɾ3M&��:qd��x`�lp\���k�go�����čU/��'���zv'0�6e��H���E�@���1�vQ�Ea~�c��z����k��e���I�2�y�4��"k�{Q'�8�]��@�8���R�9�-�I�2��JRM��4�B���w�+0��_��-�w	�$݆
���1��w�$��{���z�D]�KH=� �c��x�_�F����kt&2�垅7������㗏Y�(ܭ
�p�Q��k_�_��]�EZ��l$m�:��V��O��x����^�������/8�8����6�ĝ}2����H*q����GD�0�N�ǘn�D�p�E�i���hR{�h�C�!����
C<1�n��Լ0d	cXч�Yr@1J�h��82�\}�>��>�����Oxσcc�����YR�c��q��Wq���t����GD��X��x��G�hk�>�Fs�	�g¡>N<ڡ�jou��Z%���yǩ�M�	���Y���`3I�d�O��G=T�ͯ�^�d�1]���a˝�%�AZ-�H��}Γ�t���mx�s��^��.��J+QT�~�e:-��gU{g
/@� ��t�q��{{}�#J��}�d�1��pd�5��K�(��hK7wB�����=�f��G��D�������u&��m諞}���ģ�����q���%9�8��Á.�=�[���Z�6^��f�t&�x�S�\��>�?�$�'��<a$��S�E�m�[h��q�]�N�q��NQ}����G�Ԅ0�Xkf���W?���$���&�����)�o<�R���T�#�hH�*ؕnLu�'�(�����h�ʒ��7�/�h��뫾L��¯��*�gz���*�O����a�̔����]2O��V���{�ҧ���tb��C'|�|��׷���p�[�{���W�����>����z�uq��¯?56m�K��Kݣ�&�k*�P᪩pȽ�ӭ�3o�a���^8���	���j:T^k���'��$"}�6>���I|tTE��]�����c}�<���&h��~vޖ��R
n[}c��]�"���m#A-�B���T�M��V��T���O-pKO�Uޢ?E��/[�v�z�μ����)�����B�l��doĮ�Y�J�-Livx�+QWOP����.s�5�LU�d�.�gS}ЫO�
>5c�����ٟ�ж�[j��Q���ƪT�C1%6"/l'�®Q�E���e0^i	h3��߅®��ae����r�Q9�z�%�����M4d��a���.iT��
|�ꍣ䀝G@ҁ�1u{GPFf,�Dn�Q�#�a�b+6��P#�ta�Xf}���&��������>/4��'���tc�ݷ�g�I�[��-RG��s�齪�ʳL|��38/�8um�5Y@�����z�ސ/sz-�/�tzz��p.Е=a��n�az���,pG�ȸ��Ǎ���ޠ��#~���ԟU�5=6Cg��e��,�x<P���6�#���8���t�}D����S��?��zn�C�O�e�+�v́��h#0�^�>o<�{���н�=Nؠ���_���k��<ÄA(��R��6�XQ�T<R۾s�`�ޠ�瞶��$؃ݫ"�쉐�N��#����c�%x��gI�8�'\n=��R�m�y>.���Z��$�����GA�t�o_�y�i�'��S���Ǩ��ӕQϧ
�y�}�)RqPm�L�aח�GJ�cQ�M�l�&����Y�������:�B�NZh&�v[V��߲H�l��9���3i��6�� �=���ZlDU�$MK (N�p}�x���
8�#2׆MSmʚ; 2����(�|�n+�0��B����p�bg�wg�p��6"���Ѳ�8�\xŰ3�j���l�A�QD�GŢ����������ʼQ��3Ņ�L�'M�����l�As[]^H������),�@�I/��).�[�������yr�����>o<vN{����j��MR-I�W�����zw��;�uf�C�ܣq�ؙ�P>��a��0R#BGLe�G�XC���rGXn7j8��4"��	ŬЌ��B��&J2��f��G]x����zk-���3e�j�K��"���,A��fLD	˪��c�(��@'8�x��E�-�m��,,����f(�Z�%Y��w��Io���&i�k�}�_u�wo��{���fJ�������sy��s{�ɠ�6�a�G��bx�����-H��Etъ�D(O1s��a��<KNJ��3��kߞ1O<v�x����Gd���v��Y��(��U~y�&�ȸ|MN����%����;�e΂�bN�fh8��H��-�沫�������;������sz!����G|iI�P�E{-6#�'X�O��煇f��c}��y��znS��X��0��)�)�*�;V7�W�Oͫ�b~�R�5�޺ko��Ϻ+Ny����x#O�bsh͒��&��.|�TK,�CF��S��EK4��59+�������H�H�h?�� 㥿��&5'��t���C���ˀ�ԢaPޒ�:P��i*���t������TX���ƫ���δ������y��Aa�Hh (���mB>V�Ϻ�]�\�?��O�^����d���3o������H��9�.��dM� %��~���y>N����l���b�Y�1�=���	�u�j�Œ%��3�މC��Zhj��W�e)�M}�T�R�R���!�X�\���.�Q�*��u�\��=��G|���
Y�<��'�ԭF��ޞof�%	-�e�)ܬE���"jX�6��e��;؍��y!W

��aPp+QM<� �N�H�,�����k��B_D�ԁ��XR '܀��b%J>c�����J�u�J�Ǫ�����Iq�X�y\Q�3ǫ�gF-q�VǦ�ۺ�w�'^Jx��“���_�^r'a�_\�K�L�Q�����+�C�ȍ�.c���ebR��˘�V�cF��h��7Mf%9��ݦk�"��26�*A�:?sy ����;�������'�$�$;�!�y�ЮUU$y(�D�w�5[�e�q����zdO�v�Q�e>]+��t;�����}p��BXs6�#�;[c10��d��~���f�Wv=i+_p2�2b�7r��&�ƾj�3}v��]#�m�(����9ɷ�B%rm��>���ϒ����*��t�Y�LW%\.��[�M��Q+�w�V5�`��7��v��p%��F8�d3�Ү��(I�xC^�J�m���j�[�x�o7�IK#�kĪQS��2��F�����v���$�h��xU9���x+H��2Q�o2�uF�ԛL��U#<�2�54h�E����D��1����}~M�LXv�m����H"i�/��2���yQ�2�=���+��sR��˦[IfJ�iW�W��l��G3Ѻ�R�)�J࿞.���3�<�m�^�ވ~��R�����=/%</Q
B��z|��mFә����r�'�oРl�D�,�Df�M��:3��M��k���g:@�F��sK���|��|��|�a,��x�����r8�[�d��r8�[���FM傗�>�aK�M9l�ō����\���3���a��%��ber8xS
!����;�-��Η�no28�28���&�������|M{�&��%��ѯ]�5�5��K��-��(�#�יn<�I %̙>
R�s�q�X?I�[�hE"�t'KI'S&N������� I�oP�jS��i�[D3{�f��.��݄���6ՠڣ�p��]9j�)N�/�i���nO|�R�O8^<��>.�~���#��#��#��h�ho<��<�����M�KЛ�^.x	��$��$L������>����&L]������rޘ�#Lʿ���'������H7�Xb~2�7>1�|2]}�yo�zx��O�M��n�b��nb�Nы|%�gi&eӿu>����,��
���z��-�t֗�4�@U�%^f�d�ь���ax�4�Ǔ�<t�l��2s�/i*��^����7<lb1�,L�m���e�])H%�ă���7��ȯ�Mh|<���e�o2�҂����DNT��w�
<���N���9���.u%]�J�Օes����o6G;m�v�S]�&�^cSW�����b&|�८�������J#8�a�+s��60ngꊹ��Rn�����7�5��[�48����.��\��X���]c��5�x{
�{��7��_K����Mc)�14h,̧��&�ݘ�1��}M�Z�P��$i�<Y���.4i�IҜK����u�5��%���a\x�m�����/'��0ف�Lv���E�D\�D}�����9Ar㾐@'�VH>w?�����9{Z[�[�oc��_�f����e��3��u\��|��tV,��f�L_����ҙ���:�,���y�F���ڙΊ�;ެ��gx�e���ڡ��{EӰ�`��<���g��J�9s���iϒ�C�-ꢚpN��s�$�3�s��¹��#7�d]#;PF!9	�f-�_V�9O&T�D�x�$y}��D�8�1|���$d��}b��'�kT�#h)��H�R"��ܕ�T����1?՘����qZ��8#;&������@x����T�YDf�T��C3*��9d���e�A�}�][8S|hZ4���W�)�� �hF��|��s��=����t�����ۋ8j�%{�F7��zY2��~�^~�^�)�
��l:��p���K�lf�~�%�� �4�v�j����u����(�<>��5���x(p�W����ң�>Ş����vr�y�g�-����k�P�`�D�O�S{w������v�J�.A����A����M�rc� h4r��m,�:��������כ���]�O��o�.�omu#h#y#��F���I�I���5�E�卤�I�]$��H���t�I���t~;4
����o$O��סi�MS�K	H�lY�+HzF�YH�}�1�$j�fq��ϖ��ζ�"v���+�q-��3U@CW���`��F}�o*���j��{�~���<}�?�	hr$�l9�-�w�S8�!���dĘ�h�.`xM�X!�������Z(X@{��|���k;�'m���?,m�y8�	/h!�Cښdž�I����e��j�UF{����A��s|o,�m���0“>��4i��,���t�3����UE��	+�ⴇ�i�*�3`�d�4�b�0Yb_M�?�S��k����ݔ��Y����34��SW�=3�!!�m40���ОH�!1�C�4,O�J�S���B��fV�i|@Y��3ch���*�<|�ޝ�e>K�.�(�.�|���ov���@{hϾفV������ѳ�L�<{���e�lܱ���O��L���<�����d�t�g�q͏�^ {������2U��ɡL�����JfLMe=Ԡ��۸�4�vnן��C��0����m���j��iO)�sB�}�`/��F��0���aI��l�d[O�XO��޷��w������u�7q�o�@�����&'=ģ���s�K N�M:�7�t�L�8�7S N�M��7���L�8���Ri��o�鿙�����N-M�7qXnq���ay��M�[�-���hT�/�M��7&�yo���\>�^��Hs�P�(����ʩ���KbA��O��㜄��Լ�(:o�c{�T�$�_�9FOIh���O��)
ۛ(�(�d� �9.Y8���㒅��~��?����NC�o�p� *[�S����吃�����[�#�oB��B�v�q�q
�r	�v
�<V����QW�iy^�8��n�!٫vF{oeN�`3:wwN�
�	�
�Q)*aRA���3�lb�����C/ȞI�C�	�Y�;2Zc�ۺq2�eN8��?ê~�`1/�Շ~�&�R�$�yhn���� :�|��fk��cs�&q�j���P�撦c'@��ʮ���6�F�¬�fC��r|=�JI��H]F��@��fR�.6�M`��D�i���@�Xh6u4!�����z����];	�ك�j����}�/$X�jb����)�����T�K"ayF%2F T
M]jo����"�F�3}T��[*�!�
�����ɳ�z�Q��[�a>��f>��7�@x�.��FԤ
����41Ϸ[�/�u��H���{#�9;F͍�8@��VT���0h ��u�l9=4ι�n��[o��
1x;ys��Ua��错�������Mf�]f�Kd�7��.��/���a�O�����k�����y��Gu�`�J��)��wW��3!�pa�����Kwe�U9�ݽ	�Pm������s�C2淵k>c�Z@B���?`,]�g6mu騭FW����MLZ�\<�n�B������a/з2������s�H��]k `�Gs��
uo}7�dx�:%A���S�RQPO�_�)���u�2nv���ev�%�
�N�sх��K�;dG�z�wF8l6�!�y7Xn�K(%�l��3���D��gH6����hR(�1�	O�I
�M����!K�~��SL�3��m ��kc:;�_5.�+��@���$�c1X�
>ϦUvS��.)����ɓM�B3U���O���B/!k��NƠ�*�`���̂���0�	oi���'�G�h`��%xK6M2�B�_���ǀO���s�f1h8�b��������͛�?{`��@&d�Ŀ+@erRW:�	��#��屰�������d`�|E�I��4K#⎩nv�5Q��#�iU�Z0�<�I��y��Sy#�n�f���3��6�3o�I{��g�Dc�Q䚕{��5�u���=��{<��c��"�g�����9=�.�� Z��c��/I*W�G�`�y;�;��g�.��P��h�iPi���t��f�KQH�N%p��oe�|��j"̠o
��aMM�FV���ɕGp7Gx3�<�
~�Q���ϰOsS�[�C�Y��s��˼Q"R�B��gߥx1emyI������qW�Z�
O+�"�����;�"��1%8�+�������2u�2���MPl�s��[��^<��X��2	�2o�=�~���	W��L�5��f�FV��0�j�,�
��
��D����M��ۯ}^�)?��cW�N]�S��w�Տ�(��:��4��Hp���T�Fؙ�]L]|4	ǧ�m�=6-b��6���m��6��6���5��΄iI�C�֤~:��������=Kw����@ت�d?/�ۥ�l�IF�H�DӼj"�uvJ$�5�E3��W�;�%"�C����-fWN%_�Y'��_�P�*�ק��0*+���6.���2��ؤ;
�����u��n9�;e�)�ۛl��Rɾ]t�)�Y�dT�6^13����Z��u絴R|g�MS�ߡsod�<<z��������/�q���P.{�nԻe��Ƞ ��q��&6}&j:�󊱧ߔ��!-��$��OI�:M��x��|�n��4R	.U�Ż���r�y���:��_���xp���w�g��ϿA5>��D=�+ݸ5���3Kxp���3�'��{`�j��5p�b�~�'I��9)�NO������~;�����o�L3	~��'Rgu�Hx�7*�nc�&ۗ��B�<�
�ox:r��?̈����A��J�\;�6��N��x�<]e&<��W��*�T��|�q�h�&�)�r��K}(on?��l��`�m����ש?O,�%qi�'��M|tc$�Ш�+V�:g����#����*�;�vHa<�Q?�<[�Ipj��fl<[�G���L��QbD�&:n�F{F�� �Rw��q���D	���=�6�C�J�LO
�v�'׶�|�I_|��l�ܔ����t��+U|��݋��Y+��*v�Ձ�	�����L0{��"�pEU�fu��\�9_\1T��Tu�1���4��f����qN���3)�d��}�M-n;�{��6�7��طTt3�)؋�S,9��\jX�>C�7��6Jc�a�[j�$�^��Ů�HQ�3����.{:�aGx
M�ǗMO:��yM�0r� ��J�Y��n�nЮ.�=�z����v���Ow1O8���n�)\p�[�F�'\f(���l���J�34a�=�<̑Hy�.�G�k�j��ͷh^h|�]X@����K�J��f��T.T��(9,>XTE�z^� ���b,����u��'���5��F��*7�����`�إ�]��g-��[�mD;�Ok^{��qj>���6�3��<�h|�F\�=?6ux�ZU��
@�S�#��(��}�WU�����h�\�Pts�� yUg�7�'Z�@�@���7��n޲_�y{ъGZ�'���·�F�9s6�����yʶ���[�aw��O�󁚔�R�\I���j8Ni�Q�ߴ��ь�-�:���<��2�
+�w\��ob%Q��Z��1����=�޿���!��`��ա/�;��9���C)e��i=��&��&�hSR�)됹ȦU���N�U����ϐ��AA�� /��Z6n�fT�Ɲ;�Gf.v�E��(�z+v�t%P��K�Y�_`9TD��p=a������ELg�������
�S�=}�}f�
u�h��XS�$�P�vo
�>�c{ZLã�w����S��i�l?z>��f�}��S !��	����3i�-I��6X2��戮���J�Y��Ƅ��Qf�Ǹ�ݩ�_�ba����z,����SsrzO�A�	�:��
�s�� �й��s�R%��-�h�'.w󥹹ԙf�d&Ki��
���b�]�j������ʡ`
�	���g��S�xצ~XMVq�l��qe��Z`;Sn�/nk�I�f!W��b8�{�u�n}�Ez�_+�.�VR:=�ջ�Ōa1'�m;S{��76���7�&跔o�՜���p.�>�{�m��%���	J���Ȉ��ؒnsG&�_`?�^�t� ��+HDSkǧF�B��5.��0^Ba�sO�fwP�C�Oxb��0Y�l���5�/ڜֹg���n�X\f;�2�Vt��b}�YP���T�l��BqT�ŵ�X�Gݓ�C�+=�4�f\:�'�:��iʈY�a��A�k=�Q�n1O�ޓ#��Y�~žQc_�ό�$����&�N6ݩ���%l���]z�q�ͳX�v�y؏DYa'3�tb�v�0�^�Wi�\e���?��ɲV�a�-
�FN�(+�dniR�_��󬶝D�~E�Z�~J|��a��dl0鱾���wΘ���THo8n{�P��P���y�=OL��tvƲa�'�x���}��4�.����資r�Ť+jbWl�&+1����kM�������������ZtΪ]�/d�����o��9W��*�t���?�yQg���<����n̪Ѿp~�!��l�Л��J
C��;�*��4��rǝ݀S���v��s��h�m}s�)	6q5�;R���;ؖ|����PL�t���2��_�"��4gSZ8���f�
�o���AV���
�;f2��#�s����p6�3^��������������Σ���_��������M*��э��&��h
��d"��I�^����
��Jo"�D��h!����2"�!��z����_�]D�0w���ٓA�u�W�d�`%�f&"��*�7@����oQ��~�L��Ӿ��߿���W� u���>n����[���Az\�W� ��r�J��>H����L�Ʈ�N���)� j)i��XR�&�HNJ��OJ���V�0J��!�9P�}
~(OEj�l_�ɹ.�p�ƺ&��X�I�����I�?|�����*�f���W;'m����'~]?(q���l_T�p�=�s��5g�p�Yh眕{��5g횳�6g$���,�F+�3g�EE�K��k���$
��6b�:��m�͍�)��6[��;S��o3Ĩ��)�86�!=ؔuX�M�Mm�`ԫ�,ڔh���m�ꭅ�IY܉���r�hM����2�b�h��5��n���>
>������zi	��W�Z�.�V�����lv�͠5r5y�n6�������G55T�k����Ԣ+��2��=%%ٳD�O�bpT�8�� E��*X����d+��k��!���[�
&�7�5v��j��6���y0���AD|��w�4��*-V�V�K%=$�U��(��/�˂ϻ�4��F����*fb�oU0�zK���
�q:L�įw�H�Y�^���]�C""��ON�o<(WH�Q�Ѫ��+o��u;�}X�tڝl$�|�D�Ӭ��a�sC`W-�^�h~1���MfG���73X�I�emd�F|�7��w�v,�����r�44�
n�c�hh+�D���[����bu�v���pl�<�v�c�uN*���%�s���9��x�+2wo��^k
�@
�<��i��q+Q�l��F�Xf��E����������ԒUR�x�\��,�D��(b�[Keu)p�>r�޻�C�}��%���׹-Q3��0���S�(�W.�{����G<p��X�us5ǣ�(�92�hhf�]*a��%l���=�����z�`���凸�/f�˅A�R��4f_5l�:�E#w~�FPUw
��~��	2�x��'� ����؞�D

�!ʬ,�W�
S?ѵ�28���"��Q�I�T��['���)�kF��A���u�{��cv)p
���_x����i�L��E2�P��S���W]P
��az�'5�<.,v��W��x�x�'�U�;C���1]ˬ�䂔�����GA�O��g�k}��{���^���(�%1%H;uh)DŽtϸ>:K|�#|�!�IJ"�H����O"��4�z�G�ӈ��`�_Mj�pK�#�%�F�����}
���b?��;{}�~Br��Zd�e.�Cl\ZS�_5��b��8��|�)pʏ�9����Y�Fd��%b�y/O� S���\�"��%���{-q�1��U��n<�`�����=��Y�;1x��{�ʞ �����'e�Nf��,y5��pا�����v������W�P#<�(�+`1�^��1K|K��3�H�c�2h���s3���>���~Z�>�$p��1ɼ�6K|˸�����t�6����8)i����*��+��%l�7�J@b:$�z�l�H�0����$~g�W�g.4N���:{���Y��d�T��X��-�C7�D:�ٺ(�Y������
�S�Hoy��Z%��7��uVP-�8hq)�tf�h6�z��[٣��oX����q�Gg��j��U�J��W�[7C@�quQY�ه��qaq�6gg��{@v�*C�X"�;�H퐟м��@J����	���7����[4爻�
�	�7�u��,9�	?X�ߔ�]O�tkjҿ~�b�%ԭ'|+�,����z�7�j�zo2�L��(�`�өh�i�|�%"%v8��R���c�
�����L�x��e#p��SQ�&��lpk%�<8�Dž�J��^���e���==6��s�G'n�D�S�K����8���}�^&��(A���=T���m?�̝GɁbu�}�H�v������5A]�Ӈ���z:L��z[b�UK>ϒ�f���n4����0�5Ѩ�*��O����t��%�gIn�>����ئd]��&�F�A�S{ϻ�
��]eBM�zՒG��|��?n<M���q�H��'h�h�x�a�4PP-H�^�,��K���������^�A0KZ�
�'ϖ'D���Q}�Q�̰$[@r䍅k�>�l���./,��Ŧd�8M�s�ʹ���8��`�(�<KB�X5���ǽ��}_��d9����׶��p	�j��Yw�f�_�4z����H}?�F]�ju�Bw��N捒ϳĵ�V7_sF�F�͞`Iʗv�0{���N,(�<K�����G~%]���X0s��J�O��ԩ�SH���~Lb>y�}�WRZc��9�ԧKT��P��7���(F��6;���F�kM�Q��F4u���J��F��a:b�QL�F1����8��3S��޿T�Q=�m�a~������=.p�'k�,�� ���|�p��Y�<u�3���m��y���!3C]�l�!c�!�d��+Q�%��Y�t/��i(���B��?g��ٹ/-�����c�׿���軮��Н�X��y��j�4���R2༧V�F���i%6��r�_{���r�~��¹ڹڽ��
M@��W�o�d��q7�a4 �(
�43�V�o
�(�]î�L�Q��0�4����R�/٩��K¾D�8�W;�JQ��O��J��fZ؍63_��UVk����.��p0�"s1U�A5]�
�4>�{*�7I�A���o��6׋��v�wC��ɋ�/-zR�b�Ȣ��,�ڭ���r�A+�4��>�Ԓo������=�,�kT4F�XC��z E�u�Ң���i�9Hױ�=����\���5;9���.{�X3yo�X���E)t�J�@ta�65�z��*/�}��T׮�!�;�����V��GE���ۯH}D�N/R�B�S� ��%	O}�
!��@R�Y��Jo�ӳ]$�ۂ�~l��l
�F;|�5�������1 � }��x�����{�G0�ű�g9��~s�;8��D���)�2I5�����D�ʢ��->��I��fl�.��=r1�\*�T�ꬅ�n���!9z`(C�*zJ��������Z0��7��K`�қXH�n��\��G��%���=2�U^"�3V�l�R9����G����Ȝg�LF��d.m�hp����w��z�S'�%��
�_������8���
R|��%���^�/���ٿ��K�^����Y�{���e��_��Q�:Gc�C�4k\M�@WSPaIl��A���Hf�b�S9��:���2�zR�59�rt
��Wc1!a��F�ny�n�8*S�I�dbk�:��#�s�˫�l*���,W��"⥳���I���<��(�LJ��Q�o�	��^�/�_��ت���S)��M�U�`H��U�v7�Ì������X]�֔�
�1^G�M�\�:ezeA����kl���e�z��Ls����2v^�ISY#�>)s���&���<�=���!�~�p���}�{��w$�oY��N��+���Qw�>���<���P`����� �N��v�܌��lҲbJ�Se
��,�����}�z����ω�6i�t�d�a�L�3�Y�=��F�.���xCSK4��G���jԩӯk�U(�_�a�w}Os�)�ؖ���Ls��O�!�n�z�N�)�e��ғ��a
���V�<�����-̋���k@!c���+�qΰ7������VXpz��k�%#e_��
r�" �F���TL�;L;!m=D�i��잧�"�T���yl�c�p9�U���/��Һ0�˷+���B�B��v�z0���_da[�����4�a�~T�$���I��ʼܣ��f��2z�\��p>vn΄��$6Я�Q���ܴ�*ł!Y�y�	FM*�U�̴n��3�0�*�L OP��g�[�G��a���]�!�~��1K�kt��!�p��
,̒�E�-z�ZXIq��NXȮ��n�|��͂�U�R���w�7e'$�Һ0%]���S�#�`���o��e	_f��f���>���^��u�:�^�|>@e�,5Kp�{=����*i`�*.������˹8m7(�	��wSГG��<�1u?&��������?)�`q���O��w����&��Rœ�d��y�rLm#����ՠ=�=�����zz}Ya�/L��a�>�ҝ��`)�T��
�O�{o�M�Be��"j�:��k�l6�K%��d5�:ijק�V��kX*[4E�A���6���t�ES;h�챨	�n�K1�>��C���L�po�vm�pn#E��G�A�4�{�j`�n��kۺ���.�V�p&9�W���Ik�VΦ
.�
���I�f)�㑂�N�]�����tp~��PpL���kv�5;�fGٶ��w�'t�����*��d1;���C�:=jЉ�ȍ�����v�eUU�;h�2{
p��;oeDP�|�S� �!Κ�G�j;_��+�o�(\�(����$��ω8}��	��؊�]k{:O͋�&�7���0�	y�/pPBƂa���X�Ҕ�8�ȴȶu
qE�|��>��I�ᎀ�AU��+s�/�D� |�
I�Z��HU�A����K�p�A�?t�v4�F�t�@�����٠���}X��Onˠw��ܤS�u�6,/S�2#e�/70����p�u�(9�x���~�A{[�v�A8�`�-w�<��󴅻��9�ΐ	K{��%=0�G{�opx5�d_S\�L���+E��?�5�WBqa
C(n�Ŷ�/���|�c!�C�E�%k�{�T�S"��
�9?�o0	U�
|[@K�*�K_9lpr�J�ᮔ��נ־���Z�iy[z�x�	���"��<k�g�2��T���m�R��3��}��G ��dV�piֈ�v�n��}j$��1f��Z��9k�y�
�TWg<(�Ո�}nKz��-o6�8�
����F֢ύ�5��o�T�W���UC�x�ಯ���=k�j���԰Z4�e���xu��X5:�g��8�	�}��Ew�w�$�9
��ҳQ�ޔ�e�|��=l
��v��q~���Úm!�U
{���I�lg�>�V��.8������FY߭p}k�O��H��0���"$��۞P�B��Zt��V#z��#=a>
��Fӝ���B����/bQٶ���\aDG���!Zd�=X��&S8-~�y1��
��+y�j�S�۱L���Ey�S%�w�n�5���e�7��U5�U���a�f�=Z��B���k��ՠ������Q��B^,B��nk�����!m�=��BN���p>HE��l���Ǵ�p�7�4��`3a��F��M��j5��iI7݉�0��.具�+B�\��.���|���[�A�s[K��D��e.-jW=���A�͝�
i�n1-53���{�A��5�d&���l��T��F�g��Y�4�(P#Of��0v�����o��ss),��t�(��Y#NJ�憶y�>j��r� 
��'�-��k�z������T7��L,NFx�@k��q�P&�<T�l�Nw�\��&_XA{��`c�5
X����XE��S2]�6�<��i����9��@ý�)eЭ�O�m:>i� 
��RNSn��f����3��C2�w�I�&�j�3u���Zd�8�g	����~�_qꬹ��^#P!2�<q��q?�����wV��ɬa3op���[��hn�Ĭ�|�V#��fp�v[-�⪑�����lP�?���O��3��w��.�;g���-�Ľ�ˆ�	g��jQH7V�ʨ�}�P&��S)78�s[�9kd��mHm�ȩ��������7[�����}3дؑn����Q��Sc�N�z�'��yL�<0�p۩@�~�aTˢ�6A�$2z�Q(E
n�ZtJ}��ww�i��|5-�
#^דXŴ��z{}Zn�#
��"$jmV���C�@Z-:��1���TĶHi�x��-�o��x��j$��
��.Ӣ�H�z~x����ί�����M�-�A}jY쫑MP���+�Q�:f�b�׾U����p�\�`�C�~�<��٢]�t\�mICa_��il�н~������^���/��.�$T��x�B
"��A|̰�f'ԭ�wK�E
�]G3�ym�@;�N�v�$�@;!ճE`Z��7z��ÄM�{�4�S�G�0\5ƾ�0�f�hzv[G�Z�Q�¢5
f�b�5q�&�Do��癳�y����_�-��o��3��S���A��ĥ�PZf,�f�O՝p���OK��@68q�W��c5�*.���E��i5*w���:�j�)B���
�n��V�>s8��*�Z$�B��ɛ
.�W�J���0Ǻ��y!9���)�*���W�Hym5�D5��j��s��GN�l�٢�������w@ݫ�CLG������$CV��s5�z��)|V���&���r7snX�F��pw����}ǰ��Gj^;ʽ���\��w�m�Ņ�G�ݫE^���W/;l޸�»�RԻ&�R�J�l�7,U�y��C���.�_{�jW�G��8�Y��"6�\g�EtR�[�g=��ő���Gn�sb��uK��;�v��tY��k�e�Ε��U�Bjp��5&–u5�W�
q�m��Ѡ������>�^lV�&�-��`Y�ݯ��Τ�����՜�K�f>���|�*�(t��[�Y�%"I����1���8UM��Pu����q���
����&<��{��#L���X%
#��`�€�P�r� s�0Ifk���F�D��~���&�Ѯ1:t��"�#Z�̌1f:��E���5�L�0V��(3�A:a��֢�s�\p��,o5(~�B8�(o�Q��/�5�2���E��n���1�c@�l!�p_0s`Lw*�������g��Lf
���jH��ޢ�}}UF^���YL9���b�F��F�1z�����t�H[-�U�]=�k�q�8o7�&�v����{`�N8�3AI�
�u�m'P�{� Q񌺽Ő���-2�f�F��J�v,�8$��`�n�I�Ǿ&be����բ���X�y1<]�1<d�փ�>��D�u8�5Z������<G(�
uc4}�|��Ae�iت��}��إ��d��N�-�1�H
o"i	�u�d�I&oe,�=1e�J}b���-qo�dE�lp� ŋ*˳}L.�^-
�����	�)���.]��#�-2#f
�`�7[�xb�m7̳��E������l�}��dG�g�g��^x�;k���<�Z��X�6خ���j��>�$�:��p`a9N�0��a5*%��tjm-:�Y�y�B08�-��lp�Q�#��#����ޡ �{���	�u�Ղ�֬�`>�^]ct��s�"bp��֢�D�1:���ۗr�m����
N��Pn�-��4<�
!0��Pnս�@��;��li�X
�.���M���DН
�F���G�4�qA���"oL\%�Ӄ��UW�\u�r���UW�)��.�����!W@'IS�C�VdbN<��`(��I��)ǣF�z`p��­��B��n�Lw�Zdf�Yj&�S�����[�p~U�íC�f�̥3؄�j��³�&|NS�āi��P��h�~�ؿ�� y�n��ը8Y�p����)�o���쩶�5�*�|��7S�+9�ܱ���D5�XVc����V�oY��(���Z���+�ɶc(f�o�m�-��ß5�-G�ZN��H�Qd�&R䎔�t���Yn6�_D��(�1����nj��Xeg�;���w��Qw(�
.wz�
���/#�"�i.���q9D���b@�h	�L�aJ�7��bnp�g�Fh5��\p=d��
�07�#IgDݑ�<؞p�=�Z4��������V�-�%̕��i�-�{P�m���|Gbְ�mp�]4[Tw.��<_[�UY�L^k�ɜբ�~�;0��?1�p�9�ݿ��}�E&��8d�`������Q���h����AT��Ӛ�eJ������p�Jۈj�_����u)����y�5��#�F0����O��8�
6}6hqu��-	��ɚ4�0�Ɠ
o6!���B�ꐿ��=Dž/}4EJx��%f����,�@2߶���6�f�����ll�������ϙ��`�j��<8��)���yf��%E�%�_�����	X�P/f�g3�VGMŪ���P<���f���^HY+m�Y��Y�{sG��g�f�f6�U�5�����7�t��n�
���mNz$O��}�=o;U�
Ӂv�s?�]N
�+�i{u����%`u!S��p񆷍?�
5�]]������E��qR��)lUt������#E�?{Ի�?<g��v����r/�{�'�s��j����{��W�~���5Z��ͻ����{��˜/,����C�I�]Y�ћ�i����`��׃�6�ۃ�֑=h�a��5��j��)��(�"�%�K{�Mt�ȘT��d_=h͞��9���S�ǩ=��Ϸ�}�i��N5��z�Z�q��<��_�hm�m/Zs��Ek���M;�W�+3R�֒��|�X���@�‹�:lH���^��ζ�9����<���:ߏ����O]��� <h�%��t��a]{�h|�u�^��pۃ��%���ƕ�/={>�j%�O��փ�Z��ŵO�[\H|��5:����:`����J�L�'��%o�W&��z�z��}m}*���������Ak��=h��7���,6t���L/�ѭ�^�ۃ�Z�i!f�1��������Ak��=h��~>N-����U������/jݯ��G	&��1��so_�g������X�'��$X,���p�g�gl���^5|z=i�%�m|��xr���'����Ik��=i-%���[�xx�9NL����e��C3׵�5\����#
��޳�޶��9��z�-~�5�[r	p��uL�u���9L�gu~D}�X|������l8�K�[�,�|;FԳ�x���sP�����QV�/�)�dž�W�Y���9k���YK��o�Y�>v�l*#$�D5�6�%�����F�Ak�[��Ak)(Ե<d���*�9�!��2�f��%�B�\��^���/Z{���^�>nU���S_q�� ��Ek��֜��'S;^�F۲�h�#��Ik���
e�J�q~T�I��PS3�k�ъN��A!	��i�ͤp]
����f����],����c5	|� AlL��)�o�t	جFrz!+��e�\�,�k��������D{��3���y�y����x�L|q�8��S2�>fP���\���9D3sfŕct~��:�y(9A�K�sq���s��s����������s�����ޟ�Z�#ɢ`���Fp��F�r$��Y�q f����r)׹���yD:��\�,�E	lj�y6k|x�&Xs�E&���컩t�Y��f:n�h}��{��k"H�2�!@Da�K��.Hj֢���������;=4ǹ[�a��HX�y��~NTc>�m�#�0����6L�����j���sJ�xN�O"�C����Ml�ƧFf��C)-�Pz��݈]��-J�_���nw�j	�b�J�ܧ��r}l�
7�א��C=:��4e���aA�7��uj:(=4B�C����pOQ����^��"��C3�2��שa0�ai2sr�Y��O�y�*a�����,��C���N�Aed�C3�%4�4���mݠ	-��~jt �qlѯM��kTc��j�����Q ��Seogl�=����"]Qb���TM
��9C�
���W��kn�U�T�z�!X�v<5Y3~����žf��rm�ۜ�LFK\?{���vC���Ƅ��НV����gw��`�y����:O
�r>4�h���}D��9V�~e�q�|]#��2�4�"��q/�~k@Y7�gQ�Qj��HU6Ă|#��b?��-�%Q��/?[G@�*S�E�*��&4��2s��	��ϐ(� L%�榹Ҡo>�g�Sx�?tn�z	ؼ*6o���b�ؼyؼ&6�~�`�L���7��O�-�;�ĔSV0�W�`��W��T-��o�q�;E*�\���<�O!�j�Y�i���Ŕ��5��}W����o^�g�K�Z��O��yBB�lI*���ŧ���O�/���U?��_ȩ!̽��Sw�j��w�i�e���}j�{�5s�>-j������<s�Ӡ�g(��C3D/���+,)�ЩDz�:-UN
|�޺(O�Y�����z�w9-��Pc�{9v���oW��^a�=�}����#Ԡ#ܡ�n,��]L����d[ѫEqnF5j'�t��vZ|�x��5�E��~5h�n���~�L����Q�&��5���8O4z�N��_;�j��b&��-v�gr���Ϯy~�q`�w���Fa�H�bEqd���D����d	U�%�����-]�"��4h�����u��ݿ�q�^�]'E)��;ގ�z��8Z����e�׫��
�ٯ�3�uZ�un2��\e�4�m�1���f��T<�i!��ⶺk�$�5��.�4���eh��#1���=头i��3^�iP��o4�OB�ٌ�U���⿎���_�������ZT��뤁���2��^�v�Y!jWͩ�[�v=�3y%���M�����Y���3�~j�jX:�H����p��S`�6��[��\i�"m��w���J�晴,RM��]u�Cל�H��UC�,�aG��_�Q��N�q�0$����a=���V���A��G�?�r�
�7�� 
�Co=�ň?x�8턏�W�Y�TT��Z9q��~�߼�=�;}�{Rw���5f3C�Od% }j,i:E�8��dO
���T�p���MN�����y�E��jgE�=t�f�hK��j��cEzHc{Z�k��{�4�k�s5�t'�1�_t�?c��h�Sc5�d����N��O�j�&���u�c�Z��^;���[��L�����="��S�ԛ�A=��
�0�+~�ž[�y�"�v��h�Z-�
�_Փ4z��p����[��Q�}�o����nAp^=��^�[��j�{��z�-N���d���b�k����r�Hu��.T]��7^$2�Dk4�6�%3̝K#-fG탹�vb�ӌ^��f2Ծ��5�I�6���-�YS}
���33�f���ȵ��'��q��yte֠3�_n
�K�����^\�K	i���).m����֠��S_��ݿ���2���y�tW�ا��Hb�	L��^�&;-��Y�#�&�����<تaΕ��GZ�wK,����g�k���v������Z��j�v���L���}�%�v���>-��5�W�|c�ޣ�]7��X�OxJ���ګ��^D�����ScH<=�4?���)|jH"vrKgvLW.��_3�t��-V���kL1N�w�E~Zl��”&�t>zTo`��骱�"����A�מ3Vm�1�V��m��S��{�![�GqjW��e�q��&
�Z��˵��Ԯ��v8��q_�S�;�Z����b��\M̹�Ω��SS�ݮ--ٵo���Q�U���RÜGS
��j��׵�P���%Y�D�Q?-�$S��$sڕd��Q���Y)��W�f���j��g�R��J�5�u�+��b�3O^-Δ�j�j1�u�=VJ�W���J�3ߓ;�JqZ�����Li�(71Rl�7�d&q�!m� s���6����(���aZ0x�NJ��i��ZRr2��V��w�Vڼy�gH|�[�o��z�R��K�o�T})�֋�����Hv*��rf�s7��rzug�ܦ8��)�-
�Q���0��0�#E���<��ށ&3���k��4�W�
���X�UN[�Z�q �0��h��Ws�J`c��i�Sw��7�i)�C�̼lO
y���Wcy�x
�=��E����Fe���.ښ�E����xK9�r���GeA���סŇ�Z�Oa}Z l���v*HUⴲT�������^z��v�� ּ'{����z��L�kD�f�P`����J�yH��+��oh`0��B%x�C7]L�A]׼/5[�uZ4��y�^�i΂
-��sj�N>���3�i�J(���u��q ��j4Qz�]/^*.��o�Fz}]7y���x�Y#-��ia*�0��V���z��Qj\1j��o�h;5j!�vhY�u^���8��L����
A�Z��Т_{��T�f���sSa��M���Sh1Z���������
g�T��ϋ=��W�8��B:SS�l1K[!�aZ~�L,��#�^d-!ASe���8l�S�]$��P�	���NM�:�W�
$s%�VL՛��H��7nj]�)y]�#��rS���MupSj���	�_���Ƞg�}�A�W��r��PI��f��<�H�#�~b^��Z�
�{����O
�Nj<���EG^�����6Cyle�Q�,����b�^����%w�Yr��u:-o�Ђѓ�F�
��+_
�ԥ�
5}��A��Q����t��n�άO�־�ۼ��s��'��s����qn������
^qC�?�]�񴘯s�
vj^
�?�^a�z�s����^�'}�i���k8s":;srZ�qm;�F<t�T�<-��j^��k"����ʘ�8��T��C�qψ��z�6��T�����r\��(8�����VO�����=�����Y��j�v��^q�:KZ�������T�F�F��ο8*�(�EIO�TÒ^D����0Tp����a�N��V{�IŐӝ!ӡ�a���By=�>��D�1�k#0T���O�!&��'��Pa�W��ulo}�5-2G���@�1�+�*�!�󺄙��4��`H����O��1ia�?̏�{w��x\Mg���*�V�]*r�/����b�򋡚���b�ʛ�b��$�J.�ܗ25rSN�"n�ߦ�U�A�?�w��ߝ�uM��^/pO0W8=��"M���b
��
��X�-���#԰����!����!�P��'�6Ȉ�ڨ��	n���i�x���=5�$0����+6�]L��Ko�i`Wm5����>-�q$@���M��gX��bK �J�O�����캲N����3��Ծ�&�+L�/���`N���L���_4��'x�ک!W%��,tϫ��+�X:�Sh����g���Ȝ�r�Z��
@�F��n��!U��kod�
�3�в�HNw��1Qa��6Z�O�b��E�y�kh1��”q��r~{�,�Q5��N�d���2�{��Zu}˜��LԌ���Yq��۵8uZ����E9�\��b_��pQN:u�)��j.���u�ޣ��
�D�>L�i�X��k�����C��ᡜ�n8确�5�;Vh���}ܱ-w��Ů��o<P�`���(u�psǒ+|��B�`��Y�Kі׌�M\�׊�������4��l%�:�F�y�?��lfS��Зg%xJ���B���r���B�~�fP)�g��,	FwQ�flY��+��ڑكGGp�G�ǟwt/��(84��.X:�w��M� ��MP��E��rnչ;��0�������}�zp�-�����fS_�2�$����1%���,�?�L�w��
$}#���uW�"���`�F~�B0ވ`G,R�g��-��ROr�xaW5��$��Z��ә�4i����S�H��Y���׈J��Բ�F�%��w�(�d��|����q[��
D��bȴitZl��X[���$L��<��ݕ���	�X�ؔO_�F�o[Q��㶽���ʯA��I;0<>���Bq���>l���m;��#Cm:lR�����q��+q�pRr��Os����|�<		u��<�*�$W0{��mK��Gr�Kb�M;h�!�d鏳��	�h��@��P�Cӹ����0��P!(����+�67=�0p���%��5<$�4��i���h��@L�-�W�L�异���n�=-�+E��l�^z�O����'H�]���X2��FU���W�Ty*�
��)������.-�Ll!<�Т���k�b��I4���|��ߋ7�� �1�q����1�z
7m��r|Zl7x�{��8609i�Xa��'reϫE_qj�Y��QrR8:H+�s�۳��J5~�	���=.��[�~$�}.2��G����!MFFy���whN<
�T��j�</y�>
v���RWƕخ�����Ě�wpqD����?��I�p�%�Ӣ(Z�k�*k�Ӓ��[��8a+�E�ţ,))���v�"��h�+v�\y0N�ʵɋ2�>Z\L�H�LH�3;�u� $�?b�v�k���AHz���V���.�e��b�g]B�������R�	L #ure2 3-Ŭ�Ӣ�L[1+k�8b���+9�-K}��b'û2A�!*�}3"�[�M0"�S�M뤸b)X	�Z����!����(���~��0b�y�c���(���{$ �Tm���R~���?��gϹ���L����q�*��
�'��ҡk[&E�=ċn�Ǜ‡�T��2��cC�`��.���s��	���(��]���D�Z�e�u1��{>� ���6��9�ѥ6�1�ݼjk�ۈB|���_.��Pv
v3x����&����ŎA�7�a!$(B�P�Q�ԙ�������
C�.4��a��OX�K���I�	�
Z�'���G4�7�mD�o�k����-��K����ķ�V9;�
7ў�5��mwfك k�Q{p0�aXA���R��Q�Z
�����N
��-%Th!���x����i�[&߀��ND�Тɹ�k8,ء��
-�$�5꼿a��ݢ
��kx����Zݜ�l��y��xZd��|jPt?t�]�i�frj��'��V�-�:j��uz͸���;qj$>�NO����U�
Ɩ��4S҅�Z ��s$��aO�F[��h��-�k�u\sk���[��}�6��?��+��e>��9�W#�뇦z�G��v2�XA`N/^8�|�c�|��4g<�.��o��!j0��i`�;�)�=���ܩK�=5��t[�����q�M&��{L�޴&���ɲ"��xXw�r��=���LH�Ԩ�-��i��=�ԯ�ִ��)�M_��q�Ů�U-�NM�r
��F����~�0h�X�~e��r\h�Z��y^S����2$ְ0�Hۓw�0�:�0�M����Pn7�V�Z/L0��@�c\C�C^�Z�4y�I1����5��(�}j�b�
��!K5�J�Lް��#K M�1�0�~c'3�t�V¨u��)u0�~W�ծ�Jpg�,��L������K>,�B��:��5��/y,Ө"q�����6u���d�ƛB̙�e�̕ݨж<��se��s��	Ӿ����-TJ%���R�����a�`	sRZ' ���>ᔲqe��x�f��)^WP��꣍�S�@+�"���jc3�c�e��|s%x6>
�ۓ��[nL��:�i,!�I�ln����޲W_������VB�D��>��ܳ|ن�YYg�Tљ��D�n�v�cz������%��#��
.�v�x��A�8�tS.�
�%�49�і�N�?�� l�@4�Nn��/M2�t�p���	F��E6�\(��e��^��L��/�J��`
1�6�n�`���2�1I�܂���bL`��"#`�SJ%�	6�z	�֠e`l�@���´I�b�m�Mz�=� �-���E�&K�gX��n���Rd�{��i=�n�i�jb��-���@ �^����#~ҥ���B|�X�ТM�A�ј)�%R�������޻E��T�l
݇�'N�R��Q����O��"�{�����N
�{Z$f{}j�kT&Մ�q��	������5/p�-</_-f�ۭ}�!I���v�a١b��t��<��{hAD>-Z����4qǘL��o�#LlQ�D5�����랪,��C��{)쩊
R�6��4�)3}̫��6��kP�u�F���^l�7��)O�$�Y��p>-a���;�z�6�I59v�=�6��T�c���7�ټF�45��:��F���Ԡ����� w�{^�^W���v�� ���C���%Մ=a>�sR�t^�,�e���u�T0�oZWC�뱆�?���w�B
C�-��]-��X�3꫅��w�z�Ӥ��"�]:;-�=nS��h�d�Ô�-�0�V��v]THg��S!�L�jN�YO	�@��
�4K-��5�_`R����$�-K�0�-{42�Z>����Y���I2�<��/��L�
#��o����(q9���r��X3kס�ܒiF�B�U:t��5CtV3� Zs3m�x�L�"0�y�֙\��[��8%���ʙ�4d�d_���D;C�(�ءd����&�3�I!IYj:6A���6�'�܅�Y�7�T�~Q�f
����
�@Q����ӖU��]��4���L,Dbl���-�4M�=�2�@<j�{���m+d��|��p[��-aw��i�a2���bk���h��%nOz��$C�p�^���}�uuk�v
3v>�7�����ZY�==33T#�B�U���N��	�~���4�+t��8Ƃ�G1�{7�o!�@F���/I�����wy��臭�o?|�:%_���׫��׳����}�����Q#�{�|�Z��5�y����z�|=j�~��s�������������o�k��|=k<|�VJ���0�>�f�[��iX-R;�k�@'l������;]?���`�cc~E��0�j1�a.Qc�[��u�l��{S_�i��2t�Bc�{X��^�n�{U���A}��߬�xD�E�2_�F��#-w��E�q󃱏?#��I����b�8��՗����<��S<��՗kf���3�H�W�����W?�)nk��]?¸�~52�H���YJ��!<i�C���O�����_���x�֗k�x0��O��(�>�t��f��W��uj�kS�ế��Y����a�73�m:����9��޳f�=�?�K���a��NL#��w��)ԘvH"������s?�k��iSC�-�'�5����Z�5�rc�hs��[̇�G
��O��Rv0����S����	���T�X_X������'�]�Anғ���/4x��� ���cQ�n�s���/,�s�maI
 m:Ie�Rи�0��!�S��Ƞ�'8'�F�x��h����^ٙ~伲���(b�۠�b�`C��9w��=�P!k�N�G�'לa�������1�-�0Q��ߣ�N=��ߖ�
q2M8�ɵ�UIC���3̉ɭ�vg9m�!�񐧁���x�墺l>�Dې�[�����#�0����߰W΃�p��:���إ�߅ƍ�^�F�~8�%kK��>请��Y��c��JݮE�9��n͒/�p�F�;�#��E�Ф^��B��#2Ya�sd�#���L=33����"o��D��@�X'��f$A+�S��6á(��¼
�?&��a8�=���OI��o���	
�5��ߺ���[�7秪�0�T�<1ҋ�rĉk��S�Sф.O��q~�w���Ew�#��v���ԩWOz�5��N
�#4b���L��vq�8�jq�i7�E�$N�$f���F��rĉ؂�ԇN�rĉ��=]4䉫E���5ҳ`��D�~G^׿�5Q�&��ͳ^C2i��M��3��a�L�X���TO���Q8�����hJ'�5��b'���ൾ&M\�V��0�8U��qPGk|Z��0e�(N'�`=-L�h-���Q9AO��f!����bŽoM��;�N��C���¡K���=�x���E��&Q��~��´�qTu_jE��Q�S5ʖ����lL�(��5^s����U��+�iYzZ$y���9��ρ��(����S��&P����9��`mP�׵���GP\����>�#��j#�v��V����㑶O5~c�0�H��Dz��j��U��6�0��~}#2�/����h���<�����D��:�$�l�Ag��_��q]w^�-�{4:�O�f����y����65儖�M02	Vܟ�	@�ey2��e�_��� �L��(�|�9\�H�րR|�2��v�A����0/���ʇlr�_S�i9r-�f��NM��00�J���)�(���q���D.A�[��˷��
ėܙ�J A�4�L&�7�H��\��d��D3�Q�9]�d�rM:u{F��$���ۍ���a�M'�"���w~/��*�P����H��n*m+~��PY��-�8���Nˆ.G�}E;�ؼ���f_��
7-����t�ɒc���(��I3��$��9�[�-�~����&��F���fR�����:�z�llz��y��<���͓�TY��1=�>+�[Wщ���ͧ[A`�E:������;�.�Y�S�9t��?�ɑ?��=��;�̹W?�9�יּ(W�ڮ���_d{U?�;��a�D:O��K���SNu�q�}�q�?]�x�q�~xq��Yq�'��#��{��8���)N9x�8+�S��c��_O�_�(��}_#��]��-Gd��9��ߦ����fg��c�Ck繟�8���b��=ڊ$��P�X�¿��$����
�����Q�yS�C&����S:9§�`�%A
�Hg���1��m������Tk��ЫЦ��G�������{��W�x����A'�g�&0��+���KH�}x���t��ʄ�d��i3����W�<���y�ϧ��l�'i{as#�g}�_��%���_�ͷf=���H33]������'���]�-*��Ā�4����0�S��1b��9��h��sGk��E�1�`�N˾=��h��>�4��$��C%|ǻ��~�Iy)�e�=�)��dqߙ�@��a�o�W�Jr��>h��(��b�`*����Rw�ߩ���MBq�Q��wJG����c3������c
�O8�(�)	�N�#�i1�fw$p�e�7��%@��H��t΢��=F�	N���q$p��W�[��F��5#ݾ�ՠ��.���PqPe�E-J=W	k(=��y��QN��Q�TO���{F�1�`6j��Γz=�kjM@��Cz>l�Z�zc�k5�w\
ƽ�`<�z-7X���6��~�z��hq����I���E���� W�=z�ׇ�6�>Jƈ�X#]��H����k��|�6���b�#�F�[��tM��$a���qz��W
�k�}ߟ�=���6����~x	�0��8����n�ɺ&�ؓ�%,���iP��X�=OD�y�c�Ȃ�95�q�O��1*�5N%�[ƪ�8*�U泠ƫD�]Uͯ%���.�D��9�Y�-�0�H�����0�r�a��E�<-S$֨W
cZ��'^�5�(�^M��Yc
���E��n6�d�XÐ�F�Ͳ8�Q�o�/J��5v;�%"���dB>�%;O�8��@O�Hf��lҚ}VP�8���i,��4/��+j1�Or8��F��"t���ҩ��Ĭ��f@;tpp�K�/�s�\�xJeE����BU���_6�df�[�&�F]k:J����r��,1�q2`�ؠ}4L�t
B^uP>J]y��9�u$��h1�+��
"��d�i'^��zӎ`H�CN�v`39����.F��;^I�Õ������~l��ޡˠ�]*>x���0?6��ƘX–Bۥ^cXevU�\�_���6t��zS�	�XO@��=�#�El��Az�{�9X7�|��d�A�^���h��I��GѺ �!�������h~ǚ�������2|���1͸;B��c�Uc�͆+��Kf�/{�Q����U�L��f�!,���|�Eo������ƣN�(��Y�/>�ZN�qk�\�"��.��K�\���*]�Rp.�w=S�hXp䐲
���e�I�#ߍ�[a1r���al�8��^J�Q-���Hj�������c��ą낭ڄD��V�?)=�6[s֧�c
YJ�Ϻ�>\����,�j��%�y�*D~p�C��p���ݓ]��Ӹ.r�_�.�C�"D�����,��T�����Նrn�e���e5�P �PK���
�L�ɋ�s �ԯ��B�V�A�
_�x���MJpvtЂѳp;o+�f�5�L�\�`eUq,�C��7"LhQ=1���h�P��X���9�4Y����(��(�B����\�U�2)Bd���qw�,��xn�8����^gk�Vj�d[s�A?/Ĺ=~\�}�$̲���u�M6�5n:�r������fq+D3�MA���~%j,%��JH?�o�KP#XKH��͗��5�	��b��d��̈́�c4���5�لt;r�Z�j�Gd!=��_-�;��x���?�c�A�:(5T=(5X�Qj�l���(5@��Z�k�#���ŋJ
�0�����Ԉ���kE�Y@
z>����Wl߮!�J#L-T�,q�Q��]��ڝe��y��E}ƈt:�-�H���ڠ�ψ�M�QV�w>Z|�k�Vʌk�����s�2#�l`��Q1��(qQ���V(3�ں�_j��:Ԣ�x�0�\���� ���a�M�7�i3�uL�͈���V����^�t/ћÿ�Qِ�m��C�"#�@V��OmS=<��T��=$��C`�5�G#��3�-��?c4���"=�ߘ�Q���IR�6���W#�[�a.K9��]��ŘW�)/F�qx��j�yR�a�3n�]��>*�ֈa��ˠ��z�i�����/�y���m%~6�jh.�K�3U(Y/�,����E�SMx�d��O�/��E��ŹA�m�44��B���lӽ̗䨪h]Q̓�q����(���uԈy`N;]�r�LQU�^���$,�ĪgIg�T�Aǥ��Y��cZЀ�^ͭ�7�X c��[��U��F߫�:��w�
�gttK��]���*�G&�k&�2��e>C:��Lp�7�jnB��s{&�M_[��$"��ST�)?8WW�2�,�я<�J�|�&#	[�]��-w�Iǟ��c�'о��n,�FѹD�(Bu�EjjM�(LM�`]p�����!�������~��r�Q�K��kQ�L� ۣ&ܓn
[9�Ok�QR,Z�0�S��y��M��EXqd)�K�RR.����^����h�\B	i&��HB��S�e"�oЧY�R��ok�C=��k
^��:M��X_Gl�	^-Lf�5@��b:�=]�R��!?�b�d{�<\帒�����0+?�yr�+1��&
��]P�.�7)���"�7JF�3IiVa�B�a/v`��<o�	�S����wx��q��W�~	�;��P��`�6�P��I��d���!���y�[|
���ͽ9�ƌߦ`Q�:�6)A�v�����\PU?�P0��i�r��Э�3s���慫�`�B�0&��ݩQYτ��Z��K�}u��as��/~I�R�Pա��t.ܻ��T��)�Zz�j����R�u��p6T!A�Eu*Bly�~���nE�/\��cu�nX7�����XG����E�P��-C����Q�Gу�����h:9��gQ�h�^����[��a�~�*T�ٔ�hyX]�\F����~���WM-\�%���E��L�"��d�X#qI�qol^S��ȼ\��A'��3ܘ}�T���R)nkD
�P<��o�C~Ojߍ&)
���m����
t/�
t~/��iIL�p�	�Y���Y�r�;�N��KQ�$CSu�47I��'�j�߰�#�oŜ.�E�D�$����Yt�Xj鋘�&����i���$��+�t[�j�H��Ʌo�W��׊@�^63u�C��y���U��]J�:��w��Gl�+�-��Uڒ�ӑD�D�g\
�3D�7@�O :�H�B��#�Yd�ɽx�����U[a�]�֓Ӌ���g1i�J�S=?u��ZԢ��>��}dIЖ��z���DO�~i̕����lk8q'~�T��2&��~f�	@��>�����Y4:�"�g'',�� +x^�]��®�i�W[�AWٞ�͒Xw~�_/��F���#M`E[�M��
�+�b��ʊS��V��=z���>���O����Y�b��z�
���&:����&�PHYfW��r�җ ���<�[��-�bRa�('V�vhe�'C�ӢD7L���}�E��ĸ���t�n@G��J4{����JKX͉�	z$~{N
J��
T�ɶd`H���Yx<4	f��;܉�d[kji^VEcpg�Y��wO���)Rdi �b�B�P���M��F��
���0JA>�c���+�4��h��n����g�XC�+C�M`T��NnO�>���ק��2�I5�Kw�.�!),����J��5tnq7��IO�2��t9�!�
7:Y3��pM�>�z0}�|>�<M�̷
a�YM��n���}8�F<lHJ>��K-����l��_v�_������5�1�EMYk�|�N��$�z�E�^jHq��c1N8�3�ݏ�[�y�+acY�#%]�\J�kꈋ~�
�E���x^Xd���B</,2�bo�O�"ˑ�?o�ya�9����j��Xd�n�O�"�=<.��"�?#�O�"��ԯ+��5�B"K��N�ӑ�bic�|���H�as
�l\-`o+�s�;����r4�mn��"���	�Fz3�<Xdq�3�@��k�`o{�޾�k�np�g�[��,n�Z
���(9ڍn�B��<;Ev�ڜ�=�fr{HK������m�O(�5�%f,�+��:D��EV�<��>Ev7�k�1�}�Τ{\}��J��m]wln�I��-,7lnqP���Z�rb�Q�u��v���{nK�G�g�AF�v���Xt:]�t�[��:iOb�fw�`�!�׺j�xO�٭�P��G��J�Q�W��uHW����5,�Zla<��[4�h����[�^-�c
��e4ɑ^_-]-̾�z�1� hs��WO��5��S,��DѨ���?�C<�q:G���E�H�j4
Ye��ޢ���_c{������9}c�ȵ�џ�Kj�%��9�N�ɚ���'��C��d��KU�y�'��>`�My,��U��cS��'��Bg�V�O
G$�IIz������[(��j�v|#ZU-�xB:��Q�lE��y���k+���k�.���Ƌa�i�I�V)=e�#A���F���q��>+�}E��hS<=l?S=5�=�^6��G�ΘSc��D3�Ef+Z�#/w�gIa��l.�`��y��L���Py:����[�h�=�1]�(��\�,L�yP8&��M�aj
{�3�L��뾏�.k�ӡS�(�0�F�d�s�ɹ�B�7�F�p5gg Y=VH�L?%PXL9�
��O�G����G��4�
�b��{��h����!;S���&��n۲c�xޘ��h(֛r��JѶh=߅�6J��H>�R8�:E:DLѺΏ��@����Tã���s(����^;�|2�L�ګltr�2iԓ�^��C������bx8<�p+�l��@�w�+��#���'�,#XôhĂ�ۤ�cVC\��i��t/�I�oK�ruR�,ٝ�T����ۯ�O 8�xv�)P�"��3M��in4
�]�8Hy4�Ν���{$tI@.RO��q�⦜MH/R�O�Cio�0KD��R�C��z���.�Jy�)��W�]��Bu�̵Z�2�%�%����vU�Tv�!�xamaD�3K��$�EW0�&��5�ڮ���lF̮�}�k�1�43�!3fH��dS��j��t�
V~ׯ�Q����t�j��B�!x�/�2,`�]�����X���'d�=��nʲ�y�t�eݟC����=^a�Czorv��N��=��l�*F��,�k ����1���'Tcd�-.�Q���Ϗdv'�ܥ�SC,�������'�ꡟU5"�,��
���ܦS'��	���b�3M9
�|<�l!sO�Ӯ�G)M����vb��Ի��'�E�������=��W�6P�dJ�0���+&dqt��ߢ�!���Mؙc�e��+��[<��R6�uR/b�4yS�†R���fh��ٚ�ߐ�G=�B��>ȦH���[� �7Q�����łt
�b�?(�yB�����
x5nyF�Ixc���_��+U%��f�M
Ș9EOw^�I%�i��^O�c�Ӄ̆�w�a�΢f���s��!a�!{���'N\�WA��35_3���T�O�T&��g�����L��354S��5j��>����i�4K~�LM��M2#+�t��JxY�-c�1ҍ��ƾ���z�A��,2��v�Ө)�;�BS>%��s%�����f%u�%� Yi)���l,X
d,bOcW�һ9�:X$jġ�Ϥ�L�(Rb�������i��3_[g���D�-][��L��t�`^�~c����o���WG�N\�r�U����?�U�U�FV�����U�W�6����;�S�����~�"�Qb���\�:K#.Z+љծ_5�$6}���'FX��g&���)���{O�
~��_���l~oɳgѝ��>��A�V�_5���/ub�N�f6���#���^8�y�>1Y@H� ^����8|.�A,��|�N,z��I�sK[r��\�p�c�j7�)h26�^fԘI�����pA�c�9��V�_�0E>?"zʗ�d.q>9����]fK��{��)#�o�O���G�;bxI��,?6^�#��S�%bɯW�����_�G�|�'�P�O��=�F:�_�:�����8��j���ۖ�6T$L��x�b��r�~h�J&�N�/h��c^\�x���W>��%>����sd���ڬu
��/��f}���to���h�_�������!8O���؛��b�(���(��gGv�UWȑI7�#��S�DZ�u�=}ȼ��(n6��#�>h#l����$�A"�='i�����_�H^O���>��A�~cd
bo��/6� ���nw���ޝt�[Qp�{�/|&e�L���?K�8��Y��q���ȭ�,$'=mwJ�2��S�2����.��'�*����7�rC�7/�Œa����dAw�}��C�%|��X�͆��:}޿�Z/�7��"��y)̩i�ܫ��Ƚ�y���G�^����L\�m��'��*���1͒�G�,�L��Z�!�'t�$g)2�)�!�$�N�l��%��V������a��<�Ô\m��h���r�����w�vh6��4;
�J��}�q��f���ܔ���<�t�]�3�Sb����42��A
�9�"�0t��]j����򧿉��#�ܓ��������x3�����.� =Xum����L�f����7�
h�fݎ��<>��7�uT`�I+�h��������n���Ԥ�̯S�iˇ�ǟ���S)�Me�M@;JF�n�S�Cq��P���=6aU��I�\�,���0Z��f9T�����*&13ڡ�Cɤ�p�u+Ȋ8����d�I{��Z��Z�q��x��x-W���Q�eCذlujٸjC�ӝ���
��`$s�Фh�S=�"p�
0#�0��3�ۧ�"zM��״�<eںHpיm�w�̜W�!���,�62���<lI؝s�p��xk�k��X����&�吻�������8Ȋ=��rY
vg�L�)��\oڃ/Cɦeo�Y��g-x�������z��z�ׂ�o�_��܂�d<+���!
��-K!��`yQC
[OZ4u��p"��\�p]L�g��K��<X��d×MkɇI`�8h��t:��
�ܾ=��~��~=���?_O��s�Ƃ�J�̔�6��),s 	��C
��1�I�$6�'^�t��z��^4�xe��z1�J豞4�
g����k�۷�ﯩo��oߦ~��>_S�8E��%(q	���G�4��<�0�Ӫ�����^զ���5S}�c��>AJ[{��et>q�[%D�ê*tk��+�,����;��g���|������/5p�>��~r��B�nz�ʼn�է6�c��`'v!�!|�H�|-z���s�T�:E��L;�q�a����<�Mw��ٟ|���C!��>�.�z���v��->�����M�JS�1_�n��E<�L��[���X_�pt�Tu����yo�y����o�>_��T�[����{����+�~�t��Gz3]���p��NVy��f�7m.E�;���,��Ry�|I�rM~�kP���߿��x�A�נ[��Z���~}�}��GMҟ�ǣ��jCQ���&�����+�W��r��eh��<xQ���̺H�����\�"���ʿzl�`�e���ס�����������D�Z�c���DT��G��2�����D�ב��l�����S�C�tO-X:�	ᙋr�	Uٌ��y^���|��y�RedS�,zy���.�b"�9�~v\�_+��g|�?��^z_j_�R���7���wK;~kᔔY��Q�
j&���h]�G�a���Y��S[�TÑ���7�	�g��n��\||��f3���4xȚc�[g&k�q����L/�%l�rZI�;��	s�ZI�sj�����o���'���;3i����d�ɔ�ЉHs�����뭩�6
^&���=g���u5ŀ����v|�������YZ����S��L񎮆KA`5�S�*�@nK���r�T��������}��J���I�bC�6f|Σ��7�i\���Ϝ�����QJ����%m8���{��7m�L��rU�.��[nA�ܛN��Y`�gD�D�I/�P��<��=��_Ͻo�pb�>��|WB	�&L�+V�7m�u����Y���LB׫,9}�h�66�/mu�
�KƑ$qx�G�m�|�<�a>�:.�*�"���{�i�^pُ�U�S��8`��$I��r�.<���+��Ι���EwYv��O	l��ig�re>� b�����^���2���>+h�w�*�稏��D�n�̞�ꑦ_�8A���^<�Y�6a�rڴ�����
��HV‹"K�8�L��L��Zo+�������n� R��E�sOwi˱����G��.X��Kи�麥DM�j�]�AZ� ��
@�K��LR#b"I����%YU���c�Ѻ�(v���%��8b�^�+��e�=R��iZ���|��!.v��x&�&�d�x��4uKU��h-�S\�,r����9�4e�
���^�t�j�v@�,��/��*��Y97���5_99��p"(a���`�hD!,)�r�&�g��}g�ؿ����n����Lo�I��N�C/����%�m���vb�����_z��
鯒/��Ȇ�!�ߐ�er�<�9��I6�R��FN0	�묁�[�S�Lͱ6��r��[P��H��/���cɥJف�둊��?c����ށ���e�S�6�Y[\4�Y�44�H�ʳLTR��D8�:gX3�5<"I���{#V�Ȑ�njz+T^qS�L�W`�
tg�˴_�;��^)�?}
\1�k��bH'U���C��pN�M:����bieK���˼{��O��ڝ�1q�7h�Gy 	�6c'�ѥ�� �A�!_�}�
�s&+��dS�#kW%
bMbi$��B)��U�|
��ċ�U0���hG��~wA{��o�ܓ&�r��?�6S��/�tA��c+\~Er��g)�4o2.ڥ��M�Ü��NH�6N�p����K�Z�����d94��pEC���M��5�.t1z�;��y�ƙ<?����%���7s���&�%.�_����2Dj#�+�+?Qdm�k��0�QU���?`��2���se����w�WJS��!���[��>�G�f�y���T�>jl��`�Oǚ���%)7��æ݋ӓ�;�0��݀пn�ȉԛ�v�J��i�Kr��K��&d�^Gؚ^��֙��n ���-��S�%%0"#�d���Zb�+����K"6)_��#�R�a[(Ϋ����Īre�)�V'��R1�d1'��%��j��qk\���}k\��ȭ��,j��?�4�%����>Mn.\.�gy�d�V�M�3
�mS!P����~,�)����f�]���FvHw%���r!	oZU,ZDN[Z���7��P��2��w[G����r:�)�׹o���\v�װUeMYγV��Q�N���'M���Nngsg�U��
<Ȉ�$��{Nv��ո�Z4�#ۘl|ܪ�r�`���\���㖓�z	��-(���<�Sǟ�OU)ta��[
8틑��%���x�냵
_�2dOڴ/����Y�L�<diͮX�!�:h���$d���f5�הּ=���}.��L�.�{`��s�$¹���å��q��Ǯ��L�x&+@����W��͚X�m�v|��T*�o���w�AD�0��#�o���L��'���M���M*��n�Q����=dN�G��)
���J����Ϯ�G6��4$�l��Ͳ�����=e��*�u�����Ŕ�[Kl��9�z����b���B��-k)�?$�imO�E����'6���h,�T��-���P�u�S�0��ӕ�|wA<�1�\��7)��.i�|Q�g�����困�iu?z6���a������z�L���ƷȞ�������Lß"�'��A�RZ���Z��/y�j�MA�F��I=n��g%�p��]B�nQ�"�n�=��
��m���&�$��g�p��*V�2y�VD�m���M ]覯g"K��n�uF���DQ�'*j����L��	�
m��qxDӧa)��\gWT�d�%=s>w;K����M�M�֓���dvb�v�d�0_S�}�V�����=��9㱬	c�J�Uj�`���-
Z�}4͵�8��Y�ۆ
��0$��Gz�t�	9[�l�	��1h�w��?��q���O�좻��MRbo�g���H��������8��A��-o�v,�T䪫f'�-���{+�?[~���E��#�0\�z^LW
�o8G}�n�ߺ�
7-��5^�m�!Yv�~
 ��l����?�z�ɾgj(�t���w�]�_���v�a<���|�����:�HV��Q�a�]ogh��|o��Sc�����ҳvE��
��.�'Z<�Y�
B�=����<vKrI�
u���}\��y�͒����vo��9{Vɑ���1�{��u�HJ��jJI�-T�5��m�Bk�����I��㰌�&��ZzJ�<ܽ�r��3�>1���	�<��zgl"��m]��(ff����<���I(��p������v�1����f�>@1�j\%�o�*9��s��@���I�ow���Ǜ
nʽ���*4h�Q	>��C^�ݤ��r���Ho�+F���V�K8�6'�ĴZj�T��S:�Qm���]��I:V����ј���2�=�o[���7:ӓǍ�"k<��k�_|?˝iWm$�s�q�gh�&�=�3�����d��ѷM�g��c }�ys�N-���P�F$>��]��9l�^�u	��^󇫓���t���B<#�b��n��y��:��XH�D���@�������=�q�p���oF���~?���PL����$��L�2ޘQ�$i�uZ�����]
�߾���=�g�&��P�E%�j��ӡ���������Du&���G����}������9�펫�	����N���:f	h�ct��>�m`��q����8��EЀŁ�p�fw�=��-:9̫���Ц�+{��.A����_����[��/:����u"��.��nmڭ��[[��DNS�d"�.ǩ�`�
-x�����	X��NB�9��&_���_�)u90�v��û�W
Q�5�Y0��;�}J����=(����V$�;�U���)��z��CH̙�x��A��q!B�xz�}J��4, ��"�^�IH��1���+|)�7�J21��Y��8|�Y0��1F@t?|%;��c�w���4uIr��񭻀8�	���O�ֈ�x���{�����YqL"�f���p��������`�1�o�����kt�oh&5����f���x}f?x��]��h�6���
ܧ$�_�C�Ge�]t��^����cT~��0����z+c�J�_�>/5���@ӓ�����Tm��~x��̭?��y�T��~���⯿nͫTӷj�>�z�"8k�٩��ǯ?N�������[�v�����Q�X/�S�FsD��QB���}�*�Y騫����q�4�pk��~��k���җi.�APvה��f
��;O$0��'�!o�0��V���_�/��q0_ʧ��i=�c�z�����|�����87e\�����_r��mǵ��Hƈ����6(�~D���;��q��>檫�������0~ԚY�����Pw�z��0n�Ԏ'�<��G�R�������i��{�7A��\<Nt������)?a�3�_�(^�櫳��?�K��(�

P1\�����=�zЁZ=�^Ϗ�Q|Ӭ>����_,h���K_��K�	CX�j��!�IۤaǾF�M�:�����XR�=�v��5��s�&�
ex����Q�|k�y}��$��P�7��s�Dm�!�1� �>�M�I�8���1~|�l�Ç��=�R�'^ۍѯo
�8>�h�A�r�;���k}�/���p�L�,��<��@���&��^K>}l�H�T5���{?�F�ŦG��ޓ�^���M���XB��g�ԣ�"�����o�[�z���{{�'-�oN�R;��ߩ����y��PMWt�^�}��j6�7ϝOɛ�/��w��"��w��iC={g��]�I�ݕ�B8��B���_,��&u�.�{�Q�ž��K�Ꝟ�'��B������u���8�)Y���Cg���
u3?�b���C)佇{"���l�1�ku�s'�W<��6���W�r�V]ݐ����ϛ|�P���P�~�Ź�B6�Ig!;�+oS��6�>�T�~��������-�dzdn��`�e�!�����wR
mj��Kd��qDE{˧7	-_�o�aQ���g*9��ڱ�A�0�^�%34�C������ݙd��A�	Urc�'���1�C>���^�!f&Q�Кy��{QM�Τ8��E�ZO�D
�)ps�WR�2Ȕψ�Y$��������jc�M%�i��wβ�?��č���|�6�dI{]����
�_Y��?�j}�����g��3�(��#۱��Bt&<[�=_�g�V�p���ѳ�]{��5�E��&+r��n��J�� �=\����?��g��B�i�'�L�v���d�� q��K�ɲ�^#����}����?BJ4��_njA�yE��O4ѳ�`$�����M��-�/�J����C��2=���L�Y�Yr
����y��)޵���_zW�F�)^��L��e=f�����6�e��0�Y+Q���۟���NC>�u$�$��EIa,���rHa���|M�y׮�~����/>,]�tt[�x�O�U���܇����Ϙn7��8����_�/���2�Laˤ:;uv�"th���׽˼�Kyi��Q������^�C�poa������ӭ�>�����wiԺa��/;�q�k�{�{K_#�it�~�\�dT%9o@D��u��׷*�I��w�ԧ���s�U�:��D��dΔ����X2,��K׾�!/���йm�cq�0	����J2w�o"3�G��~���#�iI\�X�J�'z(��i��ܤ��(	q�N҇¾0�ɂ<���I�x��z�O�n�;e�&:h��#+�%���
�-?t�k�u��k����]ʺ�E�/��������ϠP�lׁͫp��?Z�6'�j���{�s#2�^V*.�H_�{W�|�W^Kh�7���h�Q�@�Âx�D�5�U�Ƿ�������˻��i���UG��jU�cc|�ޠ�A�����ݱ����{/���Hn=ק4���R�����+�h�q8_��ǩGMܧ�{t���.���K���޵��K��v�f8��]#D�����T�ԣ>�ɧ��q\�%z���K���Œ,�z�Qh9b�OО]�N�*y<{ئ���={��X�Wo��z�gI�ę1�<��6S��Ȁ��٣&r��ݱ�=���|������J��W���<����u��T����mܯG]�[�{[���_��{�hb+Q\[�,��E�R%��>�D���>��œ|��b+���[�����7~~�J�=Ch
�A�+U�8��M=�=�Ǟ�8.������_糨k�����:��s��|��_��=����a2�HO	��\�?��x�f�������-~o���-҃	/���m��?\o�Kl?>4�:F�e�zF��4<�ӽ=>�O'q;hK
(�Ѹ�]��!�S�+��M���H��)C[�3F�m]�_���'��3�'(�3%(�&q'�}�tq����ћ޳Yb�VRK�ޯ�6KW}��O��-kf��Z?.�|��[�z�{����d=7z�V%M.	(I�왠�9�~��w�M����8.������3���z��Q�r7�>����_�gv<���5�˃�՛^ݼb�x2��L�?I�Q�z��ާu�%��r��}��q���z�������M����w���{����z��=F���Kr�cb��q\�<��~���"�Xu]O��t:ּy16*cLG2�u�$^<y?w�T�#��7��+�8���%zDY'��h��0�/���i�J�ͣ6�����G�~;�"�-��<�XPK0"���$��C��gQ��.�?.��N��Rdx��)����@��A#��@�z�a�2Ēv�a}�O?_�����a��#t�����9��B^b ؆��F���;߂ӯ!��ゾ4��k]!��4⛛$�����v��xK��{�<�3i���[�z吼� �Sb� �����_l�09�L#��4��yC՘bWs��8�{��5�Y~��q��zs}��ů���o����!����x��f�A8 ��vy��W�T���*�����)iM}ם#���s  ���s���v��3��>�!1�o+�>�S�9AFX�q�@�et���C��7gB��E\6Z��R��v��n�,�E����+uÖ��h�u*��cV60��N���VO>��6U$��/�c��j�$:6<V��^d�S�#:�AR�^&�ԙ@�V��m��j�U6�EIf��O
�9��_�jN�h���̲�C/�;�e#I�΄(4�}��>���e*�1~�.E�)F?�D������[�|&�rl��&�"����s]���S���m��F"�դ,HY8�VRK�g�V�T�U�`��cb
h���แYm��:	���+#��Ͽ��?m�3AAM?S�F��d����M��R6�����Ϊ�;���6�<|��]�@���gv҄-m׾	{�gĞ�
���6Y%�6k��v�'ɥ]Kh�&�|�?��]�pxk��P����3�Y֢r��ٳt�����c'�
] hQ}�7�b?;�8��R����L܏�Ѹ���ca�4}�����x^e�OS��*�p�m��uątu,7f!؊�lԐ��^堡{�E3���dj֕�1�6���g\Q����1*�@&�`��71x�Q��[�M�nv���;�
�n���\er�v��u�iM�g_wZA"�u6�s���aQqcaY�-��ٹn[�5��P��2�R�)n�%�q������)��N�۳y�rյ�o,]���:�:���q�Dc�f2�2��`	+�L\��t�V��um��o�
y�p�Sѕ��T]mH�F{x4��Q�Y������P_��$�툛�&ݣ0.hB���Mgo��R�c��>F�8�Ӣ`Cj?b�/�@Y���9߰�!6�a��{P6���G��i�
\�n���Q�7��Q?#\�n�=o�/(Y�b��]1�Y*u���`�&��N8�x�q�,�.;���鈦K�:�x]�N@��/\Mq�h�:'�,��kBS�Ab�*�Z� �vf���IU�q���7��ډR.�W�c����uK1���־��y�$U��w����y5�4T������k�l̪��tx�U��8����!ȯR�Q�:|����`��t����^:������7��
$!���L�k/t#����m^\Y���Y����˹1<��?�������m[W��\�����J:���\�����i��Nz�&^�_��������tX�0a�O�8�H7SZ��9"V>6�*|�y�.9F�A�Vda�LS�v���*J&�{Z�QuB�^D����A���?}3W�.KOd�����F��c�1�_�bK])`�}���O&|�v�a�(�L��c:CJR��mh],h�dҺ��]ĚT�Ĕ,�h,�@�7��!C��Z���%�}q@p�z��L�[iS��(��:k	x#>��7�����м��nG+��ѐ8�9!
�-���	�}Nn�S������d^x�~��+82�������3hxU|�m*����A�;�j�-hΜ4
P�_�%S6��b�̾i�D�`���L�ܪ߸�6���!k�o�"yۧ�&��z�r>��P"C^�~.w�a�o�/��%�dž9WWwWnо%�e�{K�Be�"�@���p�n���t򫠼�2]!bC�����\��7h�A�vSi|�S�#��W1�[Hc�L.�_���؇Èbwvmw���9��S�c/U�����;i�o7	J�f����F����!�?��:��]ʓ�ͯ�?.E��Mz��V}2��ɕ�#x1�,�\�S[�Y)��Ŗ$@�	0+�~�S�#�n�g�E|��nά]���Y����EY����]ux��KO���=R7�|�&1nM%R����v���k&߈�0���hf�����h?n�/�>ʖ4�!AyF���E���d&!���$61X[�R��kgn��׎�Gç"I'L�q�����%�?�V����]T�p��?Q��
�i�L�S�d�F�qѭ����չ>$�,T��~oq/r]-QB
V�K!����}��<��ݣ�,��H��K�M�0rA��Z��]a��Eer��*ţ��h�ChE��kC�`{}��(~��jN ���7�Y�TC!T�иު�ZC��Ŵ�!����q�*S<�d��1��M��4�x([(�T)�B���T�kN�f�`��g���r�G'��BC�왐,ߦ���x4��荃;9sX�Wu���g\��?�s\����1������)d/�ɥ?�Ȭ{��H�JB0����	����sE{�X�W�m�Ld�mel<�kJ	����Y	+KJ�I�6���M�֋��H�{���3��(��;��/^$��o�%�{���Kz���P.�A�)��bF����"�H�d��6�Y��1Sz�n7���T}�;�X0+���9y�$��:����K�lM}܄��S���	���{�d�u$Yp~V�+!��zB�^�OjpEj�MSU����f�''���2)I�,�q~�i�&���|@W�2��D�|��.@�j�>놎�m��q�]�-\-i���pZ�2+�W!���=�h(��n�*�tM3	�)�Fs�{���r�����7;$I�Bٰc����Wu�ν_�d*n�]ޱj_��MK�q�R�@j�i�K��/X�դ_H��ucpS6���[Θ��J�r�R��P�� 4Um{�8"(�hq(+<2�=˰ٺ��:
Q�Hseie*L�&%�&n3�U����;�
(Z�@�]�p���2�l�()%KР�o�Z8�֕����,�E��ʦWf��!�}
`�(+	�H<?<�XN��MV<Z%��OC��.@��RG����}���!g�֋�TݾPy|t��l�J=n��2}�w�Q�bȲ书�ލ�R�u�n�'�v��8�$$�Ț�v*l���c��N:z0�o���F���yQ7�����Fɭ�{:��e�z�Y�"w�A�1o���͖h)wm}a�$�J�.�_��a�ʭv�3�K�
�A���	��(Q,ѱV!G��H��MKq����5�����X$|�G�<�_���_��"���w�W����r�U2W�ӕ��CX:���mˬ�3['iF��EU�Q�ܴ�r�yR��҄�Z�4�uYY
��ʯ�|��k�9�����t�!�2?b��	(d�E4E�֠�']h��Ѩ=�[��R4Kl�����Tb=�/u���?|���)?��N;)�0nP�m���R�o�ԁ���y�xjZ��I�_ޕQ��a#O�tt���1᪕M9����A���z�'j�h�3DxV�$�a�/�O�EH}e�"c-��Z#�
�
t�h,Ӏ#�H�/l�nK�f�#Њֈ�=��q�Z����UK�V������-�Z�f�A2��@�>E?-�"1�Vv`�Yc�7�r�9��үeq��<R)w|�33�|��
���@��U_’"�GC��sI������J_z��v�Ծ��^�K��6��չ`d��{�y��Z#*�A%�0w��3�
ɦMȾZX��W����e�c�U[|]Y.DӘ���4U�4q?��Aӊ!R���'�n�8�֓�QD{�s�`�2�ITG�*��x�:WmӨ�Ex8�Ś�s�QnU�BTs<�5�����t��)�Jz6B��$D�&�AAk���=�;Y`������	�����&�Q�-*�пh��.7p�W�9�xβ��Q�C?�!��B��4�M�(i1pw�K¸ܐ��<��4\��+-���pΪ��s���˥z)��<'*�ܡ��+�=�[��C4I�G�`���
��cF��2>��<1�}�~��*t5ӆd��0�%Ȕό�"�}���X(v�Y�O� @ei{����"�;�|MP��6V����'�,e�!�#猪�)��V	Q��h�aX��Ҁ^�&5$Z�/TS���,^�M C5��c8`�("�x���		W	�69�K:+t]D�����e�>d�Na��C4)z��@Ȁ[ �5^9EE�YO?�}���8lUo����dˢ.E�p�c�B�Z���ڛg��z�𸉊���P\6�x���Rk�"&j����^Kt�h5]ٳM�R�[��H�3Y)�����s*��Ͽ$�8jҡ�MQV!%.Is�$�@�T�-N���)�-����#�:z�{�C�o�9��%n�G��C�ώ?b>�8p�W\q�yv��4*[sGz�loA5ݻ�@r@ep���*�	�� 
�S�3����KL��*z�҃�R#��4@�<�n�0�8�4a�R��w�<�u�O��}�:]i(�DR�81��_mm�ҥ.Yk�Q8�K�y�	�J��bzB�3036Վd(�2U
-H�bk��X�Ni/-Z��Hwv��d#h����[������<ܼ'J�@��>/A���؋��6/��ib|���U�K�(�����{�W}c;�4Sج}��d/lU��C�^�]�lC�Q=}�K0��,�i1�=DA+T(4y|)�.�~LBز��!e�4���g���@k}�r�H|gQ�Aԍ�����-��,�c�m��}�u�A�.��ZӚ�-۳.�t���9��+�O�(s���:��o�_��*p�޾��g��د^�l���ʀ�C����器[��@���}�u�:V��od'�P��Q���]-rDf���$�sE%�-"z.B�_�'OJ�u�ӵ(2{��$aU8�A��~=���1J�ѯI����l���V"�1On�S.}V�eȅ�sϽ���0��WO߽q}b|�.L��
]�������\��[�U	�PL���k���l��]��U�����Ÿ��1����jl����a��V�9�'ɛ��B�Y[?XnM�ɋ�6��I!M�����؈��B��� '��t�b,E��*#=�U��){1�1bD2a��rҺ�}����]
�:�!�#�R����7��
�����ì{�������6k���!�˥P�C��7ȥ�=>�G~�H*|���W�4m�mFV�(Cq�y2ͶU��%��pHs<�0˽'T:$+��\���֕�,����K:����.ڀgI�w�������ġ�
�JRQy(�j�O��>n�]s!��&��]4u÷3���'QK=K��c��c�q�r���c�����l=����6s��sF�@�	A`��zE����7��D��ڱ.4[L�i=4���Rhg�Gw+�R�uL��3h�m���Ț�e�*��_U
���Q�n�~���f��E�r��Ug��E��L@�4i�-g?�l�%��[�n�8-M�R:�>q}��1�ڥE~�N�a :��9��m'��+�iuc�3qO#�^զ�@�
rźڶ�a��$�e;)0Hw}i:cр}(�qF?}���J��+�=c���@>�qߵx��Ĺ�"V�N���!�`/6)Q1�Md,+�i��O���FWX�d�hr�ݬsG������X�-�Ch���#n�M$��ʞ��[��f���;�y�(���������0��hJ�,,�nz>�n:rp�1~�z�O����ת�Y!:i9s�����3g�b;s螔��† �+
�t��+(��T�VЊH��*���&h��N�T���`���9Hf�9J��_�^=:�(
?���Ra�<Z�	]j5�Ա���m��]Hv�L*>z� 3�U*Kj��1Q@a�,�2�� cz�&�{�F�u���I�q�"����w[���Q�Ϟ�n�a��ލ �C:�ح�,�]��p��-��e%Ɨ�,�f�ׂ�"�+}<�sdZ�Co�����}W��M�u��kWr�@ki(Y풣+]KWV���x��%J��y�ڭ����骩�؃�/������sU��[�/K�L]3WiduO��U��ay��+�4!!����_�̞��:2���^�1i<5����'��`ܠ܄z���#l%�,ZU���[�E�=�y�5��{�P�XQ\�pM$-��P֤C�$@Y�������m������7�,&�9��O�I^�t��4z�ã�}U�Ԏ��j�HQ%:zM��B�
����D��9��&bgMR��R�d2��z���FD}�V�gDv�{��=�������S�f-)�{�����E�*�c�h���E:)��unw1���?�Ι���c�Øm
-"_�t�3���<m����_�:�s��?�#r
�\���Ծ�����p{�4�,I2]����ɾ�Z�nphQGEv��gEF5���ൿ��0��T2���3���+)�Hp��d����\㛸��|���o�p�}�@�[��6�v�Y�0/�o�a��1��]�k�*0�$��5w?����Nn�(;T�5��Ew�V��Szޔ�vT;��J�M������\����V���#�g;Z~r�B��>nM�V?��Pr�A�<ƮYv�(&��t��<���T{p}��P6E�(��:Țz��'�+욢���Zd܎R%_?�z�t�E�x��h�D����$S�M)RQ6]���F��d���q����n�WC�c`ݛ�;�ig��*��[���Q��k/�|�yo�moN\�5[I�S�Z�9��l�9��uUǺ*�4��|�}��M��\�'�l�e�S�2;�uTLh_)%W�ök�3��*Y��P���\�R�	#v`�D��kr�(A��A}�y��7d��|c�R�I�êE�d����e�G"�uU���Cë‹?~H'��?�K����W�ɳy��5Uú��5��,}��}�hM1z
�T��[�>bQ�0�RIVY>��N�iV�
��~~��e�F�.��;-�y�%Ҽ\8]�nq\��n��6�uUL������Bޫ�!5��jL�)���]őrT�=�BWe��8H��������oy�2Iov�Z>�%o�~�D��Ш�t��L����=b�r���^ʴ����4�C��Ql��Y�Z�-Ϋ�P wE�y�O��
�Eme`��2Sg�8�l���G:�B�^\Un��*�v9sf[s*sk�6U��G^J��d��5�7���B��n���i�J'�S�ws�/k=�_�X�u�Hs�`�IJ�w�p��)*g��PR�^z�Z;�J-*�T�����u=bͬ��9��^�v�]��ˀ`1^�:�����:�Y��׮�̙7���:��qC�hZ�No9cو����bQ�'�-�ca�Zk�����C�vmNNU�hŵ�Drcc��b�5ծŀn��^A�uf��k�w�����$59VV?�ksl*9���.<���XJ�,Ըy��}a�����رn���F�C����Z�o�u��׭��C4��ce\[���o����34�����.8��O�T<0q*i��=�ꬂ�{�,,J?7e�qmO�+O�z������Bd�&�)�`�c�Z������fA�􍶔K�T��߾G@f/EF��E˯��-�{����G�V��“2�M�y|����A���k�F�g�����ǖ�b����G}f�x�ɜ�vۖc�b+U:6<���+��Pm�^;[*���k��1Xj��vǼ�w��UQ�=�a��"Me�cz�l�+���>�7{Z�yr���,Y��.oV1
=�,G�ĸGOP��m�ܸR{�#��\�O���8o��_��gb�4x{DeMM�&�T���c��NC*ss�P/k��(�فr
����4Y�1޸sS�<�<�UҦ�����E�=zfYHe�����s�F���#��$�\��r��	�{�܂D~�~��9��0�D�͞�����N�[uy�lܝܠ�=��G��ڬeg���Y$
G���H���\�� �X��5�*�*���Maә���G]c�"�E�>�f�	����D�P��II/�K4���f�JԿcytK��D=T�9�.R{}ҏ��`q�ycG�^�Zٚq�Ģʂ~L�8�ih�8�kg⓪��kWܧ��(�o���>��W뫎��u��kccuu�B�?��Xa���9�jh�@�M�t��8�ߕ4P��BCU��p���*�󛐩j)w��m���-c�JM���JI*&��^�T����J���_4XD�N���e/�)�&R�}8�Z
T�tQé}H�ô4�sv�4RO]�g����qSVM��_��]��
G������*r����p�O͢��3?�����M{Es�Kd1���*�}�*q��;�(�r����DE`#���C��)�@ۑ^�k����F���JԂ;S)a(~�k*%�Ƃ�N#(Z߿:�ʹ2����AZ��3��L!2j	�^�
���vxM������5Cd��d��iG���Ŧ�b^PQ{������m�}��XU�,�>UV�[�$��s��I�c^���Uy�{�~S{įH�8k;�y�7�B���J- N��4���Ǧ�Z������z�*¿uB;ZX-�t|�c�Y�լ�q��.h�!�RoޕG����
GHn��6Į��[��]c����ֈ�C����5�B]�Ӕ9��nAxQ���]�K��N����S$�dmiG�i+,vG��@����L��0��OXHl?�چ�颶
�\_3)i��@R�Qť4�b���W��X�,*�<٪���P������j���Ua�d>�aiF�F�-�~������z�2i��9��\S)�˦�/�]%�L�2�x���%�r!&��0���n�3J�9-`c6&M7�FM�iD��\��NkgݝN*tq)�A��>!�0��m�8n����=��Ry���ĭ'�/���Y�+#�ev��V��O�adA����X.��X�1`�j.^�4����0� �eT�n(��"��x��E|�1�rQ�Z}Mf巟�,�D�K���*�S�Ky<�e���
��ڎ��ѿ�
�e1��zd���pk��kc\T�����������[��M–5S7��~M�
�ۥ횎˙FU(&���ZƖ�4�3P���(n�̤�n3�]���{�k�Y���p���:Z�sd�	���+w�q�B=%]5�V:�v�b��.��U6��m@�?A��c��MQ�2��$k�gc1/��\�5�<�kl����G��="�y��(�~1Zq��F��3iNm� �y��B���͞�C<��d���5�һȥ��ǰX2Esi����ﲅ�k�I���#u/��8��)l]�YxT$���/>\�e�P{�#�~��$��A���.��}ܥ.�,<ۖ9����^f�Q7��d.Ԓ�Į�:�%��2ȟ���|�!V�fV}c䏋����jO��]�7���U��Σ�H*�Pq?�]���sν.����?=�l��N���<ēb�S��{U�Ϟ��z�tțk���	�7eKt�dj�WJGU#��j�N��K�1&>
J���rt�Ս_;ҏM�w���(I�>��ro����/���Y���#��p�	uڇ�4�edD7�Be�F{
��)#U�2�x�L7z�x��?�_3��~��PX������N�c�T�]%'����#G%?GXpP:$�j��₂c�V[�WU�be��T1RE�lZ{۵uZq6Ok�Mk٦�lӚnӪ��i��5����nM�wM�����*69���ī�[Tf�Fj]���]�>"�@�����<]��0�'i�ݶ��m�mK�nKoɇ&���^�Wz��Q�� \I�Τ���D��
�W�W���3���+ ;*�U��HU��+s�~Ty��d�]��}�I��4y�ӕ��Q�R��J���N�%a�k�2�ٕ�*�c,mWu�*��ˊ�\�$��N�2ba\�gIJO�O+|�s��Sttx�m���v��SL�׉�k���%�!�׹L�
%Dh*5�YJ�+��9�noж7h���(�~��g�͐�z�=�BV��Cr�Ie�w���78��`
Ɲ˿f@}��H�}ea
�����S(^R������Ȳ{hs)'.<�UewT�	2?Z�N�
��
�
���Fw�ז*�&�S��[&�^o�x��|y8OV!Ť\��1-A�L��k�[������/����,�q��m�{
��P�F�\4/��F�}��!��ˉ�a+�(&��Fǐfz�|,z������g�nP۶�v��A(�G�1�M�8����XTW���z㱮��6�e|gU�d�be��Sxx��q�cQ]m���Y�g��ZZ�IӘT�=���>�qq���Z��[$�����-gyZ�����]�(�G�2I^+�c���c������Z8ԧۥ�Inm��U4Q������3Ny:͕�Em���N�����L=S�_�YmM"#Qz��e��k#�z�L,:��� �'1�.�G���#����3��������,�������&�E���%��e�-.�����d�Y~�ӻ'��<ݝڱ��ړ���;�
��Sz���7+���BL�gӀ�z�}��.�D��~Ƴ����a�;�~?7�%���à���Wv#������Y.j��:�e9��W�R�ТgF@h�<6>���k�=������~q���8Y\������!�~t�Ns�l|,�����>��7iz>��,9�6��$1Q=S@��-���,���=Z�w���}3ҋ�)yR�ެ��Qp�~��LY^y���+����Ͳ{���'U'4�	�K�0�z�h=3�YDsD�,|l�,���>�7{����[��^݊����:Xf?U�͢gF4�h�h���%��ʠ�=}D�2��.��K.�ݺ{�k�#�E�X��gf,���6����2�7�I%'�C�+��ن�+(��UJ�Щ�)�EόX��,�B\������Cu&�X���E����r�ꙂY��f)TΏ`���u7Gw�̢�>�7{���S$��Kyn���i�W?TO@��qܫ�d4Kz�l��L�iF4�6��W���Ł�E=�٠2n��R��O��qRr$�o�o�^,A!a=�eMę�夬�tjG�˚Y��q"4J��j�W�^h����[��dQOP�?�&,IK��X�I���}t
=�E��?/�������kNԻ�lMb��n{�x�u����a�>M����S~�l��G������*��߀��=�e����0�),$�v����1��<R8�ըJNuq�H��!��w��Ǐ�5��M�[�TRH�"�M�q,��TU�Umd=�3�]�ԍ�E'R�5餘�d��t(C%�{	'����dRI%���2���gR��H%�����6j�}D��4��� �4R�H2i���U)��(y�~z�ھ�L���E#�Q{�#*n��'(�$J�4&����J�b���85^�X��,�+�Fj���X&�Ȕ"�~P���PZ�II2�)`0�B<�����1���颷��@LEz��P��>JYR���&�>*��E��c���(�HN�l��/�`�
����BJIP&�̒2tGJ�2tKJ�2飒��l��҉;k��v(�ԃ?���X/~v�#˩r�W���<��0.ݒR�L��_y(��/��dú+Zw ��Ң��h�����BJՒ�����z<K��G0̠�����Ǖ��-��4���W�~��Dn�����o�W�פ�Z��3�LZ��$�ʃ�_!��|�Rzf(�Ds(�6&��P�dp�_?e*bg�두:�s/����I?4Rzfh�Dsh�66лQ{��I%�����J��Ig��l7U=���a��*)=3TR�9TR��Q{�#~��~��<��šó���+���P%��#u����Jj�c�6j�}D�AE�R�<.�nSI%Ge>���3���TR�Y.����"�&�U��RꙴRv�;�[X;^��J�������Z)=3�R�9�R�Zj����G�fOQ1S@J_F�S���CW@(?ڬ��C)%�C)�p�)�Vb�m�o�$��.��~�TRv�~Pr�E���4R �/���Ģ��h����p�

Q!ewݵ��J�@Or��/�BJ���
����:+���2����R���B*Ղ
)�L
)=3R�9R�\�����ٓ��"���#�T
M�R�Rzf(�Ds(�6>֭l�ʬ�RϤ���¢-�'�G)�R�&
)�L
)=�R"9R�Bj#����"Y�6)�2z�
)�\
)=�R�84R뽲�z��}�g�ȏ���a�H�g�H%�)�����r����t��z&�z���4etX�J
�Sۤ��#C%%�C'����Vb�}<�O]ߓH.u�&$�'\�0u
�`�k͜XL]E�_+�Nj����G�^`{}�J�K�2��	̺�>Ɵ��3��1�O>c�׼�1E����n;��<zvt�7~�x&�� ���N�Ճȓ[�J�3ťMe�U�qD���5���ߋ�*����.�D:%�,�MO��>�R�<'ki�ۏm@e����EA5���qE�K�4bɥf��%C{`zD��C�>�~l�/b�ȋB�~H��;�G�ZݫT�8��-s�3��f�M��+���2��g���Es�`�Cm��_�p�r$���W��R<M��1;a�<Ytn<c����k�c�Em��_���3��ѩ��?����SI���h�����,a=b�zwQ�Hl�vt�]ʨK�G#�����׿��h
O�I1�#<=�6�v�X����Ǣ�Z��.e�k��)��+�/wE��S]��4>������B}O�+��{(���t��SJ���rO��1�� q��׮�T�CH�
�	ɍ���~������^���E4��{�~,���E>0�9�ʔöÝt�7��n�9�(V"�mo�:��(/u���p����������8�."l�_���;�|�b<LX�m���Ճ:'׬4 �}�Ts��gE��uw����_��e�,�JY��۞�ܐƿi�{�fV~��p=㲞AOP�r��A{ɀc4�Rn�z�5����� 
Њ�p�MԽ���
��3�".1��F�bgX+�iX�M�6�1Qc�0�l�+k
ڥ'TW�+0�Ղ	��5�]�5+�ݡ�LL]�|���h�2`���):԰S��
�rh��:�!��:��H��e�o��:��g�֎��W��'�{���M�+uN�8/���� 
P�RЀ�#O��?�h'?`�k��e�{|�g�6`�����ł4@,OH�։��B��J�s��\��4�N�
nd1�oPv�
���,Tn����1�g���g�^�\hW?@�G��%N˽D���Z�srR��Y�Xp�B��w��ׂ^À
��__�����P�u�?#��W���PT�آ�v��_�8��}=r��N���� �������Z�#DLc��Ƚ���IS�[g�zf��6���9���3��V�~��kgc����_����)�( ��\g����l"��w�ad<a=��:Ak��{�aV�m��_�h��‹��tD�UA��	�4.���v"�D@���>�V5�J+��i<Qo�x��vMl�0���f�V�aI:Ӳ�(Փ��qzE0�jzZ��w�p�32-8$F�<6��ۦ�38d�P�=N�̷*�m ꙏau���k�I-�G�`D�WMu��}�e`���B`u^'e��9B�i|����
�6h�������J��i<n��B�豫��xp���hW��&�=v�8�$�9B�BMk�0X��M7;���>"��o�=��������2
#��(
|ⰴ/l{oeb�}m�t&�6�3� ���S�gV4�I���9�m�8b�����#�5���(�^�%�1��(��Kc;�m�v��,�GD�LQ��Eܶ���q^-L��p����F�f�� ��
��A�:U�Y�i��3�=ع�ؕ�_�>�yz����9���Y�D6�_l8=�rg-�"J	�Dd��A�ř3�o�!�W��W�F��G�V��Jbz6{��й���]�P�o���v�E���`AP�æ��A�*���M��ʶ��P=��.b=c���$���M�R{�#�~�$b�����l�8��=��t�����4���X��Lm��ƈ�|�+5�ɍҗl��V��4�$�ʉ��E$�N���f��F��������_�����e����̻�j���d�F����J�w���݆�20����j��G��K��pQ�<��Y�wӖ�*(Oh=�ORc��Ka踵Q�k���뷭u�p�+������ֆ"ō��Ln�b��i�K�4����)�&j��i�44J�՝ͬ��h�Ù<�~~��(�4�;Ņ��M%��z���T:��B��T~JmiM'S[��`?u�O�4�^�"��ڹ�i�&b�}�o��dQj�Ҧ��Ѻއ���9�'�:IkY}666�}|E�=zҕ�N3�
e)m��4�L
�Y��f1sD����''
E��$P˲�馲d	P{��t%���x@���oUbKhu���p�Jh�}�ී�'��\��TS3���6�7UCY�9�=�2�ZZ�^t=��z��h 4�74ƢM���Ŧ�Z�����gJ*iì�����"�_� �O+�&�̮�uA���+�zϷ� �Y,TET���s�M�����S�������zR�.I�%�'�-�ݘ���q"w3G�����3���&�?�SZ�$��zʍi��~R9�R6yO�9PZ��)����=L"����"������'��4T>��@�o*�_U�%*oBa3��	��#s��o�6ҫ���E�بIC5�(�W�o���Ic�̣�<�xU�,"�]�d.��#j�MIk� ����y���W'���IhS/�����O�r��	kE�0��$؂X�ĤC�i�nou��*Z�2	D�lC��F��e����X�k�*n���o�
�Ԡ%�Yq�	�6:���K�$5g[�1��Ț�6����㻓��*�>�"$H:���� �LuHH��d(�_B��= ��CGa�v��
��-��"�1���r�7Ud������%4J�=O@s�}A��x�X0���t8��AE2(��>f��p"F���_d�FSŮ$+lC'�S%�^o���+x��L��;�\�X��J��u^�=T3$.Y*���
l{��`f�7{�����Apcbݼ3���f���:/1�j]�$]���G�K��O,g�q�Ercc=�Vb���<�oR�8�i�ʪm���خ�X�g��:M��X�x,}h�D/I�B�b�ʯP��l��#�#\ױ��o�L�h��8��|5?�I��Lﮞ*�xl2
�Q+��t���ԟ�L�hn|��&�1�tC��/
$������Tb8F������n\�#���"�����ĺ����=֦tBF��4YTg&]����!|G��X�z��O�^�9W/����ϒ>K}����o�_��i��MNSUx�B]�6�	\$����ӕH�#/�\�F^���~���e��H�^�m����C�\:3"E����5w�_�t�?����4��0����Ÿ�����нЭOD�Y ?G�KZ�L��I#�?ӕ[���k�cC����>�z��Y:���2#��At���;�>��߫��/����kQ�[Gڕ88���]�6��~u(k�X:�R�����u�[L|��O�rw[#
ΙG6
Ǚ��]C��N�]F���#E����/�df|�\lp"��Rp �*3��D�1��Y�A!f�Idc�!��0۫�İ8�g6Ž�'j��-�c�M�b N%I�aَ��#3
��53	���I�8̝�
�')%��{&[w�d�/Z�	��dX�W��,X}H�%�T>�C1E�Gb�Ll�!���jO�t����;�B٭�j^��)4���QJ�=s�b�a�mRvROP�=PB�c�X�;�nL.�c�^�>v
MA�Y��n�É��#�������ɂ ��B�[d��=i��#IE�;Ť"�7�?h��_Y,�@�B����/�|H�v�����L>"�� ɬ�+~���h����:Z�eA��_Tc񫫙=Wf��`v�=s��c�ޣg2y��o����[K������\�+$͡o���p?��v��|�P]Oojj�����'zf'�0W��{o(}P�\#�����E�{�Y��d�ݬ���a���T�r����Yxr�\
��t-�����@c�l���P{�A��Oݳԍ)��\A)��E{$��,L�J/Z�}��Pٓ�b�lN���Z�_��z���i<3l"9��7�҉���u�O�q������RPi������2z�[��i��!@�vn���".s�4��сI���ٮ2�&j�|_���#ź��a��V������ӈ2w;ٻ����r?EޱV�u�לF�T�S�d?aR5��؜Kj�}D��,�I��ghC/��{�R��Y�#�5"�����.�d3������t�7dM�A�e/�r�����E�P,c&�As�cs/]����e�΅cˏd�d*gd�#��,��tY��]���3�> �Â0�s�0]�����㡓�Σ�ҋ�5��)�H��n��M��g�cշ)��7>6ӉO�y����tEt��|?��#גW���rW����g��@4�A�nn��r#V�b��0{���߫q�=Q��rLm�
6��#����D�7��$}8��fJ�=hq)&c���Cĝ��!w�~�<
_�
�2z� ��m�$��c����8��&
�#{}�0���H)m���`�O��av@���۴�b/��8:\�~
���!�4qc��ta�tU?��u�
�7_Ӊ�”�j\�s
d�OPf�k6���г�gwW�giw.n���g�8���(jN�8L}�4�z��}<BC@$�W�{�^����j��a]q�
�v�7m�9�k�>
���t���g53qE�So�z���?�w-IvЈ
����-+���K�v:F0u�\�,j=-]='
��}ƿ"Rf������Y��4,Ñ90^�YJ9��{�=���?EKV�{琧���+ff7ď,	����T�����tXf�:͕�8�L)Yn.hՓ���Ut��4����D��Փ �'��C���i\�`T�T:�����5Ҟ1� l,١~`֠�I�o�דL��"��Ɉ���$Ҵ�v�#}rGO��
fEΟz�q��w�S��/����b	�C�ZS�գ��}=u�O�+�"^-6U�:ig�����FO�)�Տ=�f��־��F6�ҽg<�_�D'�|��O�SOEN��<8���|Z���h����5^�_X\���Aajr���s�^0�J�ԓk#���8���z�3���x�z�{f/Q
��c�k�����OL*A�<�?���D3�g����ϋ���>��y��Q]�cE��I��g<֝�ԣ�m��9ˁ4�8s�b�cu�g�=�
/@��P��?������3��c�9�w��E�>�\Sf�㤸�Lg���;M<VK7gk3[��S�%��u_�~��q_=<���I�Q<���<�/�8�/
8������1���qm�_���w�8�k5an��ZM���<��\����y<z�ʬPs�O=�8��.p��c<g���Z�ha>YG�X��{ϴZMvu:��E��P=�1���ǎ���3�������>�3��-w}���$q|�ݸ�F�>��y�Ԕ_3$ՍI��d�5Ld1�e��Ы�gh��V�鎃���!�%=��!z��!:z��T���[��R��sʹq�꧞��(��y���蹾@��3-Mg��)w$�5�>�������{�86��<�߽g���O��� ug'rD��wž�E؎�-��#�$���b�N����z*#��C��4F��3-^g��J�@X���-E%|]���l�]�lØS�0�\��ʓ��庆����������ްsq�e�������gz*"��C�F_zȟ�Ʋ���ʾ�/h��qzj�r(�
�8�?/ή���s��S��i��o�������୏��gz=�
�����T�
��Ҕ��z�#��#L4HZ5)75�AșK��{��A)v�=%&�=燶�́%�O�X,�F�TS�F;^��*��\��Fb�D��C��3�z4������'�-����l�M8XgP�j�͗
�L���g>�B�&w���t�A�
/��`᙮�h�3���0կ��WP���C��4/	i�:$&�_�m
L����5�"r�ƾ�
�:�q]��{�|6ƀ��i7Ƃ4����R��
���jw�<z��Gp��>���ǐ����1�iI�(�H������k��S����91)A�?M��Z]@���@b�O=�\O�z.���zƌ����Ƽ��Ig��_m���3�S���4������5Sc�ls��L�y-�T��ozN=�[���~��M�*��S�439o��L��r�;үΈ'gz�]/b�W\& W�}��)�rs��aUr��
X��"n�����{�FcZ5�{f����.[
�G�*�f�\|X���皈ܐ�d�LKW�\����[��*�h��1�DŽ�|sNH���
�X�@c�h[�)�등���ރ��+JZ���R=���#^g~��g�
��_�(���n���B�)퐝�6|��sm�{ڽ�Z��{�uXf+�c�8t���=��,�[���u�����L�"�q�m��2]��)�E�{�i��U�=׮��}z����ݧ�����o,�ѣE�� �K�Y|v�U3��In�!H�j�Ǣ�=o
6�O=��os��{�w���d���zk�0/��s��Խg�v�Vݖ�9�Dp;���i�
5\�f�,�t��kơو���iZ	h�tf��83{�`��˧��3�:�0�y?3�]�3'�|fZ���٠8gf�������gf�NHL�Ǟ����@���������O�ۛj"̿(Ǐ��S�/��3Nȓ��~�����ʧ�q���=cS��?��ezqx�����Ss̃��1S��s9~���y5���|2��.���#F�O?&C�w��cb�!��b�f�p1қ#�v�;(S�{��?��[s�}@!�[�d��.�GjZ��G��4A��]a*�k}��%\=�4>T�r}��X��g�i�j�}��\�ș�]��3=��g:~��|�r���=�n�O�{���{'4ft�hF���M�e�K�|�n��~�+��>��}ͧz��m���=�>@��ZR��{�<#4>����z��>z��0��<]���*�ͳ6�h�M�}f�gL�%{�TݏE�<z.�-�=��=c�S��k2��z�O���:���y��9�%{���S��ր��Y��5S�<�掵���a��|�l^���,�*�=�zKj�7i=�'@��P��J��C*c���\0U���E���,6� +Rr&��?T
1���
�8!�W�&�O��n|�C�N�b䣝��Đ�N%��l	�Y���bd���MM`.��@���V�/�O�8�
gYc�(1{H&}�g��76��X��A��hN�S�T���G䷑�!�e�<���$�4�8��>0�<��/��80z�Š�'�c7&�9{�C�˩$�s�}���	��̄Jer.��8t��i0�ӯ�1qՑ�$�yҜ�9�AL�wP��u��L8w+����iP��#/C^,h�>I�pь!K�S�z����6�`#;�E������&³�>�N��)��9��VNI��JE>�N�wYi,fF����@b��l�5�-n�wV��`��d��&'�`�suN����q9�|��.���x�����
��A�wyQv����h�4D�In����}��9��_03����O;h_��T�Ơ�#���ɂ�ռ��k�����_�6��=M!J�.���<�%%�(ͨ�1��>XIA��J�wy����nc=aY�4�)��[�8���̬d��~O�
�2#3���3��jl��>Ng��̰�}'���T�Α�!���g��4��/��<ε��9&��&���e�2:���VΆ2u�9����hAse}0R��������QX��V�P��LcO�G��.<m
��a�T\�_��R�m^��jC�M�H�V��l��k�`��eg0�����쯙�zv�촩(���=^Yx�6d&:ǩ�u�wΟ���8�`�d�sF���}�~�(<{,����9;T���lfr=��c}�k��F��L�7�El���P�3�8XܣQQ2�n��2ȵ��۞��D�6��-3<�#؁�Sg"�϶j�3�if�R�����mP��I1�zLt�R8{&�`��,�Z�;y�Q:'��k�,D{���Fi(3�#��i����V�&�ڇ�����e�z?s�t�T���I�p�sÜ�4�[aƁu���j�bM[l���z�S��A=X�
�ȳ���"f��"xn�>��h��7�P�q>ŢӦ�=�9@�~�_|��z>NĴ����8*
�������\��3�:�w��`���
��6\����L��+�:�;4Or�x;qE��H<�qrg���ڨ�7.0�26����r�I��o�5�2�u�,T_T�p����X�)ϻ��`lS�0�8�g��-n�B+`�c�2�h83k���v����vTr��T聇{�
�
�1i.���<�/����jB̬g+0�`={�8�4s_�������Й���T�4�V/z��f�p�&�%y�8���+��e���O5f���у�����i���_A��C�e50�}�U~�g��@�XeG��q�`��J���̭�r?[��
	b�K�A�&Z���$�������U�Wc.
�4š��`>zg��^+ᅭ0��H��0��B5?ƚ�-����L����_�;����9���>�Ц�<{�
�Z �)ڜT�\YQ��l{ʤ51�>z��`,G9������k�X���5s��d	���P
�R�o���t�*�s��� 0@	P��סt�,Q��L-�y����DTy>��ǹB9��9�o������?���z#�y�O<��,��*p�����S	�CCN�Jz_��I�.(��`E�c~�P�zؒ(va��yݟ�1���KS���nC���sf�i{Nm�HmK��OX{�
)��&̙���1�@�	��Y	�%CuA��L8��s^���`q`�T���c�=+�Y1��b��*�tC�;�"��;����fȁ���9C �yBu�{�9&JL�~8�"�Y��Ϗ�qG�R���np�B��݅�-��K%��7����$DBz�`�gJ }���ߛpb4\��0&�d�O�`�
�<+�D��)���/������g�
�Ul=�c��x6�eg��H,ÅZ�P�B���ٓ�T��*,�D_�s�֗���K��O>���*O~�P����mC���l��>.*��m}�h4
���C���38 WHQ�n��g�lK�y=�]��rX�d�H���F,)��ܗr�N��n����(�
���i�C��]0�c��d��2��-��r
&D33���e�=?u�3�7�Z~&��K(2�V��,���LH��'�Qc�p�pN�垃Y��yT�}Nf�F�SE�n0�5Q	m϶ԻF�G�Jm��e�h�P�ov��p�w����� ����CO��4�v�1G&��9L��nL8���U�d�=�����dI�����"���$�=�Jɦ����9v
a�g�9)Msh{�D�
u]һ�nu�B�+���3u[�
fu���<ڃE�ѡGF�`�W��%,Kf�,G�-���lޡ��C���U�Ҋ!ffKv
�!�FF=����4K��L0ͤ)���$���p��l6	S�xI9XH������&�3"�6��hs�xgO�gt��2�$�kY��>�]a^'R��(G��L�b<>-����]i��t��J=\�S�cՋ�P��e��)����ND�3YO�s5�N�����t�Vq��1���(�c��՛M�D��<�TCxj�p�#w^%�qmZ6IswíIůE=�l����l�H�n��������$8̃]
v�z;ĭ�ȓ�4�\\p��2
���`�*��M�A@$�p�
��-�#��o3q�D�y�6!H�A�&S�4P�"i0?	/��y��J3�y)e”�d�r���U���h�>{T ��}�l����pB����2���R��R����y3���*^�(O�(ع�ǹ���s�o-�n���T��r��#3�8��e�5�V&�>G1#w�8�/T��U��ƺy١mV�Jm��y8x�i$p���F���2-�9Džv� ���UB�Py,"K��fAO�!<��+��D�A(�G�qA:��Vw
�Yo�5m�7���%v$��<Ď���$��K\�3�<���D;V-ª�ﲢ�v�X	�jj�.C�X6H����Ҙ�[�˯�fjNH��Q����0��]��Ca.�u����NJO~���_�(�c�Z��ꇬ`�	݈H��������-Lpiɩ���8�wq���� $��?��A��P�������?��O���4mOuĩYE1�@�T[�Ϭ6�q�:`M�U�M�Jn�TfX!W�����jC�,�ia%���c+Q!��Z�7\�v�����
���ѕ�d��'{�<������U���c�z��C���Rb�8�%�a;�46{�гb�e���@������?����@��i��D��hV�V
��:��s^-8���ڕ	�ܖ����M}��f�<+�p��F��G��$T��]X Q�5	r���z:_e�π}	�����;^��8w
����T�^��rœ|A�y�L���Z���<q%Z����ƕ�c�U�聏�����@��?��������@�?�'�	���D��j"Vm�e����sކ�P�
�|X��8gR�۹8�>����c�5��Ԉ��v
o[��#����ݍ��N�-Y�z��\T���~�_���S��cr�`��/��P��E�=ctk[`����G�����c1�_�!~.0�`�^����m/�?�߷
��
���7����x���W�g�_��y��7�_V��7�?|��w7��n�?ސڐܐ��!�tC�aC�nC���
��
��
���w7�V�_w�6�_�ؿlؿ�؟����
��
��
���/7�6�_6�_n�������v�q�q�u�����Ð:�/7��6�_7�_v�_o��m�?o������������|C�������7�n��������x�y�~����
�������pC�����ˎ��7�7�n�?��Pu�n��o����?�������
���������������Ûy����
���oؿް�a��b����|��������
���߰]����
��
��
���ߑ�C�!�_V�!wC�7�_6��6��n��݀�����
��`^a��/�?T��������+��R�.��c��4$�U��*%[ۜ���B�O#`mw�J�ۜ�RŸ�'}!��[DZ�4�j�LX��D;��<xr�Yk����a3d�`�m%��nS�{B��Fs����_�q����]�#4!9J9�g���lRl����6�4-u#?���l����������?�����wB��P��T��G���/��v��A��'�/�5�5�X��HN�v���)=)8�*^Q���
���ϵ���&{���9&���_q���̟��ɳ2��hũ�`cO}?J��6r��im�#�eC7���Q�\�Y4�>F찿�|�
84��,���~>~���7?�r��ɛ�O�|���'�|���S���VGs��On��O�y�䛧O�y����O�<}����o�>���6O��y��������m�>qs�q7G���gs�񫓏ߝ|,+����7/���g���7��������||���'m>>���>>���o>>��O�\|����W�@�>{����'߼|������훟O�|���v?�zw�I��O�}��ѧ�}���6G�ps�I7G��:���y�ě�O�y����gs��7G�zs�q����}�����}���VG�ps�7G��9����'�>�ދ�Oh����\}���'�\}���'�\}����6�Ql�>����O��}���o�>���z����gw��7o�6w����������SV_C"�����'o�>������n~>���7?����ě�O��������V?��vGhYWO�y����'�<}���'�>���VO��W�zs��7W�������'�\}���'ͮ>��;{�ԛ�O�y����ǭ�>���n�>u��ٜ}��٧C���7g�&��"LY�p4�6�$��:8L��7���D��GѸ�!����;$L���
�:W��פ3�z<�������lC�5��"��Q�_z�ΟU��/n�1�����?+�*��q�X�Q���H�>�B�R��4d���h��	 B������M�_7���ۦ��?�t���οn:�z���ο�:�)��M�w�ܔ�n�����;���i��M�6�ݴ��O7�ڴ�y�����ߴ�a��M�nZ��M�7��i��M�7�����������?lj�pS���ڿ�j�i��M�oZ�i��O7�ܴ���,���)���R���w7������u��M�nzwS��M�Wſ[��]���uS��M�nJ�rS��M��V��i��M�7��ߴ�u�Ǜ�?���)��M�6�ڔ����7�ڔ�qS�כ��ݴ�nU��M�oj�|S����?�j��i��v�~|U��]��W���ϻ�?��~��M��w���)�ݦ�o����"���o�������4�~��M�n��p��M�6��i��M�V��4�nW����?���.t���iW����?�T�eS��E��n�����۪�/��?�4��/������O7��u�e��M�_o�������_�$0N��ʙ3@�7���U�.(O��?ά�/?���!�㶇@l_X>S��ϯ�z���Hn�s��D��8���{V���|R�/?�=�����k��'3��͛~JI�{�@����»��H[�X,�z6٧���"�v�����y�}�����y�}������}`2�\�hٰ�P!d�# Jy�qc�:
�Ӑ��U�
��in��|X1���H�Z{�NCԞf��_ �~�������lu9ҐkK����
�-���Ȭ�_�P��0�����K�Q�KߔY�2��j�`���A�Ա���H�y2�<�}��>Of�'�ϓ�����d�y2�<�}�df�L��L0��&����<���c�a��]
&&o�2Q{�@�Xތ&x��r�̻C��y���|�SS2�x��_͝�>P|��K�\��@�7`�X��@
>N�1���+�U�R���o��������?0����`���Ga�@�F�ΗF$��;��g	υ����1s�Ƕ*8�^�鬸�!Go�3�u88��R�{Ķ�>�`}oE�V|��\~�=m��귀��zE]{�J��������`�^���I�S�
�`x���a��
��[����q�y\p���q�y\p���q���\p����C��jP%�ω�R���r�D �F]���FV�2)j�s�fl��0܀	&|�Ŵ�9��x�Ps0����'Wz&$迸Q��0��0o��'�V�a����\���<~�����^�y��=����i;��ȡ�bCkCf�'��	�ݰ�H��>��O �H��>��O ���3�7/@�!�d�&�B��c�T���Œ�H%[	T�p3?}�N�0\��ٯݐc�H�l�4�ؑ�����y����gd�y�Wj�j]��4��Je���82�aF<�n����Sz�ǡ�q�yj��ǡ�q�yj��ǡ�q���5iB��D��jT%.̕�'�t��-q`a90y��C��,}L��Wi�}ԡ��+�g������9�����d~���}��愓�O��9��$&�=��e������-l��4F&Rf�鵉��S�� ���@��?���� ���i&�Z��'T�O<���W�#��~�O��"�p���$:��<�>ra��
���.�1�=e"�~��8��K�)K\k�3���9��Evc�ʣ�Vƒg�=���!��S��B����R5^^0݀^X�W���$������O��Z�D��9���e�l
�A��nj0�&�I�Ӌ
B�C���;����8&�7�!lb���/v��r�/ե��l<�D����8,��a�<�W�i��i��)Ps�;wM�z6��`6}��G�y��G�y��G�y��G�y��G��R��) M,��RfY�<]a�,ê\�REﰉ<�#k%�o�S��%!d�)~=��($�6��b_!��qw0�!QJ�<��6����c�Ry:<�ϗJ��=y�3�ط�Kخ���ә�%%���fC�.C-2/�A�E��Q�9�7�NX�O���	�<}����m��9�2t�����pnd�H�E�����AL���ظ�1*�7l ���|����"|�q�&��xE!��W*%xϟGnI���s����%�Vi7>��,_S���G��{���@u���}�^�ea�eE�L�2��=�[+��5.w��C�Wb������9�ۖ���l?1ۯ'f���~b����'f���~b����1�������T���*��̤���o5�8�<Z��J�K�ZQ�ّ{����r�c�2�^��'�J89l7 ��n��6֡�.N�,t.3�6�0!��Y�(��B��фӠ$9�����v�u��F)�i��Ą�-R�0��Ӌ����'�if��d�"��)���J�4K?A�0�{Pf�G�{R!�s¸�!�P:Ba9�(�铢�,r�����
��qbL�9�����g����/
�����)TJ>���xڦ�05*��\E�l�J�P'����Wkd���lq�=�# =�# =�# =�# =�# �Ai M8�MH�	�zbU�j���M�>09��ζ��n�ڪp�k\B�hׁ,4\���[ΕO�,��0�p�M�a���������2t�GhSl9�l'N�����̣r�}��-��a������	�H�
`����NvH_r��UO˓Z��E�
bvH*����
<��_�q/��-g2��x&A�q�����8D�8D�G�F0'�줄cf[�#�G��f���CH<:���/�'��<��V��I�G������.J2���[�8��ڍ��&�M<ʛx�w�%�M<�x�o�Q��Gy��&�x�n�QYģ�6�(��#��G~��r��r��M@�7����	Hy��M@
7)lR��r�n��䣸�G�&m��&�M6�l��M8�p��F7�(�D#��Fn��M4r7�(m�Q�D�r��M4�$��JF�&�U2
uf�(n�Q�	G�,aH��HGvn�Q��#��Ga��]>��N�|7����{����Ga���M>J7�(����/)��t��& m�Q��G�&�M>�|Tn��Ga���&��|o�Q��#��Gy�� �,�eM��$�x���MB*7	)�$��IHin3w�(-RRݤ��IIq���MJڄ��	I��ToB�o��T6)�nR�MD*��t�UF��Hy�6�h��M<r7�(o�Q�ģx��M<r�x�V�z�Y>��& �M@ړ����v)��p��* �%6KH�&!�]B*��T7	)�$�p���$!�{l��MHJ���6!�mBR�	I�&$�MH�d�x���*#�MF*����X����W)���m� �*\�ܑzg��A(�'���C���L���b�Rj���J�P�Q�ZX�ΉfZ�.���f�����M;�)u�5܀�f̥���](W�6K+�)w�>x��F�mVL��G�̃�O�"e��U�F��n�@�Ӆ�(_5^b����1����Fz\�Q~Yp#�!���>]~�6'?䗃�QS'2V:?7�6û���5�)طht�Q�i$I{ėG|yėG|yėG|yėG|yėG|�s�L[M�.�<�v��X�����õuo�^�U��D�&��.���� (6W/��O��mU�	?��h$D��ം#�E�Dh��ɰ�rE��mO��Hݞ0ƻ+ Ob��=�ݾ�)�������E�	�#PX(W66�Zf_���R�u��ŏC��!,ݼ�q���
S�Թ�[~<�O����{<�O����{<�O�?�	�4�k������ډ�q�9�En���pB�K��jq$e�7Dd���m��1e�1i��"���ᇮ)>�{���*7��s�$�I'^e5�St��em�{���|Z��ijW�_<R���z���B����{�3����Q�ǐPG�I@>&F`����v�M�i�����n�ö;�5F�N!��7��J��gO��'�ٓ��I��?{ҟ=�Ϟ�gO��?��̔�����@T�b@Y���]�ܶF�Wq��V+��H��	LM&'0���p�za�Q��!�!�1,	���^�/eA��{���
�8�tTٮΎ��q�2�X.�B�om�������}���>G�f�CB��(��Q؆�Lq�i���EڙLQc��Àh����
�����-gn��J�}'m��
�⓶��������?�v�YJ�:6p���j�f�_m`��6L��:�o���_���$#҄�W�7k��͛�y�έܹ�/�OY�:m^76o���_�ɹy�6o�R�j�6��a��[�ݛ�u���o�uھe��`���6��[V�Q���}m������9��l	�[/���0d 3NBÇ80wouB1���H�q����7D�S#����hAg8�y��C^�k�C���L�1���%��y�#��~����?lS�(;���\�T��T"�(mǑY?���k2$v#�Rw��������������N�;�7��������S���g�2��|�k�kt`
ERA��,7ֆ&~2��eZ�x��f��v�C���C���.�_!����f�2��"O�P��������Rh�J^�8����e/����j���G�p��#�=^=���&�~t9a�ڦ�k�2$�k|ʸ�
���10�I&.�^*��	J�46(�S�=J��ݑ�p�=(u�F]���17e����>w����i�x��@��i�x�=�v���?�;��DA�����!>'�.�\y���
LXF[����b0�aUA��C��^kIWom���u~���?�!f�"�LH���؞7�~�/��?@��K��Ε��y������?CY^��bE=mj<�)H%��ϥ�i;�p�9�]�K!H�C��,_f�
�U��l5!�J5������P�A��}P�b����.(��q}v�hG}8�e�U�����p��kx�r�@\�і�)���%�\o����m���]DZ�8$�� .�J��E�����%X��$vԦ�c%"��q���;��&U�FH%�R+%TQ�B�T�7P�, �"*U� *Jx�Dy�*0�/�g��s�c;;Jr����{ϬY��o�z�]G��Scn����)����aC��Vc��#n����a��}@�f���Q�b���I5�Z5�"��L@�ay�
z�X!�}�k�BR�C��e��*�C%�#j�
�v��1���*��ey.��y��5��י�*�ì2?B��ѯ3?�*�C�ď$(�\H?VAaT{f��8�@�Da�ߣ�x�XΌ�� hM�0)�ˊ+(~b�`�?��!�z�B	���HuG�;Rݑ�Tw����TGU���;�JW�1@��>��c�H?O���MC��g�bh����pY�w�VW�չ
���	���Ցa����Ia����]��"�l$>��h���鑂h�4S&	��N=	��G�lLFqm�iyX~�c1��i���0�����ފX���J��<w ��H�@r�?@�W��{�&�s�!e��'z�DJ)����t
R`l~!n;?2�L+�`$���1*��N=E��TTz�X8�I�@�Ng��Y]Y� �z8��U����t��:�*ja���7=��:���k�(���1��Bz�&��6�����_7.��TE��1��ep�.ɡ͝�0W�B�fG�;��Q�"w��ȷ��҃0\��.�'��&AtIS���[$��S��`Y\,wi	��x̱��	��#�"�L�.�/v;��Ԉޱ�g�sH��<��!�s��B�0��KB;�h�n��m�&�«�����)���G���Bb?���X
�,2ZcY���9�5��E����a�b;۱؎�v,�c�7;3�ʁS𩡅%p�.Z�Ss<;���w�ݝ%J���7n�C�g�E���*.���hN�׊*�(36����5i��W�(�@;��(-Q�s�.�/2��A�`m��Л
��ް�Z0�d�	h��\�m�ow�iʾ��2hM�4��`�
������{��P����`�
W��(�z���a8+�ѣ9+����v��÷���m�o�o�f�wz���\�,����N�֋�1P%:�D�|�ƒF}��(�QgFT�k�^	��I�b��R?����`ʹ�ws�F�3�S�=6���tک����"AB�4�1��x#:BU��ԡ��5E�;M(3B6W��
�B^O~�x�ذß���g�?;����'N{��(�a:��Zf4e�΀�� �L��)��pV"��fG�E�5���gl��s�X�ʴ�B�Ku�����#�*���-"�
�Q��q�;z�R;���L��X��7T�gp\%Џu�OX	�D��q-<�B;��6�EL�\<���� �`-0z�y��;Cb�+Z��4#����
p���qӎ�vܴ�7�e�D��Q�y^
v��V�y.�1�E������2ެ��=��>`���F�Y�:R�l5X�cDFumJ�(��2BД��bK�R;.Z�"�.�'S]gS�fXs ���9v?qt�s
Ԛ��d0M��ئ�g��ZLg�(7�(�w��8J���(�>�5��0G�/[��hF;0ځ��v`t.0��J��u��DdP�.��g���b�Nɉ���������tM��BiR�:� ��(�
f	َ@�#�Is��H�Q9s�!���3�"�(�@ͯI�;��\�"�� o�@�:v��LLN�=����E�&4g�n�T���olσ�+Œ��OX�v�>`���Ic�K�P����'��ۑ̎dv$�#�p$�R(ȏIh��a��q�\��R7�8V�,��A����&��t](�r֏��Q׼���~4L��=U �PW��v\��8�Y�����N�p��@��%��P������ܘ�Ó#Z�f���}�0�[�avL<�r���&,J�1F[���a�3v��Ìf��Œ(+���!�;��{,���4�ر�s���ZҮ.҇�vv�E�,w<Fs���‘6�,*�F}����YЌ1zp� ����ސ�������H9�U9(Z_�$z��i�MI�"Pc�0B����e.��Pg�e���~:c.��4(<�9Y0vW"��^��(حh*�,�Pb�$/�����}��~�z���z�3�j@�k4!���RK����ȯvݿ�]�����opף��v�}���ęQs{Gm�`(��4v;P|��Vږ�:��1����J"���U�Yj�����R���	��z؛�6\����]�1�#M�(��RdHԬq����Q@g�YY�!c�rL����M����j�(��Dz�7I#�#��&U���N�ػ"��wE�+�7�"��;x`Vc_�ǘF�Gp�^���X����|��O�0P�]�8��x����IU�@���ıx��X������S����h1m�zN��ਾ�BS��6S�@����`N�Z�sCj��ѐ'�ʶ��1�HṳS;��;.����l������h
4�3z0t {��,�V����^w����]�ީz
�"�:��e�(�Ȅp7I=��h)P��X#�F��A8���kͬ�E�=���&�1�K�Щ�㉚��ЁT�f��rl`cX�L��ZHQd;��_)F>�F��Ց��؃��
��G}���o؉ paI��PhH��,�Mz�Y�B�Æ@��:���۶j�j1=	�:�$��;+~�p	�uݺ�Q���8��ƭ�`P�\�����z=�

l�0&�����ĉ,�ĉ��с�k{���;�8�d�vN�g�L@
O	�I�W�Ǡ�L;>l��a��Q�H�zxA�70rɨ�8�8�'
�!���@C��R�6�,���$����2
�s4(+�h��7�|�UF�;Nv�FQC��e& �L�Z�x�qN8��8r�*Hs3�9� Ds�RGYɰ�sa_��xn=��g����50+6�p������J�k��z,��2x*Ua�&�	��=�!M6�P�,�I��6 �z�~�84�gG(�vqmy��uk�O(��鼦���#��+ֹ+Sq�����K�[�y
�R���Ga�X 
I���!m�+���!�0�#e�X�D2F���#J�D���4��8}$�fJ�[��j�>f�0;�5���}����:A���.D��4��{x)��Z�g����j�!.��ހ*
�6��x�%'�ab��<YbC�#ʹ���x'���5��tmi9�u��	/�����a�<F�TM,�3e��ܐ8)MhG)@{	O$�	Mh�d{���aH�[	�B8E,\�
��2�%���$P$�&g]�!W��/N�6aZ��q�q/����bik�α�����[�x�1�t�P�ǽ��Q��艎�
	DHlp>Xb*�@C#���b�S��6��=�P��^{����(���~`�B��h%�)La�(?�zxC�@m<(����ȯX�Vb=��;�$�`�����YБ���MD�՛vx�!.q�����
pJ�Ĵ�!�2$��o&�2���(�3��M��S�2�{�X�[�f�	������!�������j��XKz�
T�ހ���M
v�,�ٴs�����H�~7LR�@���WD,=5l뉏H�t$4 ctR��]<@�UV,�w���R��Q��k>��s`��w�P$/q�G�`�ɀ�D��8�����S4��&4&{��4�H�9z��iR��5���=�Y�|�au��;�
��oXÍ�$���6K�v��&	eKڨ��K��8�[�4U����TO�d|��q�
�A�Y�l.9�&3���휥N����A�YGQݏ(�4I�7�E��k�����X<��iR�����+��Q8' 8���/��zJ,~o�(:��L4�G@�TC�+d��AD9CfD�ly�x��i���I��8�#�R�M�_�)�c���!�h��A�Vp`��	̓�K�hE�xe��@8�c����_
�=��Y��{4K\4���(�;�Ź<|�x���/��ɪ0���/��=mr��h�����p>�Pk+9[4'^��&�[q,�[X8O������jC�c:{5M)}
�:}Q|�I��l��RtG�V��l<��"|l{b��]I�MF�����e�"��q۠��`���_��69n�(�8���(���t\W	�'�t�JP=ZU�8�|h3���dbL䴀�(��[�i;_O���mk���V��`u��1���h�`��=U=�d���
m����(Y�@g
���zވQ�c
)��	%���kbc@��n��a�{�xB�ơ�9@�\�X�\~NJ�Ha���r
�t�A�̀�?g�]�B\���+�#_���2�r8mG�,!VѭV��i�5�ך�� ؉���C�#�%�X��+KE��V�.����@�J!�4�'�6�+,t��jd����]�=v|�$���+;,������m`����[T�
,����$ijǔ�jE~TKD;\9�+tơsW�"^���2���,e��:�)En>����l���e�c����C^���ۡ��y���
�*�X�R�
?�40=:4Z��� ^�wPSB��iFmӳ%\!X�"��/��9V��pp�����:��
�R������.A"w��f�
\qa?$��8�v �-�ЖR�ϔ����肢dh<5⬩�["Ca_�QT�K���ᐚ�G
���3k�^�`��#|ʞ�N�ɔ:~�`��a��A�)��x��2Ρ����(>��Վ�[c��X��:6w��@"z�Ts��(3O&M��Y�A�R)��
Գ���a�U��"D�uQ�Y�`ę4�ɮ����A�	�3x&�
�G��TF�Ġ� q��S쀵��N���b�*�jz^�;$zk��t.7������>�kV|�7��(?�N�T��p���!��Xӑ�s �5Os5q�&n��EGm���`Ph�N�
��Y�\��
���P��q�R�a�VKa�[�ӝ(�[��d$�#���\�`dž�H ��v U��"���z25)(�ԃgR�Ϥ'!�	=��;,�*�ѹ�H-س�@5V��_�|H>Ha.�e@�v0Z��$��ȃ�Y+�dTv����k��33&�``��\G�`H	L�HDz��v�=�E�(%�)J0u��$��$��༐���J�w�	k"J $�=B����B���϶��
�c�PK`�kDK�a�eC�hg"� �s�d�>rX:�)���eK8�SOBܓ���r{L0%ڸy�L	,�1�Aݐ>�ɼ�g\ #�r������PG�S�@t�Bb�LGDHL(��h��0�ݏ$�(hD�v+���h� ���3�a��V=yk��
m��hf@��u[Yaq�x���^͔���2���c��!��h57�WT/$>��%�{���u�����QG\l;>�C�u|���k�T��ד����j��7,'i8�ǩ�i�<���K���_��a�>����2�Ք�Ί(K�E
�S5�F��y�S��s�%���������¤Lq��2���CX<�yg<&[��ۼ�xȩ��,D�ǨC7%�Q�c4
c�a^3�8|�3q�%��]��[�tX�t���`v��f4��@E�5^˿yc�bM��sro
#�;=
_��t��b`�(ЋV��禸:o�n�'���E
�7�)�('�;
�.��6�cA�¸�D�~Cnel��Tx�u��Lq��[�p������l����v��kr�-foI���xFeER�|p�,�#��oI�X%ch�nt{C�nK�#��=�kf���XV���=%a<w����n����D���֡�YYEA��PD~�[�``�n�{�m�0���c�j��bt��0��e�y3���t=�
m�#DW�6��fWw�;���TnKd)�XE!K�
ߏ�9�ɐ�� `�%�pa���(
ek����C�nU���-q7�C�cp�����il
�P9�� �	�x�GM@|���#ۆ��8UWZ������Qہ�و� ;AK?� .H}3��Y���0�,f"��ć8��;��O����?@ew|�#{��x��=���b����zV�=��ӌ��@�����c7>�G{��x��G{��x��G{��[�������m���%-f{��[����v{��[���Go��[�O`I*�2�:8�:Ŀ_N��*�^�����U�S��G��_8��������o^�p���Z"����P���*�HZ��i={ux��G����>�D��>x�i��X��|��3��?
��j�.
"����州�[z���8�8϶9�#�ʊB�����K5��h�����	k�Yh��ݺɷƁ�JO�ʷ����?��#C?����v�D��DMB���[��C���߯�F��z�G�f6��-�<L�����0ș~Ӹ��r��_��U����f��"O K�W���kz����y�~6��W*[�q�.sz,n�����'f.��B$,�s��̔�����	C�JX�[q�ß�[
����X��!��J���JaF�ol��-��D޹@GYT�P�v��
��eivxi����a(�6������l>����,�œ���|��ɫ�Y��6�ȴ�t�$�%�͜��O
�p�-	h��a9�uC��Au3�@�ȳ���M�$�M���J� �՜��u�a�L/V�#�eu���M&��(,DG�d���A�@�‚{z����ȩ�iCy�%!�Q	*f��<��2�dӅ���@2r�+��jpj�����+�t)�5�	>�� @�*=Q)�,�E�_��Y
��eҗ6dN��%��V��J����h5�a�=��.��P���'�6W.s@����͇0�B̿���x���0M.��Z<.`�myݧ/
۲D{���!ߐJ+c�RF)m�/و����Sy��B��,l���>�R;�5�yz0�LA`�;	�g���7"w�	�V�$+�&��`���cr�̷F�ːC8x	�>bZ��B���/ �:��R�&�Ǻu�n%mA㊒�-.K�B�f�]D�㭙��������{6=,��"����,�+kZ;��:�U���SX՜��5�uz����֤D�'FAT}.W��J����i��|\��iq�N蘞��lM�پz���qa��8���{�G�`Dئ'lf��"�x�>����F������1,V*��f[��<�7��^X�?����V��6P�L}�ӓ]���	���j��*��u�3t�[�)�A!����[]�I�P:O��6�%9��)K��\�$b-YDLJ�<.k�d�
ֆ
\O5e+�`�/�$EU����,@gI��*<Q2��ٛ�պ+$;���kv��"�dAo���O�J�|9�ǧ�B�٥d��V��.����B��nsSDA̧�v�AԜ8�	��"l�-�ٶ���K%�0�3�0�6�Z�<®8��Z3��e�*�O�2�XSԕnK$��b��*�e�Lym�vvB�/eOq��F�%�(�l2O�vq��l!n�ʦI����%c�/\���w�G�+ǣd����g6� k
����d�@]��s�	����k��Z�eUsb.yj�=Y[�-�B�T�Y�`�Q���*&1�ܲ�"oɑe�A���-f(a攬� `�uw���p!��Y՗�B�6on	s�r��J���Anƙ�W�[�e�A���s�|5�ж�M�T0��|�'zBf�
�/x}Q�o�aۜ2%h6�'��>�X���6�d��E]V���B(Z5V"[��w��*����d�=BX����H�R�@B��x��@�0�uZ���r\�GU]�ۯe��KKF�䠝H��Y5	�4����M�uXNE`aQ������3a�~nc���;x�UOm:%Ù �b�o�������l`[�RM�#ʟ��U`�r
�M�+4Ӧ�E7UnZE�A ��9(�Q ��(�g�!���R�}��oe^�d��/�Z6��7\�.ض���c�06!|'%op�'lN�X
��c�ڢ�/>RS٢A��^tG�6�wO���!ࠄ}���e��kNȧ(�%�&�Z�ь�Puv�I�)�+y���ؼ�"Pf��!Z�d�>թ�&Ҍග��C�QK$lҝ�����(����G5� ��B�wa+A0�[�%�!i�����8�z��1�g���|F~�j��$�{���f�'!�5��%�՚yQǺ#���S1�2��R.L�n6J|f��$�>D$���ɴ�u� ��Ζ=p��[E���x(@��F^��^�d�˨��y�kQM9��K�b5E�<����zL��:���F'��f��:��Q�[������ょ1QB�@�<J��W^�,�-^�
�o��YT�`Ma_J�Ѣj-��hl
�:�"�k��+�$1$���M�c��]�R�i�Qr�Tg=mHψG��U�#	��g���.�Xd��Y�� NT�B(Q-�Eh��*G�M�yL�D� ��%��
�:ߠ`
���4S�L�����l��R���OQ�t/��%�P[�@�r/C;jA�w�zDvޛS�k��[�#�m��	�=#��me��Iټr
��`�N�V�dϫ����=՜'L��Km�ȂDo;�ne�m�Jl��A\���4�W�R!�����m�:�V|s�2Gc
@�᜵��Z����.�Ю��S�E��j��R�C��@�2#UL�l/�:��Ȣ�^�RR���z*�̇��/�G�"2���"�x,����eY"��-Q��4l	�I�#s��
���z)$��zQ��5^X�$�d��M��~-��Ir�y�ǫX�rVg5��"��jŵشK�0BR�B�pB˩p��,��-�N�
ƒ���ű&��e! �-$:Y����vR�u3Ү��Z]�I���_ʁsc9���N��a��4[�����6eQ���]%�/*��ra�6p�����U��T�r̟��+nE��Y�k��N�#Ⱥ:�^'I�n�:�ID��]���ђ���;K���ȶ��m��%���[E	^*RW��n٭ϠBs�r�p�D�f1N��U23��MaR����@ݤ'�{g�*P%�b�<=��`�o3��l��x+�i��NS�����uM54�����U-
�À������y��Cz�*�@Ք�Z�]a��3ᕭ���ڲg8���<!�D�=y����~F�M�ǐ��g��;2��#'���NA�ec��#��l̲�_�‹	�[���|y,��u�vvͫ~��K�6�֎j.W;�섚�ڵ�P܌��J���1ܲRm����8$
�����IF�b�^Q!�m�OJ��ʱY�|��6w��c���杼s��ƝFnY���/�׏H�!�&���LT�^X�_��RË��WO�A
��W�%洆ZA>�	cI����*�Y���=�5��$��mem�3$�����
6G���+���VH3�tN�!�Fw5�hCoE��E-�.ҋH��>�
��h��F�|Z��Ò�-�=�T�[?���s�8��Ɩ�i
����*�lU���,����@HO�S$�_8o�3l4[b���R��kz��l)��E!Q6@nAĖCW���*R�z#K�|��
ԥ���XA�/�Y��25U
��7.7<ߘ��;��G
�8a8�K8u\�����7>���|��ÍO��ƓGu���<��SO��o�V����o�?|�)h߻�l�H5
�ҿb��q8��r�4�����P����Q]2�����Í'���n<���>���W_z�\|��/]�">���+_<�G�|��n~�߾�'^�O�~�_��7�~���ȷ�����$�@k��5Dh�q9ߠ�^փ_Lzcq����/�SU�NU	S����������_�߿����}���zᔚN�Z_�W��
4�L(�Fɳѧ�F������w��G�����Ǿqߟ��?���v����bB>�@:��<������
�r��xg�l���~"�ɮ��O֞:Y+L���W��_�߼�{���_����������s�����<i�Ч&�w.�;�������M��F>]w�t�̩�������;?��?��o�����׾y߻�����p�׾�ܵ'~� -t7�l�z5���3���x�f������<��k��7R~�<��W��w�<M|~j�S�f��{4�(u��-��߸�׮�����\�l��z���ףo������\ǽ��s�?���?���x��G��|�;��G���k��c^�yo�3�M6�.�yײ��oܣ�O"��_}������F���я=x푯D��zҾ_Oz$�z���Z�n��o������}��}����5���������StX+��O
��M�ڬp�O��M��O|�w=�ч����?��k��~ג���n<��Mz��s���Q�NO��ލ��6����2�{������o���������?z��~��&�6�q,���_��p�W����&�8/[P�w�N2�'�~������^{�	�8�Q��@��s��3����J�O48贑8�k����?*@|�.{+��'!�s��I4���	��܁_01*��{�:d.�,��i�zᡷ�;^@ojw�pn�0Յ����]@��(�K�iV0Vn�ڟ�~F���*|���n���x�L"P���+a�̂��� ������5�P|r��\�Q��•��Bᚩ�z'���밪��i�O��˻q�
���A���s$큳�M?2ۂ�+;���`%�#� ۲�j�Ϊi�B'�����"1����\R�g�8=8�Z���F��\�^�4�
�J��r���l��������1i��[�B��p1�,�)�	��j�*<����8����ƒ�������S�#��^��r=��QxD ��M7�o]q��7nj�22R�TUA��S��̡s��U���r)O+(�TJ�5�M�C�60٪mU-8�^��±Btߝ�g�`�J�j	�Rxd!8tvk��}(�o®�Ru��+w��\��(I��+��%Ft�~��x[E�&��K,��*�z#,�-^(7�c�b,���J�S�
�r��ʝ����|-��͏��P���
�|m�W\��e�&T>okț�*!��=�N�41MMk��3W`pAT�^I�+H������W�L"��umW��
�Z�'e�"����W�O=D����(�P�戩y([��yKA���jkWۢ�ԯa��{r!Xh��?!�m+�T��I@�V�L
�I��\ψ�l�[R϶h�{8�.g�k�C-0�|u�Q�����Y���v>/�+䜳�BE�
��H�<io�PnݾS�=[��r�ی���$�&AK���2�uP�J�jJ���U�JH�k�SI_ڪ��qJ�����=�7�6�4�yv�t�"$��2��e�".�r&�K�"s�75�� ����<�l�upB���)ӂ��.t�¯�:S~��R�'�����t�$�`�����F�V���sE�
U�!<9Ð��§1����]�л�|Jغr�֋���kj��Wz+�y�z_nIU̪�Sd*����ߧ�IwX8	�sEۿ&W�U�Y��Z�*Љ�Hf��f��m�>�ݥ��t҅G#���'���-dD�D�0���Q�@�;uP����k����i�Q槓K�H�t�I!A���ӝ�)RI���U
z��5gv�R���j�i	�g�ּk���t�z{��.}>��`�pu'�T$žKSQ9���grBq���c��\h���%p����Z�/�1��i2�NA9��=l�2���md.o��se݅�!�w
��K����*���v:�y�[�+m�2��O��U��qS$嶔q幷Yr���yĄ�H�#em[�	����Vu+!�B��5�7�e����>��endstream
endobj
63 0 obj
93286
endobj
74 0 obj
<</Length 75 0 R/Filter /FlateDecode>>
stream
x��Y��9��~W�+��<����A�- �*	�.�G)��f�'�!U��rR ��kt����F�<�Ӈ����o�������s
����i��&_9��̏�G�-<������3�Q`-V���/����ۀF���H����?�ۇ{�1���?Bm��ӣ$�)�Q�$�ޟ��N��iJ��3��>K�����m�e%{��V�>����k,b���^�%���߿�J��Eq��o���`QSz��gɁEk��J(�����n�	+���sz��d��B;#�X�,RhO����|��3,B���m�Y�XX-�찭Kް�����}�o%_c�[���,ٱ�ջg�{-�|�\�3X��;X�0v�>V��|�����/�8v��c����9o.<[�%�N�4x}d7V"��������u���Ƈ=���?V���X�����ʠ4-���g�Q+��N�&���Cj��YZ����e��s7��v����7���
�J+�y9[��[���!���CGɉ��?����%ν�c��d7�+�y)d�%��H�wY���A�)��(����~�\�nlK����,p5?�Ѓ6��:$��=���a�{-�����b{A)r͏6~��L�t��v����U'=�*�~�|}\}�׍���`�R����SWAU�:��di�†N���R���ȡ��I�Ut-��!`���PRn�����%z����S�_���I�;�z}��I�霖xQ-��P`Zvc:u��l����l��D�}N��8F�du����G�ԒX2��˼n�.F��g�E)�
X#�3��£�c���c���x���{aɘY���78����'8�dͣ��y�>7x}՜��dz���=��G�F�,8
#!����8�d�G�%����	�x�y�Aq�{����ǡ��Z;��-积�cS����G�l��6s����x���x����GD����ũG�5�,��W,ٚ�i��N��s�u-'�3(i�,z��eń�
^?�/��V�sIl��Q2i��1���QK,_�AQe0�{d���4�ۼ�h�!�r�l���9���6�m��nW��2��%c��nK�ݭ�B9GJ����A!.X���8O"�:�(�_{�5�\n0���%��Ì�8t��X���L0<�..�y��af�/&<�8
����V��	�v�(�
�J�� pr��l�x���Mp<Gǧ��'��	�Cf�D�=�1�yC8��S���‚X�
��8��x;:�:��x��2<��T�[W�>GS�ۀ�m�CSEk�^�3D�q(�%�.�U��7�t;;��ة�ʒѽ��P�A-�jpJ��hZ�k鎦�����9�	��.���^���j*e�;�L�5m���f�ñ�a���XdEq!�¡.4vᦝ���K
���x�a3;He��R)��>�)W�)̙���(�A{,���.�o��q�������Zw��?�$�\��X�7�LYt9Yt�v��7�?n4�5�fL}��(�2wt4��al��VJ�`�>9]�>؊b9���Bz��]�SE�����,���a�$�_Z#ƫ���)���P
0ռO=`��ܠ��?7p�
e,�*�Gw�.���o� � V���Þ�Pt��m-�>qC��]Ն|�C�c�
��a�G��G3ڢ$�y��D9z����>�Ь����g�P�V+?��4���p���"]漩Vf���7U�R&�W���]�m���df��2=nM�/��[N�H��gI����c��"�cۮȨc�=p�
�u�`���|B
RO�!�i0�9=ߙ����ß�}$84����C9�z˒�+�wxp���"0�p~Gx��p}G=��\�����w�;�m�Y����6
�P}3��j�\D1�C�1�0z�2eq�<cN��co��(Ģ�[)�QK�Z!5�c��\��C���sD8��q[%�0�۪Ū��9�6�8�
��hݩ(\���*��\7.T�_��u�쐬'w/\��p]��m_�������-�O�pCK���e�m,�н�v=��Ǡ�a�f�e9|%�)�`Х��bO��UV{���u����	��ι����YL������y���:�Vt��*=�9�rQ
�w��X.zQ���^'9�.d��
	p���@y�T����s�-�P�����Y˱���������I�%�-�Xڿ+���\�J�x�O;h,���D�u:
�2�&��e����:�Q�7��W��?��8��8z�����I�����\ok�L
��S�U�
�Y{���s��-T�)�Mk��#Z`N�#�}zu�)gv�Q�GE#ר�T��(��f�@�mJ�`K?��t��K�~W�oͻ\�w��o���q�\��~������	W�u�H̥�ܺ�����2��₮��'�c�Z,Ǔ�-'E�g�s������gC6�.���?>p)ew�A�"�g�f��E�*���j��mE�jWC�R�,��K]#��^�\�x�|�V��+ϕ�@�c�˽� �m�����s哿V�^+�}9W>�+_ݽ�n+8^p9Zl'~�{��p>	��dp>��E��4���F��/���:��������<L��/A��+ד��"B\�d,���KΉcO�
��Q[�e����!p�-�*�;a]�&1,Z��	{iP����w�EY"{c����@��Fh����ك}V��~��H_=h4��7�@���T�=�%��$�kpl�@X���d�;�n��z��Dʩ["���b)�bKJZd�T�#2��	�3�.T�Qbc�;u�Z� �E�Ǝ+����u,Mf�X�r4�"�C��k�
N����m]�(t<�֡��d�t���z,t�p��*Ķt��G�RI���qT�-y@�HH!��V�6N�=��iRRuԱ�Z��G��Ɛ�ʀ��Y%���4�͚�rZ� b9���&����H
9\�8n(��1�*�h1�h�Ŗ]����Q�)��$%��sk����M/_��#��g�*���Xӈ.1,����F��]S>'�q ��~ΐy���$��9A�������"b���2��{�zv�a-̱+�N�vU�]��˶�TR��[��\%���)v4����I�}��`QC��ߩi�hK�S�q�wܧ[�Տ��\8a1�6/y�	ˑ�"��*	�*���L�K,�S�E��nn�pƄ
��3����
:Ԑ>�=EjGn����D$5a'����MƸ�1g�0Ԣ�H�en��9+:V���9k��,��m&��Hz�9i��1�)~朌�v�1I��)��L��"�j4XL� �/@���/	���m���q��!W�#��9lx����qֳ?�1�9ĉ��P
�|��]EM��~O�*ی�ԒV�Cs
���M�D�gTj�٩JJ��d��~x�Mj�e�s:
?�N�"�8_�3�LY�-�	-*��'n�R��v~|�&�mFl������6]At�.��Ȱ�<�\���Ğ�8�a]	�9�0(¶���_�z��{�u�X�P����7;|;F�u-�.w�hA�EԪ+T��/C�5^���P�̓6�G�F�Z�d��d(W�sa�w��WI`̺��~�f(h�%A���`���#{��Ʒ�l���Dž���l��Z��JG~5i���`pUNU�m�re����m����q�A[ ��7�q�hsX��%OPD5��`(:vj��mZ��\lT`�c�+����6��0̆���8���'E.�(&�54�,L2b����uo+~~Q�(��}@�
ELZ�u�ؗ���a�`���()�����fQlA��`�5G�� Pu-Eo)�k���,��8���so��#�"V]��:qt؋��륁��4n<�c��^��4#�r)BG�%*Iw�pE�Oud}j�F#�0bG�y�#��s���s���O��5[�,�_$1	<���2O�Ų늡h�ʌ��<�n��͊�yx�Uv�A=��Mp<G��JP3�%��j�	\*ᚈ���5DZ}"K�l�1�#,��D�EW���(�ё��b6��%0Ώ��b�O�7�i�R�i���q�F�5U�
�.<G�^����ܢ�����Unp
6�jg����x�]�	���q���:���@AR%o�E�<L#;-��l%M1�Ȱ:��
�:�uM�(����,�
;���Yt�^6e4n��C�k1�R#���<�j8ɥ�[�hP�H�(�����|9��wg�e[�h�Wl�+��	�[�T�U���-�5b!�����ə��^Hm����6cQ����<g/۾����l�$b��xń�D,���D͍̒��Zb�3��†�XH�[ʫ�V�	��%��m�T~��b��;��5S��gI*D^=�'��ܠ�Jo��C�jd@�{�f�b��}C�ɾ�L
!(�R
i�(ڵ†uް���f�8�,f�E����L�v\���\%*�]��0�^��>p���&n�c�ز��l�l
2f)�$f�+2�a뚹��7o(��`�M_J����M�No-b3
�h{�d"~^�tz��5{�fψ�y�N̨!��
���t��'f��	3[�Ĥ��l��'j�c�k$EM4ȅW��ۄ��'C�&M/�h�MD-�~�[���M�������5 PD@�(�S�
E�+p��U��`À�N�wV�u�=q����d�FJĭ���R`#\�M��i�	柖D+���-������m]�} V1�^�lL`YP�Ɉ��ev	YJ����
�	�jRc��
�#AĉK#�H�85��:��u���
G�AU���_�1�;6yT���F�� ���Y	v�c�D������i�D��+*����7���P�f�0C|�N������Z��S6�l脕����hj{/@m��Q.�l+ǀ�5\Q�ke�7�VJ(���BY!�O<7�r4:�/�H��W+*z4)'<�=. �jt�uiI��\�XJ�d2�F08��{��f��l�BԜ�V����'���
7�^[6ܢ�4�m��8�&/�f/��A8du�
n��{�
C ���(
�ĭ�H��ټU�I���8�������8z�e�Sk��"%�1��2qLVBm�*p���{n�H���j�:���aɚwT�Jܪ�lk[m�2֖�Cx���c����p[#�Vm���4h�W��w�vY�y�6O	�6�y�u}ͩ�I6��p,m�K�Z�v2�`5��y��c�i'J,���	'�6}{'Dͭ��Z���M���W�f]W�W��*1�]���Z��[���6{1��H�� �p�(p2���"/��v�<:��ۤe�$9��am�a��X�&��0Lq
��:�c4�u�8��?�M�l��.�����8����9
��D�
^;G#H` 	7���x%,�7]�2���`�hFc�r\V�Z�@�`i�0��`kI	�pij�((�D�1�;�6W͆��檙��Ǝ��,�{3��"b�̄�=1����(F��t�k@����Dq�(�������\��g�Y����&â�T&n6}�m�
p��m��m�Ϗ*}��V$��.�����h����`{0cڢM[e�h�n�j~p��u���#��J�f+��pK��6mjˏ�=l��hd}����I"bk�BĚ�0��ث�e�迮G3
'�"��1b
6U��y�1utPx3����2��ƭ�j��TKl�4��3,Z��h��o�F�a�A��}��q�\��m@`Xl�#V3�D`�m��m?gk�*Qt6���{��
[޽��F
ču�����N6��6�QR
�h%��Ft�ͅƼ�m��e��b��	��+%�1�t�F:L���1AK�
���ؑ;�Q����U�mR=�3��@0	y�φ�����++�m��-4��F͜�z�8���a0�u؀�0t���Y��"�m�����^\̾p��O4�Sۣ7C1�:��Ձ���I��
'���hӘ'�6��8�4�����8����
8�z���!%��)�2O��-�C�!�"Q������̎1���� �:�����yb$R�^�
S(p&\��h���83��j��9w<�8�ͯ�dž,4�%6��E`gpR�٬V#�b#�9�|�Ō
G�D
�Y��<Q\��C�\� 4�1�	��7eۋ�9]��MKl�f�J�(O4L,���
Q\#&�Xl/��8eC1a�����m�f'ljD�y:�qN���D���SZ��U��d[+V�HsCO����9����a��sG�!cڠ���ƃ��["�{o�q8z�Q�66�3��l3z� x���y6�lh�cOp���jD\W�`��䃛1
�"$������\�ӈc=����x�-��^��-�KR��n����n��P���j�n̔y��U���Fl��Bc���m��
(�F�ܟEC�{e.��*�J�)�^���q��0R�L�'\��w<����[\�G�qˆ�zS����
�i*B$�	�ɾ3M&��:qd��x`�lp\���k�go�����čU/��'���zv'0�6e��H���E�@���1�vQ�Ea~�c��z����k��e���I�2�y�4��"k�{Q'�8�]��@�8���R�9�-�I�2��JRM��4�B���w�+0��_��-�w	�$݆
���1��w�$��{���z�D]�KH=� �c��x�_�F����kt&2�垅7������㗏Y�(ܭ
�p�Q��k_�_��]�EZ��l$m�:��V��O��x����^�������/8�8����6�ĝ}2����H*q����GD�0�N�ǘn�D�p�E�i���hR{�h�C�!����
C<1�n��Լ0d	cXч�Yr@1J�h��82�\}�>��>�����Oxσcc�����YR�c��q��Wq���t����GD��X��x��G�hk�>�Fs�	�g¡>N<ڡ�jou��Z%���yǩ�M�	���Y���`3I�d�O��G=T�ͯ�^�d�1]���a˝�%�AZ-�H��}Γ�t���mx�s��^��.��J+QT�~�e:-��gU{g
/@� ��t�q��{{}�#J��}�d�1��pd�5��K�(��hK7wB�����=�f��G��D�������u&��m諞}���ģ�����q���%9�8��Á.�=�[���Z�6^��f�t&�x�S�\��>�?�$�'��<a$��S�E�m�[h��q�]�N�q��NQ}����G�Ԅ0�Xkf���W?���$���&�����)�o<�R���T�#�hH�*ؕnLu�'�(�����h�ʒ��7�/�h��뫾L��¯��*�gz���*�O����a�̔����]2O��V���{�ҧ���tb��C'|�|��׷���p�[�{���W�����>����z�uq��¯?56m�K��Kݣ�&�k*�P᪩pȽ�ӭ�3o�a���^8���	���j:T^k���'��$"}�6>���I|tTE��]�����c}�<���&h��~vޖ��R
n[}c��]�"���m#A-�B���T�M��V��T���O-pKO�Uޢ?E��/[�v�z�μ����)�����B�l��doĮ�Y�J�-Livx�+QWOP����.s�5�LU�d�.�gS}ЫO�
>5c�����ٟ�ж�[j��Q���ƪT�C1%6"/l'�®Q�E���e0^i	h3��߅®��ae����r�Q9�z�%�����M4d��a���.iT��
|�ꍣ䀝G@ҁ�1u{GPFf,�Dn�Q�#�a�b+6��P#�ta�Xf}���&��������>/4��'���tc�ݷ�g�I�[��-RG��s�齪�ʳL|��38/�8um�5Y@�����z�ސ/sz-�/�tzz��p.Е=a��n�az���,pG�ȸ��Ǎ���ޠ��#~���ԟU�5=6Cg��e��,�x<P���6�#���8���t�}D����S��?��zn�C�O�e�+�v́��h#0�^�>o<�{���н�=Nؠ���_���k��<ÄA(��R��6�XQ�T<R۾s�`�ޠ�瞶��$؃ݫ"�쉐�N��#����c�%x��gI�8�'\n=��R�m�y>.���Z��$�����GA�t�o_�y�i�'��S���Ǩ��ӕQϧ
�y�}�)RqPm�L�aח�GJ�cQ�M�l�&����Y�������:�B�NZh&�v[V��߲H�l��9���3i��6�� �=���ZlDU�$MK (N�p}�x���
8�#2׆MSmʚ; 2����(�|�n+�0��B����p�bg�wg�p��6"���Ѳ�8�\xŰ3�j���l�A�QD�GŢ����������ʼQ��3Ņ�L�'M�����l�As[]^H������),�@�I/��).�[�������yr�����>o<vN{����j��MR-I�W�����zw��;�uf�C�ܣq�ؙ�P>��a��0R#BGLe�G�XC���rGXn7j8��4"��	ŬЌ��B��&J2��f��G]x����zk-���3e�j�K��"���,A��fLD	˪��c�(��@'8�x��E�-�m��,,����f(�Z�%Y��w��Io���&i�k�}�_u�wo��{���fJ�������sy��s{�ɠ�6�a�G��bx�����-H��Etъ�D(O1s��a��<KNJ��3��kߞ1O<v�x����Gd���v��Y��(��U~y�&�ȸ|MN����%����;�e΂�bN�fh8��H��-�沫�������;������sz!����G|iI�P�E{-6#�'X�O��煇f��c}��y��znS��X��0��)�)�*�;V7�W�Oͫ�b~�R�5�޺ko��Ϻ+Ny����x#O�bsh͒��&��.|�TK,�CF��S��EK4��59+�������H�H�h?�� 㥿��&5'��t���C���ˀ�ԢaPޒ�:P��i*���t������TX���ƫ���δ������y��Aa�Hh (���mB>V�Ϻ�]�\�?��O�^����d���3o������H��9�.��dM� %��~���y>N����l���b�Y�1�=���	�u�j�Œ%��3�މC��Zhj��W�e)�M}�T�R�R���!�X�\���.�Q�*��u�\��=��G|���
Y�<��'�ԭF��ޞof�%	-�e�)ܬE���"jX�6��e��;؍��y!W

��aPp+QM<� �N�H�,�����k��B_D�ԁ��XR '܀��b%J>c�����J�u�J�Ǫ�����Iq�X�y\Q�3ǫ�gF-q�VǦ�ۺ�w�'^Jx��“���_�^r'a�_\�K�L�Q�����+�C�ȍ�.c���ebR��˘�V�cF��h��7Mf%9��ݦk�"��26�*A�:?sy ����;�������'�$�$;�!�y�ЮUU$y(�D�w�5[�e�q����zdO�v�Q�e>]+��t;�����}p��BXs6�#�;[c10��d��~���f�Wv=i+_p2�2b�7r��&�ƾj�3}v��]#�m�(����9ɷ�B%rm��>���ϒ����*��t�Y�LW%\.��[�M��Q+�w�V5�`��7��v��p%��F8�d3�Ү��(I�xC^�J�m���j�[�x�o7�IK#�kĪQS��2��F�����v���$�h��xU9���x+H��2Q�o2�uF�ԛL��U#<�2�54h�E����D��1����}~M�LXv�m����H"i�/��2���yQ�2�=���+��sR��˦[IfJ�iW�W��l��G3Ѻ�R�)�J࿞.���3�<�m�^�ވ~��R�����=/%</Q
B��z|��mFә����r�'�oРl�D�,�Df�M��:3��M��k���g:@�F��sK���|��|��|�a,��x�����r8�[�d��r8�[���FM傗�>�aK�M9l�ō����\���3���a��%��ber8xS
!����;�-��Η�no28�28���&�������|M{�&��%��ѯ]�5�5��K��-��(�#�יn<�I %̙>
R�s�q�X?I�[�hE"�t'KI'S&N������� I�oP�jS��i�[D3{�f��.��݄���6ՠڣ�p��]9j�)N�/�i���nO|�R�O8^<��>.�~���#��#��#��h�ho<��<�����M�KЛ�^.x	��$��$L������>����&L]������rޘ�#Lʿ���'������H7�Xb~2�7>1�|2]}�yo�zx��O�M��n�b��nb�Nы|%�gi&eӿu>����,��
���z��-�t֗�4�@U�%^f�d�ь���ax�4�Ǔ�<t�l��2s�/i*��^����7<lb1�,L�m���e�])H%�ă���7��ȯ�Mh|<���e�o2�҂����DNT��w�
<���N���9���.u%]�J�Օes����o6G;m�v�S]�&�^cSW�����b&|�८�������J#8�a�+s��60ngꊹ��Rn�����7�5��[�48����.��\��X���]c��5�x{
�{��7��_K����Mc)�14h,̧��&�ݘ�1��}M�Z�P��$i�<Y���.4i�IҜK����u�5��%���a\x�m�����/'��0ف�Lv���E�D\�D}�����9Ar㾐@'�VH>w?�����9{Z[�[�oc��_�f����e��3��u\��|��tV,��f�L_����ҙ���:�,���y�F���ڙΊ�;ެ��gx�e���ڡ��{EӰ�`��<���g��J�9s���iϒ�C�-ꢚpN��s�$�3�s��¹��#7�d]#;PF!9	�f-�_V�9O&T�D�x�$y}��D�8�1|���$d��}b��'�kT�#h)��H�R"��ܕ�T����1?՘����qZ��8#;&������@x����T�YDf�T��C3*��9d���e�A�}�][8S|hZ4���W�)�� �hF��|��s��=����t�����ۋ8j�%{�F7��zY2��~�^~�^�)�
��l:��p���K�lf�~�%�� �4�v�j����u����(�<>��5���x(p�W����ң�>Ş����vr�y�g�-����k�P�`�D�O�S{w������v�J�.A����A����M�rc� h4r��m,�:��������כ���]�O��o�.�omu#h#y#��F���I�I���5�E�卤�I�]$��H���t�I���t~;4
����o$O��סi�MS�K	H�lY�+HzF�YH�}�1�$j�fq��ϖ��ζ�"v���+�q-��3U@CW���`��F}�o*���j��{�~���<}�?�	hr$�l9�-�w�S8�!���dĘ�h�.`xM�X!�������Z(X@{��|���k;�'m���?,m�y8�	/h!�Cښdž�I����e��j�UF{����A��s|o,�m���0“>��4i��,���t�3����UE��	+�ⴇ�i�*�3`�d�4�b�0Yb_M�?�S��k����ݔ��Y����34��SW�=3�!!�m40���ОH�!1�C�4,O�J�S���B��fV�i|@Y��3ch���*�<|�ޝ�e>K�.�(�.�|���ov���@{hϾفV������ѳ�L�<{���e�lܱ���O��L���<�����d�t�g�q͏�^ {������2U��ɡL�����JfLMe=Ԡ��۸�4�vnן��C��0����m���j��iO)�sB�}�`/��F��0���aI��l�d[O�XO��޷��w������u�7q�o�@�����&'=ģ���s�K N�M:�7�t�L�8�7S N�M��7���L�8���Ri��o�鿙�����N-M�7qXnq���ay��M�[�-���hT�/�M��7&�yo���\>�^��Hs�P�(����ʩ���KbA��O��㜄��Լ�(:o�c{�T�$�_�9FOIh���O��)
ۛ(�(�d� �9.Y8���㒅��~��?����NC�o�p� *[�S����吃�����[�#�oB��B�v�q�q
�r	�v
�<V����QW�iy^�8��n�!٫vF{oeN�`3:wwN�
�	�
�Q)*aRA���3�lb�����C/ȞI�C�	�Y�;2Zc�ۺq2�eN8��?ê~�`1/�Շ~�&�R�$�yhn���� :�|��fk��cs�&q�j���P�撦c'@��ʮ���6�F�¬�fC��r|=�JI��H]F��@��fR�.6�M`��D�i���@�Xh6u4!�����z����];	�ك�j����}�/$X�jb����)�����T�K"ayF%2F T
M]jo����"�F�3}T��[*�!�
�����ɳ�z�Q��[�a>��f>��7�@x�.��FԤ
����41Ϸ[�/�u��H���{#�9;F͍�8@��VT���0h ��u�l9=4ι�n��[o��
1x;ys��Ua��错�������Mf�]f�Kd�7��.��/���a�O�����k�����y��Gu�`�J��)��wW��3!�pa�����Kwe�U9�ݽ	�Pm������s�C2淵k>c�Z@B���?`,]�g6mu騭FW����MLZ�\<�n�B������a/з2������s�H��]k `�Gs��
uo}7�dx�:%A���S�RQPO�_�)���u�2nv���ev�%�
�N�sх��K�;dG�z�wF8l6�!�y7Xn�K(%�l��3���D��gH6����hR(�1�	O�I
�M����!K�~��SL�3��m ��kc:;�_5.�+��@���$�c1X�
>ϦUvS��.)����ɓM�B3U���O���B/!k��NƠ�*�`���̂���0�	oi���'�G�h`��%xK6M2�B�_���ǀO���s�f1h8�b��������͛�?{`��@&d�Ŀ+@erRW:�	��#��屰�������d`�|E�I��4K#⎩nv�5Q��#�iU�Z0�<�I��y��Sy#�n�f���3��6�3o�I{��g�Dc�Q䚕{��5�u���=��{<��c��"�g�����9=�.�� Z��c��/I*W�G�`�y;�;��g�.��P��h�iPi���t��f�KQH�N%p��oe�|��j"̠o
��aMM�FV���ɕGp7Gx3�<�
~�Q���ϰOsS�[�C�Y��s��˼Q"R�B��gߥx1emyI������qW�Z�
O+�"�����;�"��1%8�+�������2u�2���MPl�s��[��^<��X��2	�2o�=�~���	W��L�5��f�FV��0�j�,�
��
��D����M��ۯ}^�)?��cW�N]�S��w�Տ�(��:��4��Hp���T�Fؙ�]L]|4	ǧ�m�=6-b��6���m��6��6���5��΄iI�C�֤~:��������=Kw����@ت�d?/�ۥ�l�IF�H�DӼj"�uvJ$�5�E3��W�;�%"�C����-fWN%_�Y'��_�P�*�ק��0*+���6.���2��ؤ;
�����u��n9�;e�)�ۛl��Rɾ]t�)�Y�dT�6^13����Z��u絴R|g�MS�ߡsod�<<z��������/�q���P.{�nԻe��Ƞ ��q��&6}&j:�󊱧ߔ��!-��$��OI�:M��x��|�n��4R	.U�Ż���r�y���:��_���xp���w�g��ϿA5>��D=�+ݸ5���3Kxp���3�'��{`�j��5p�b�~�'I��9)�NO������~;�����o�L3	~��'Rgu�Hx�7*�nc�&ۗ��B�<�
�ox:r��?̈����A��J�\;�6��N��x�<]e&<��W��*�T��|�q�h�&�)�r��K}(on?��l��`�m����ש?O,�%qi�'��M|tc$�Ш�+V�:g����#����*�;�vHa<�Q?�<[�Ipj��fl<[�G���L��QbD�&:n�F{F�� �Rw��q���D	���=�6�C�J�LO
�v�'׶�|�I_|��l�ܔ����t��+U|��݋��Y+��*v�Ձ�	�����L0{��"�pEU�fu��\�9_\1T��Tu�1���4��f����qN���3)�d��}�M-n;�{��6�7��طTt3�)؋�S,9��\jX�>C�7��6Jc�a�[j�$�^��Ů�HQ�3����.{:�aGx
M�ǗMO:��yM�0r� ��J�Y��n�nЮ.�=�z����v���Ow1O8���n�)\p�[�F�'\f(���l���J�34a�=�<̑Hy�.�G�k�j��ͷh^h|�]X@����K�J��f��T.T��(9,>XTE�z^� ���b,����u��'���5��F��*7�����`�إ�]��g-��[�mD;�Ok^{��qj>���6�3��<�h|�F\�=?6ux�ZU��
@�S�#��(��}�WU�����h�\�Pts�� yUg�7�'Z�@�@���7��n޲_�y{ъGZ�'���·�F�9s6�����yʶ���[�aw��O�󁚔�R�\I���j8Ni�Q�ߴ��ь�-�:���<��2�
+�w\��ob%Q��Z��1����=�޿���!��`��ա/�;��9���C)e��i=��&��&�hSR�)됹ȦU���N�U����ϐ��AA�� /��Z6n�fT�Ɲ;�Gf.v�E��(�z+v�t%P��K�Y�_`9TD��p=a������ELg�������
�S�=}�}f�
u�h��XS�$�P�vo
�>�c{ZLã�w����S��i�l?z>��f�}��S !��	����3i�-I��6X2��戮���J�Y��Ƅ��Qf�Ǹ�ݩ�_�ba����z,����SsrzO�A�	�:��
�s�� �й��s�R%��-�h�'.w󥹹ԙf�d&Ki��
���b�]�j������ʡ`
�	���g��S�xצ~XMVq�l��qe��Z`;Sn�/nk�I�f!W��b8�{�u�n}�Ez�_+�.�VR:=�ջ�Ōa1'�m;S{��76���7�&跔o�՜���p.�>�{�m��%���	J���Ȉ��ؒnsG&�_`?�^�t� ��+HDSkǧF�B��5.��0^Ba�sO�fwP�C�Oxb��0Y�l���5�/ڜֹg���n�X\f;�2�Vt��b}�YP���T�l��BqT�ŵ�X�Gݓ�C�+=�4�f\:�'�:��iʈY�a��A�k=�Q�n1O�ޓ#��Y�~žQc_�ό�$����&�N6ݩ���%l���]z�q�ͳX�v�y؏DYa'3�tb�v�0�^�Wi�\e���?��ɲV�a�-
�FN�(+�dniR�_��󬶝D�~E�Z�~J|��a��dl0鱾���wΘ���THo8n{�P��P���y�=OL��tvƲa�'�x���}��4�.����資r�Ť+jbWl�&+1����kM�������������ZtΪ]�/d�����o��9W��*�t���?�yQg���<����n̪Ѿp~�!��l�Л��J
C��;�*��4��rǝ݀S���v��s��h�m}s�)	6q5�;R���;ؖ|����PL�t���2��_�"��4gSZ8���f�
�o���AV���
�;f2��#�s����p6�3^��������������Σ���_��������M*��э��&��h
��d"��I�^����
��Jo"�D��h!����2"�!��z����_�]D�0w���ٓA�u�W�d�`%�f&"��*�7@����oQ��~�L��Ӿ��߿���W� u���>n����[���Az\�W� ��r�J��>H����L�Ʈ�N���)� j)i��XR�&�HNJ��OJ���V�0J��!�9P�}
~(OEj�l_�ɹ.�p�ƺ&��X�I�����I�?|�����*�f���W;'m����'~]?(q���l_T�p�=�s��5g�p�Yh眕{��5g횳�6g$���,�F+�3g�EE�K��k���$
��6b�:��m�͍�)��6[��;S��o3Ĩ��)�86�!=ؔuX�M�Mm�`ԫ�,ڔh���m�ꭅ�IY܉���r�hM����2�b�h��5��n���>
>������zi	��W�Z�.�V�����lv�͠5r5y�n6�������G55T�k����Ԣ+��2��=%%ٳD�O�bpT�8�� E��*X����d+��k��!���[�
&�7�5v��j��6���y0���AD|��w�4��*-V�V�K%=$�U��(��/�˂ϻ�4��F����*fb�oU0�zK���
�q:L�įw�H�Y�^���]�C""��ON�o<(WH�Q�Ѫ��+o��u;�}X�tڝl$�|�D�Ӭ��a�sC`W-�^�h~1���MfG���73X�I�emd�F|�7��w�v,�����r�44�
n�c�hh+�D���[����bu�v���pl�<�v�c�uN*���%�s���9��x�+2wo��^k
�@
�<��i��q+Q�l��F�Xf��E����������ԒUR�x�\��,�D��(b�[Keu)p�>r�޻�C�}��%���׹-Q3��0���S�(�W.�{����G<p��X�us5ǣ�(�92�hhf�]*a��%l���=�����z�`���凸�/f�˅A�R��4f_5l�:�E#w~�FPUw
��~��	2�x��'� ����؞�D

�!ʬ,�W�
S?ѵ�28���"��Q�I�T��['���)�kF��A���u�{��cv)p
���_x����i�L��E2�P��S���W]P
��az�'5�<.,v��W��x�x�'�U�;C���1]ˬ�䂔�����GA�O��g�k}��{���^���(�%1%H;uh)DŽtϸ>:K|�#|�!�IJ"�H����O"��4�z�G�ӈ��`�_Mj�pK�#�%�F�����}
���b?��;{}�~Br��Zd�e.�Cl\ZS�_5��b��8��|�)pʏ�9����Y�Fd��%b�y/O� S���\�"��%���{-q�1��U��n<�`�����=��Y�;1x��{�ʞ �����'e�Nf��,y5��pا�����v������W�P#<�(�+`1�^��1K|K��3�H�c�2h���s3���>���~Z�>�$p��1ɼ�6K|˸�����t�6����8)i����*��+��%l�7�J@b:$�z�l�H�0����$~g�W�g.4N���:{���Y��d�T��X��-�C7�D:�ٺ(�Y������
�S�Hoy��Z%��7��uVP-�8hq)�tf�h6�z��[٣��oX����q�Gg��j��U�J��W�[7C@�quQY�ه��qaq�6gg��{@v�*C�X"�;�H퐟м��@J����	���7����[4爻�
�	�7�u��,9�	?X�ߔ�]O�tkjҿ~�b�%ԭ'|+�,����z�7�j�zo2�L��(�`�өh�i�|�%"%v8��R���c�
�����L�x��e#p��SQ�&��lpk%�<8�Dž�J��^���e���==6��s�G'n�D�S�K����8���}�^&��(A���=T���m?�̝GɁbu�}�H�v������5A]�Ӈ���z:L��z[b�UK>ϒ�f���n4����0�5Ѩ�*��O����t��%�gIn�>����ئd]��&�F�A�S{ϻ�
��]eBM�zՒG��|��?n<M���q�H��'h�h�x�a�4PP-H�^�,��K���������^�A0KZ�
�'ϖ'D���Q}�Q�̰$[@r䍅k�>�l���./,��Ŧd�8M�s�ʹ���8��`�(�<KB�X5���ǽ��}_��d9����׶��p	�j��Yw�f�_�4z����H}?�F]�ju�Bw��N捒ϳĵ�V7_sF�F�͞`Iʗv�0{���N,(�<K�����G~%]���X0s��J�O��ԩ�SH���~Lb>y�}�WRZc��9�ԧKT��P��7���(F��6;���F�kM�Q��F4u���J��F��a:b�QL�F1����8��3S��޿T�Q=�m�a~������=.p�'k�,�� ���|�p��Y�<u�3���m��y���!3C]�l�!c�!�d��+Q�%��Y�t/��i(���B��?g��ٹ/-�����c�׿���軮��Н�X��y��j�4���R2༧V�F���i%6��r�_{���r�~��¹ڹڽ��
M@��W�o�d��q7�a4 �(
�43�V�o
�(�]î�L�Q��0�4����R�/٩��K¾D�8�W;�JQ��O��J��fZ؍63_��UVk����.��p0�"s1U�A5]�
�4>�{*�7I�A���o��6׋��v�wC��ɋ�/-zR�b�Ȣ��,�ڭ���r�A+�4��>�Ԓo������=�,�kT4F�XC��z E�u�Ң���i�9Hױ�=����\���5;9���.{�X3yo�X���E)t�J�@ta�65�z��*/�}��T׮�!�;�����V��GE���ۯH}D�N/R�B�S� ��%	O}�
!��@R�Y��Jo�ӳ]$�ۂ�~l��l
�F;|�5�������1 � }��x�����{�G0�ű�g9��~s�;8��D���)�2I5�����D�ʢ��->��I��fl�.��=r1�\*�T�ꬅ�n���!9z`(C�*zJ��������Z0��7��K`�қXH�n��\��G��%���=2�U^"�3V�l�R9����G����Ȝg�LF��d.m�hp����w��z�S'�%��
�_������8���
R|��%���^�/���ٿ��K�^����Y�{���e��_��Q�:Gc�C�4k\M�@WSPaIl��A���Hf�b�S9��:���2�zR�59�rt
��Wc1!a��F�ny�n�8*S�I�dbk�:��#�s�˫�l*���,W��"⥳���I���<��(�LJ��Q�o�	��^�/�_��ت���S)��M�U�`H��U�v7�Ì������X]�֔�
�1^G�M�\�:ezeA����kl���e�z��Ls����2v^�ISY#�>)s���&���<�=���!�~�p���}�{��w$�oY��N��+���Qw�>���<���P`����� �N��v�܌��lҲbJ�Se
��,�����}�z����ω�6i�t�d�a�L�3�Y�=��F�.���xCSK4��G���jԩӯk�U(�_�a�w}Os�)�ؖ���Ls��O�!�n�z�N�)�e��ғ��a
���V�<�����-̋���k@!c���+�qΰ7������VXpz��k�%#e_��
r�" �F���TL�;L;!m=D�i��잧�"�T���yl�c�p9�U���/��Һ0�˷+���B�B��v�z0���_da[�����4�a�~T�$���I��ʼܣ��f��2z�\��p>vn΄��$6Я�Q���ܴ�*ł!Y�y�	FM*�U�̴n��3�0�*�L OP��g�[�G��a���]�!�~��1K�kt��!�p��
,̒�E�-z�ZXIq��NXȮ��n�|��͂�U�R���w�7e'$�Һ0%]���S�#�`���o��e	_f��f���>���^��u�:�^�|>@e�,5Kp�{=����*i`�*.������˹8m7(�	��wSГG��<�1u?&��������?)�`q���O��w����&��Rœ�d��y�rLm#����ՠ=�=�����zz}Ya�/L��a�>�ҝ��`)�T��
�O�{o�M�Be��"j�:��k�l6�K%��d5�:ijק�V��kX*[4E�A���6���t�ES;h�챨	�n�K1�>��C���L�po�vm�pn#E��G�A�4�{�j`�n��kۺ���.�V�p&9�W���Ik�VΦ
.�
���I�f)�㑂�N�]�����tp~��PpL���kv�5;�fGٶ��w�'t�����*��d1;���C�:=jЉ�ȍ�����v�eUU�;h�2{
p��;oeDP�|�S� �!Κ�G�j;_��+�o�(\�(����$��ω8}��	��؊�]k{:O͋�&�7���0�	y�/pPBƂa���X�Ҕ�8�ȴȶu
qE�|��>��I�ᎀ�AU��+s�/�D� |�
I�Z��HU�A����K�p�A�?t�v4�F�t�@�����٠���}X��Onˠw��ܤS�u�6,/S�2#e�/70����p�u�(9�x���~�A{[�v�A8�`�-w�<��󴅻��9�ΐ	K{��%=0�G{�opx5�d_S\�L���+E��?�5�WBqa
C(n�Ŷ�/���|�c!�C�E�%k�{�T�S"��
�9?�o0	U�
|[@K�*�K_9lpr�J�ᮔ��נ־���Z�iy[z�x�	���"��<k�g�2��T���m�R��3��}��G ��dV�piֈ�v�n��}j$��1f��Z��9k�y�
�TWg<(�Ո�}nKz��-o6�8�
����F֢ύ�5��o�T�W���UC�x�ಯ���=k�j���԰Z4�e���xu��X5:�g��8�	�}��Ew�w�$�9
��ҳQ�ޔ�e�|��=l
��v��q~���Úm!�U
{���I�lg�>�V��.8������FY߭p}k�O��H��0���"$��۞P�B��Zt��V#z��#=a>
��Fӝ���B����/bQٶ���\aDG���!Zd�=X��&S8-~�y1��
��+y�j�S�۱L���Ey�S%�w�n�5���e�7��U5�U���a�f�=Z��B���k��ՠ������Q��B^,B��nk�����!m�=��BN���p>HE��l���Ǵ�p�7�4��`3a��F��M��j5��iI7݉�0��.具�+B�\��.���|���[�A�s[K��D��e.-jW=���A�͝�
i�n1-53���{�A��5�d&���l��T��F�g��Y�4�(P#Of��0v�����o��ss),��t�(��Y#NJ�憶y�>j��r� 
��'�-��k�z������T7��L,NFx�@k��q�P&�<T�l�Nw�\��&_XA{��`c�5
X����XE��S2]�6�<��i����9��@ý�)eЭ�O�m:>i� 
��RNSn��f����3��C2�w�I�&�j�3u���Zd�8�g	����~�_qꬹ��^#P!2�<q��q?�����wV��ɬa3op���[��hn�Ĭ�|�V#��fp�v[-�⪑�����lP�?���O��3��w��.�;g���-�Ľ�ˆ�	g��jQH7V�ʨ�}�P&��S)78�s[�9kd��mHm�ȩ��������7[�����}3дؑn����Q��Sc�N�z�'��yL�<0�p۩@�~�aTˢ�6A�$2z�Q(E
n�ZtJ}��ww�i��|5-�
#^דXŴ��z{}Zn�#
��"$jmV���C�@Z-:��1���TĶHi�x��-�o��x��j$��
��.Ӣ�H�z~x����ί�����M�-�A}jY쫑MP���+�Q�:f�b�׾U����p�\�`�C�~�<��٢]�t\�mICa_��il�н~������^���/��.�$T��x�B
"��A|̰�f'ԭ�wK�E
�]G3�ym�@;�N�v�$�@;!ճE`Z��7z��ÄM�{�4�S�G�0\5ƾ�0�f�hzv[G�Z�Q�¢5
f�b�5q�&�Do��癳�y����_�-��o��3��S���A��ĥ�PZf,�f�O՝p���OK��@68q�W��c5�*.���E��i5*w���:�j�)B���
�n��V�>s8��*�Z$�B��ɛ
.�W�J���0Ǻ��y!9���)�*���W�Hym5�D5��j��s��GN�l�٢�������w@ݫ�CLG������$CV��s5�z��)|V���&���r7snX�F��pw����}ǰ��Gj^;ʽ���\��w�m�Ņ�G�ݫE^���W/;l޸�»�RԻ&�R�J�l�7,U�y��C���.�_{�jW�G��8�Y��"6�\g�EtR�[�g=��ő���Gn�sb��uK��;�v��tY��k�e�Ε��U�Bjp��5&–u5�W�
q�m��Ѡ������>�^lV�&�-��`Y�ݯ��Τ�����՜�K�f>���|�*�(t��[�Y�%"I����1���8UM��Pu����q���
����&<��{��#L���X%
#��`�€�P�r� s�0Ifk���F�D��~���&�Ѯ1:t��"�#Z�̌1f:��E���5�L�0V��(3�A:a��֢�s�\p��,o5(~�B8�(o�Q��/�5�2���E��n���1�c@�l!�p_0s`Lw*�������g��Lf
���jH��ޢ�}}UF^���YL9���b�F��F�1z�����t�H[-�U�]=�k�q�8o7�&�v����{`�N8�3AI�
�u�m'P�{� Q񌺽Ő���-2�f�F��J�v,�8$��`�n�I�Ǿ&be����բ���X�y1<]�1<d�փ�>��D�u8�5Z������<G(�
uc4}�|��Ae�iت��}��إ��d��N�-�1�H
o"i	�u�d�I&oe,�=1e�J}b���-qo�dE�lp� ŋ*˳}L.�^-
�����	�)���.]��#�-2#f
�`�7[�xb�m7̳��E������l�}��dG�g�g��^x�;k���<�Z��X�6خ���j��>�$�:��p`a9N�0��a5*%��tjm-:�Y�y�B08�-��lp�Q�#��#����ޡ �{���	�u�Ղ�֬�`>�^]ct��s�"bp��֢�D�1:���ۗr�m����
N��Pn�-��4<�
!0��Pnս�@��;��li�X
�.���M���DН
�F���G�4�qA���"oL\%�Ӄ��UW�\u�r���UW�)��.�����!W@'IS�C�VdbN<��`(��I��)ǣF�z`p��­��B��n�Lw�Zdf�Yj&�S�����[�p~U�íC�f�̥3؄�j��³�&|NS�āi��P��h�~�ؿ�� y�n��ը8Y�p����)�o���쩶�5�*�|��7S�+9�ܱ���D5�XVc����V�oY��(���Z���+�ɶc(f�o�m�-��ß5�-G�ZN��H�Qd�&R䎔�t���Yn6�_D��(�1����nj��Xeg�;���w��Qw(�
.wz�
���/#�"�i.���q9D���b@�h	�L�aJ�7��bnp�g�Fh5��\p=d��
�07�#IgDݑ�<؞p�=�Z4��������V�-�%̕��i�-�{P�m���|Gbְ�mp�]4[Tw.��<_[�UY�L^k�ɜբ�~�;0��?1�p�9�ݿ��}�E&��8d�`������Q���h����AT��Ӛ�eJ������p�Jۈj�_����u)����y�5��#�F0����O��8�
6}6hqu��-	��ɚ4�0�Ɠ
o6!���B�ꐿ��=Dž/}4EJx��%f����,�@2߶���6�f�����ll�������ϙ��`�j��<8��)���yf��%E�%�_�����	X�P/f�g3�VGMŪ���P<���f���^HY+m�Y��Y�{sG��g�f�f6�U�5�����7�t��n�
���mNz$O��}�=o;U�
Ӂv�s?�]N
�+�i{u����%`u!S��p񆷍?�
5�]]������E��qR��)lUt������#E�?{Ի�?<g��v����r/�{�'�s��j����{��W�~���5Z��ͻ����{��˜/,����C�I�]Y�ћ�i����`��׃�6�ۃ�֑=h�a��5��j��)��(�"�%�K{�Mt�ȘT��d_=h͞��9���S�ǩ=��Ϸ�}�i��N5��z�Z�q��<��_�hm�m/Zs��Ek���M;�W�+3R�֒��|�X���@�‹�:lH���^��ζ�9����<���:ߏ����O]��� <h�%��t��a]{�h|�u�^��pۃ��%���ƕ�/={>�j%�O��փ�Z��ŵO�[\H|��5:����:`����J�L�'��%o�W&��z�z��}m}*���������Ak��=h��7���,6t���L/�ѭ�^�ۃ�Z�i!f�1��������Ak��=h��~>N-����U������/jݯ��G	&��1��so_�g������X�'��$X,���p�g�gl���^5|z=i�%�m|��xr���'����Ik��=i-%���[�xx�9NL����e��C3׵�5\����#
��޳�޶��9��z�-~�5�[r	p��uL�u���9L�gu~D}�X|������l8�K�[�,�|;FԳ�x���sP�����QV�/�)�dž�W�Y���9k���YK��o�Y�>v�l*#$�D5�6�%�����F�Ak�[��Ak)(Ե<d���*�9�!��2�f��%�B�\��^���/Z{���^�>nU���S_q�� ��Ek��֜��'S;^�F۲�h�#��Ik���
e�J�q~T�I��PS3�k�ъN��A!	��i�ͤp]
����f����],����c5	|� AlL��)�o�t	جFrz!+��e�\�,�k��������D{��3���y�y����x�L|q�8��S2�>fP���\���9D3sfŕct~��:�y(9A�K�sq���s��s����������s����I�e;�,
��(l��ad+`@	�%�b���(�r����G�#~�(���RK�Ϡ2J`S�ͳY��;�0��{'-2&�f�M����Z�6#�q�E����͞XA
p��"
[�]2�u�@R�u<%&������9��b
ӽD��*λE�s��hH��9F����a��-lG�P�f�S�s|
!*��
4�hb�5>52�lHi���#<5�F|�]WlQZ��Fv�CVK��W��>�����c�V�ٽ����ѱE�)�԰���
���!/�Sc�A��LD�?�{�Ј�
d�:��1�����N
��K���#�Ȃ|j��W	�4���d������dt�
*#{�Q.�A����h�o{�Hh!W�S�� А�c�~mDW\��=US��ט5�Ѩ��*{;c��豇�����܄�zhjȟ��T0��"=_s[���Ԡ�?�3�Z0��aȚ�e�-�5���k�X��f�0Z��[t���Z�e5&�ԇ�*��>�c���C�ץP��yjȕ�D#�-�3 ��ͱ��(+�{��1�y�Ǥ	���{�[ʺ�?�
�R�<E��!����������Y�X�`�hy.�Z��x��:�T��,V��6��lF���<�O8�~�D��a*a57͕}�<x8[�«��s�>�K��U�yKl��������5�y�C��dze�����m��Y%������J35�¬`�j
}��)R��Z�-��BYW��ʭH��<-������Zp,G�|�?�^��œb��ZdKR�7E->%t�~jtxy=4�����BN
a�=t�����U�$�CN-+��w�Scݣ����iQ�WD�_%v�K���?Cy��!z�E/_aI��N%�[��i1�rjP���EyZ̢�P5���[��iaG=�k�˱�׽~��>�
3�	���5�̄���tc�E�bʼƾ&��^-�s3�Q�8��^����3L��`-��+��A[w�^�O�kf꧟��5a��5���y�(��u�����W��[0�]l��=���6xv���3����8�uM8�0
{E�+�#-^'�E�o-$K�B-q�d��,�h��qW�A��L�6����ݽ����:)Jv���v$��#M���b�d�5�W�(c�^
�Wx&�~şqد�b�s�A�D�*{���n�ﴈ1�}�4������O����]�%�
���]gtY����.�@K��q�)'�M�מ�JL�:�~�	}�R�f|���l
�u�l��*/�k���G�֢�-�_'
<�v���/�����
Q�jN
���`����[��(��ol2G�������|�����S�U���F�3���c5�ӈ�����\�r5L+i�[|^�P}W�d�jB
��+���FZ��"���Jd��;�-�BP��Ÿ8
p�Р�{P�!�������ߴ�m'_
Z�?������|h �ѧQ�z�i?-F��c�i'|L���*��j��2ȉ3�X�+��5�9��ߓ���}�1��w}"+�ScI�)��)��D {j0D�Х�;-�lrj�t���-�V;+J�4#�E[�T��+�C�Ӣ_�+.��^�����;Q���H�[,F[��I%���vZlzUc7�N���g���Ԁ�ڑ�_���f��׈�|���
���ꩿ%P��1^���آ�k���=��E�E��jo8�����;-�k�Ըg�؂}���k}����u���Ɛ�������Tc����n�p2=�'˘���_;����KF��� v���A�"�Y'Z���)-�a�dX�Xh1;j̝�s�f��j7����E���NR�!�moyϚ�k��8���7#��F���>���+Ѝͣ+��i�r{h�]�ĥ����\JH�ťMqi�����}���W������,�����|��[����>-LEkL`=�r5�i�����p�6�}����V
s��->��[Xb���=#]Cu�������/������T#��ed�-��+�(Y��M/�iQ��(�������U��Ɗ}�S����^5�"�'݈�����C�葤�9-O�SC��[:��`�rA5����wl���$^c�q��.��bK���4��ѣz�%MW���\��8
r����j#��X�r�nc�v���܋��<�S��,[��5Q��b�^���vM8���]�Z�Z�������o�+���jbΝvN�8��j�vmhɮ}V-�
�ڌ��8r�j�V#=����,�(��'ʐ��i!%�*%�Ӯ$;
��L5�J�h��5S���Pc�>���8VJ�Ѯ�X)�;�y�jq��W+W�Ѯ��R:��\_VJ՘����V��bU?>H�gJ��G����`����'3��i[�����
�,D�&(
ӂ�S�pbPz�N��Ւ���|�Bƈ�+����ۨ?C���}+�֋��/^�~��K�^���G�S��3K��	�ӫ;;�6�1�N�Fh�P�����\��(���f �i��4��u�\{W��Z�0VH5l�B�r�b@��Œ��y��@[@w�Z�c�S�M�H���kL�!NK9Zd�e{jȋ��̾[�{�k�u�?-ʤ��5*��=t��<-*��O��[���(�O�8*���ľ->�Ԋ}
���a-�SA����"4��^��=�҃���#��=��.����ԓ�4fj\#�4#��=dW�4�Cr���_��~C�)*�S��b:
���x��"ͨ�Т���k�rMs$Ph!��Scv��,����L��PB�������q�V����+�z�Rqq�}[5����K��K�i�OS1��/�"-ϵ���O�R�Q�u�0G۩Q��C�2����:��|�Q6f-l�oB���������7�u|��
kn*ζp�B����E�W��X��h�T8���E�x^�/�B��Й�
>`�Y�
q�����d�`���
� k	��*�m��a��2�"�͇Z(0O�|'vj�Թ���P �+�зb����E"7��qS��L1����?����vn���R,�L����E=��
��j��0�JJ%�4#=�E�Y�����"mp�3��wjXv�P�QE=-:�Z<5L����c(�xֈ�d9hE��C���XT68-�#�ȒO����iy����<5�l8��_�jP�.}U���j}��:�wx���Lt�tf}Z��G��=ƞc�?���?�T�s;�==->o��9�ڌ��|��3�P�S�j���
S׳��'�P��3��>��+O?�XÙ�ٙ��"�k�	4�K���iQ�U�5]aL�=U�T��4�j�Z�{FLU��˵Ɍ�����p6����o=E��0e=��zZ�|�X��a-=Ч��b�Tc�{�����Y��,Ո���525���v��Q�F�/zH�xZ8G���"��P���r��t]\CuZ��kL*����-C�5�s��q4%z�q]��:-ܔxj1�N�81�P�
������c{�Ԩi�9�����^Vay��%�܅����
C0��.X�~�%�I�a~�ܻ�hF��j:{�T���R��~���P�C�_��P�CU��'1Tr� 7徔���rzqS�6����A��U����k"��z�{����)�i�W�k�V���Rgla������-ɵ_-Y���>��AF��F��OpS<�N��3��_况$��v��E�_�A�b"�^zkO�j[�Q�p讷�i��#j��
nj�?�B�[��V ���f�dוu�w��>��q`��U4�^a�}=]sZ�g�T��9O�?���N
�*9mf�{^��]��ґ�B3��ب>�G�t����"�0m*O5��u�G
�5]{#3�`hP��S���Er���?-��
+�=���r�{Z�4.*΃0]C�).W��c�����`eq�����uZ&��Ŗ��k��Ҹ���D�`�f����Ȳ�{�ܮ�y����u�.�i碞�:w��rҹ�ӠN��U�pQN��k���Wp&J�a�N��:5^3��}�J��u�9u�׭yܱB�}m��uh�c=-v}.ひ�o>G�㇛;�\�ې?�G�Pg��\���f<l��V,~�l���ז��-d+ס4*����g3����<+��P�lz�/%��xm����0�J�=35eI0���6c�R�]�֎�<:�{=b=�\��{q��pG����t�҉���%m�!�l�2//��s����̀��̸����7�ԃ�l�\mw�u7����9$��E\��(Ʉ<e���Aez��=T �1��T������Mgs4�+���F;b��j�8�eo�<��z�ö����?'i�ײ����IK��'�zFr,�zuX���FT"���5Z,i?��E�'Æ�-�ۂxoW �tC�M���b�T���f'aΐ��0��,G6O��
Ŧ\�x��6z}ۊ
E���%x�T~
�|Lځ��	&��+���a�dFo�)-j�a�2MM���]������\}���/�M�e���IH�����T)$��كV�h[j�?2�+]CPn�A[�$K���L�D�BP�z�΍m̧�a�A�=���])���顅���-,�_��!)��_N#���D[&�b�glѿ��`J/�f�tv��i�])�5�`����|Z�$��8A*�8��Œ1]5�B%ݾ�ՠ�S�T�_�L��3�%vi�gb᱇ݭ�^#~p�?T�L��7�E�^���y�y����<-���k�i[���b�y�k�3������Is�
[\�8�+{^-�S��H�8�����AZ��#ݞM=\P��M���q1%(�����#9�s���x�?j�?�xi22�+�Fg�C+p�i����V��yɣ�i��=���2��vU����&֤����#<-,�!��M��.�E�:^�TY����4���	[�-�-eIIq�H�C��E�_���ʃq�V�M^�I����bBF�?`BR�ّ�c!�õS^c\BҫŖ�j���v�.��>�������mt�*L`��+���i)fŜMfڊYY���=�^�YoY�s';ޕ	JQ��Y�u0�زl���lZ'��K�J�2�L����(؇G�L��cT��H�c��F����#AP�j;�8З�;���/���Y�=>{��Ffzfg�����F(PAo��<�G��X�2)�!^tS>�>�����Ϭn���wp�-��O�EDY��"=�&b��,���!������5��!�Pϩ�.�1�����U[��F���+
��r��M��S�������0�����%8(vR��!A�:���|�nj���o�z�/t��&χ��/}�J\�D�-H�L�l�?��?�	�al; �#^���=n!_��\�$�Mu��فT������,n��0�Y��ڃ���
2�@V�z�%����R=-\�tjH�th)�B�5x
�s84�\O���0��Ov"
�Mέ^�a�-�Uh!'1�Q�
�l�UH^����Т(���Hd�Γ���"3��S�������O�$0�S#�>��Jl!�PCܮ�k�?$߉S#�tzҼ�40�Zl0��u���.��A�#�
{��5ںE#�Fh�^���[ ���"=_����׎��T\q�-�A����i^?4��<��C��0�
;pz��	-��k��W�9�wi'~��qP�A7O�߉�Oq�����N]�視pg��غ��e���n28]�c���5A5�O���úk���,詧EfB��F�8th�O���a�~ݷ�h�O)n2���@��`.v��[�j	t�h��S��4J�ƀ���A{��+C��b@3�b���"ݿ���!���qEڞ���	Ա���n��-�Ňp�����bx	`��q
���r
�����N�Y���C��Ğ@��SSSW؇�Y�iWd�]�Yi�?}������;�Y���F�3�L�����v�V�;KgI%g
�e�h�$]�a���̮90L~��c�F�å|.�( ���&S6�bΜ.cd��F���a��({��;�N�����o�R*1
5����'�
�K���:�dn�	���+K��+�0,_H���Um���Zq��wW�Y{/�4�+���QXܞ��7�rc����yOc�yM"`�p��D����"익�������$��Y���s�6��2�:����άe%vc�C��;E��?�.�X�
)Wp�����|R�I���r9V�.9��i���t"7����`C�'��tr��F`xi�����u-O0R�F(���B��.��Z`�^~a0�Uh�k���iu[=
���I����ccK�R*�O��ջH@�-�c�de�5H�>�m;m���)am�D�,�5Y:>s��Ś
uK��"��#�N�w;��H�T+HwhA̅�]����.�\-�{h�†mJR��L�-�:�ܞ�0�����-j���eS�>�<qZ�'�RM��~���s��W�tR���"1��S#_�2�&̌K5W�H,�5$��g��x�;m�y�j1��n��X�CIʧ�(�cx
�[��ՠ3W� �C"�i�ҵ�L��;�d�t�ab��%�9-��E^�Tea�:}�KaOUl��)M�i�L��c^5��䴁-^�J��?5r�t�b��1Nyj$q΢=��i1�����㵩L�ɱ˶�A�����k�}����3j����H�	����7��]�0��.P��K����ڀM|���ĕ�č-�&�	�1�+���f�-#�߮����|ӺR\�5,�Y�M��[��jrOl1
��j1m���Q_-L��[�k�&Ť����i��q�~�@'{���o�����E��B:;�@�
�f�TsR��zJ(��X�vh0�Yj	ְ�	�����&ylY��l٣����	.^�/̲�5M�)��M�x�%�%`BT@�~Kt�E��)�,P��0Ś9X���L3��רҡ�0����	њ�Yh��Cg��a�K���䚐\���x��)\UVΌ'�!{$�"�Fn'�rG�%�DM�6	�yM
I�Pӱ	�?��)<��.6���������6k8T&��h���%�U���Jֿx�L����fz`!c3\ϐmi�i��ѕ��Q���FoXY ;��;Ԅ�n	�K�$OK
�I<�[[�.F��,q{қn'r���ʯ]x�ƨ�[�ܰ3h��c��q��`���陙��r`���tR4�M \��4�!]��;��`�1�>�߃��}2��l|I�
�ǐ\���~O�<~����)����o�^-���~�_�������"�Q΋���׫E��Q#�{�|��x�K�|��7_����o�~+]K�G��Y���R¼~��q6��ҜN�0�j���X�:�`��0�>�x��Y�����+��	W�Ys�c��b���g_��:L�V��{c���e�z8t;ܫZ�t�s�G�f-�#R-ʖ�B5J?li��=-��}�9NR
LMkĉ6��\�W��\��i5��\3k\}��F��\}�fָ�y�Hq[������!wDz�V�RR�
�I�z�V�|ڮ���]u�c ���X#Ńa\}�F��9��7KT�ZxƮS�\����4����^�T����nө��́l��5����)^jf�h-�3M�p�`���P����H�ƴC��
5���!�X�n�H��na<I��_=<��b�G�1�;D����b>L=j8G��2�Đ*��1�7������u>N�ݞ>���‚L�~pm�=Y�7�r���~��=�Xq��8�*wc���<|aɐ�;mKR�k�I*#��ƭ��1��:�F�=��8Y5:����F�&f����#��/�@���C� ȹ���1�
�pX�tB>��=���k_��X�u����nI�������u�Y%P��|,P��i�L�}�JB�}|�aNLnm�;�i��&��<
�WW�Ǜ.�u`��'چd��Btl��������D-����sć��'Ё�\X�.�.4nt���7��ù/Y[Z���A�E���|F��V�v-���i�vk�|y�X7ܙ	�.J�&�j�j���
��#s!�^eꙙ��
g�ykE%2���:�L6#	Z��J�E����m���0A�(���A��~J2��~��OP��������/��R�9?U�q�䉑^d�#N�XÝ�Ꝋ&�pyB5��S���<-�{y
��'�N�Zx�C�ѤXvR���ӽ�g�<����'T�N���(�&qj$1��7:=�#N�4�>t���#N��q�!O\-�v� �����'�;����4qMm���I�l:=��/G��e�Ċ=t�zxZ�|���d-�ߧES:9�Q%;Y$����5i⚷����Ʃ�Ռ�:Z��"݇)�Fq:)�iaEk�F���	�xZ,7y�t�(�}kE߱�p2�z~�]�5<���s�(�/7���H��������ZP�(��~��Q�TN�gc�Eq�%��<_W����\)N{���"ɣ�Ԑ��d~l�D�߼��F7�"�(�����h�r��5����?��"]�u��Xq8�U��[-��
\5����x���̀�Fr_'���W�G������W�����/֟��@�䨔���L%2m��&�d�:;n��W���lޣ��~�6k�~��{�e����)'��Pl��I��W�Mr/˓�~.�b>�M�f��GA�c��G���#�y<��=,��y�%FW>�`����OˑkI7۞�vj�?��aV�όN�F�.�=Ĉ�w|'r���
�(]�e�m �d��,U	r�y�`2q�YODZt媎'ۨ�'��Ɍ����&ەkҩ�3zȿ'�M�n��7�.K�h:Y�5]��{1�T���f�-Ez%wSi[�k�ʪ}o���W�wZ6t9
�+ڙ��-e]F�0�Bw�P`�h����]0�{N���E�tO���> �Ή��l1��6Y���0:ťo4�"�'�%���1�gcӣ_|$��<���n���ʊ��X���Y�޺�N�o>�
�.ҹt�~�t��yt�΢��Ρ�M���W?��ܹHgν���g�E����v=?��"۫�q���&�yr�^����r��Ï{�Î���Ì{�Ë�Ί�|8qUq��H��Q6.\�Lq���Yɞ�D�;��z��:F�,�I�l9"[�=�y?�6�F�]�W5;�g�x��Z;��;7�و_����V$�l���j���e ��?�n�P-�_^�"͛*"0�Ͽ=���>-;,	R@�@:��Տ��o;|�����X��^�6�d?Z��|��g�C���B�S���$
:�<�4��n_��_B2�ãeg���W&d's�]L���݄���ܵ�+>�\�`#-8Is����>���,���n�5�4��@���ng0��l>�4V�n!P�&<�y�_Շi�����q�F�?�;�X�.2��wZ�詸�G˾����'%��*�;�� �X�N�K�,[���H��&������f�~s�z�P��/�!@[�G�G��S��'���C��N���h�3����S:*��1T�_�Sx�9G�NIp$p�	N�q6+�#���(�A>/jG�G��s-�x�1��HpZ��5�#��强�"��5�<��5�5v	셊�*�p,jQ�JXC鑜��c�׈r�g����zzX����3�x�q��Qc�t����_Shb�t��a�b�c_�	��j0����k��z�O���C��^�E�SըϥO���P-ʽM��zp��� �x�>�5�!�Q2F���:�`E�u����X#��iv����5���n�k��%	˕����<�j0^��d�q=Ř԰��f�H��K����Q�}mu�N�5�ƞ��;,aa$�|�O�R�p��y":���E�ͩ���k|�}��Q�׭q*��2V��Q�2�5^%R�j~-��t�&���a�Jm���@Gڼu��1�C
{�/zx��ia�"�F�jӒ_�8�a�G��h:�k؝�/�\w�q'���T6m��q���}Qzl���,	�F� �q�@(�ax

�)zr�G2+�g��쳂R�I�FNcќ��y�u_�P�a}��	���4:���S
w���N'f%7ڡ����\~1��(�"�S*+����"�%��aP'3ݪ4q5�Z�QJ�|�t�k��g��c��a�Ƨk��Q��3����#�C8�F��\i��V)�ť �L;�:�֛vC�rr���!��nv1Z�!�J���\|GP5]���c[%�]��R�k������7�����.��*��r�b����~��)�k6כBOp�z†�)�A,bS�:��3�#���	�cȗ� �
���(�pG��M
�<���Y�%_���Ǯ�G�;�$5�^�75X|θ��S��P�i��zU��[n6\��^2���ث��ƶxe�"g��7�aa����c,z�dl7�OE0]p�Gye��ͺ|���rx�[{�2)D�v���X��Ⰽ�LW鲗�si�`�rFÂ#��U8�/+M�Y�n4�
��㠥V�`+�y��R��j�w6�@R��/�-�,�e$.\l�&$�U�
�?�I�ѵ����>�k�R��}����T>7f��Wc(���(�8�c��T!��2/�υ�ԇw��n\��u���t���!�lV�O�fɽȦ"�].��6�s+.�Ύ.��A�Z*o=8UV �`
O^T����~-�*BWT������oR���������y[��4��igb��t+��c�Rm��`B����!Ȯ����Ek���.7��E�Ρx��� �՟E��v@��m}~�ࢬr�I"�g�폻�di5�s+��u��:[��R�'ۚ��y!�
���Z�c&a�
���o�Q�q��i�#O�'6�[!�Il
����c(Q�`)a��TB���x��X��ZBz�o��%��LH?�&�xl&$��7x�&��&�ۑ��"h5P�<"�q��jqܙ�ƣ������J
�A���A���R���`���`�G�:(5�"(5X#a�|/^Tj��	%=�_
�F�D__+���j���4@�6�b�v
�Uaj�҈d�ۍ�������,�T�3n/�3F��Qo�E�oN�5}F�nʌ�����^�
Pf�X#�-�xԟӕq7�`#=��Y-F���ڌH�״B��ֵ�R��ԡ������D�)eFsoʌ�YL�Q�c
mF����Ώ����u���{)���]�ʆt�o3�5�y�JOj���F�j��!���w�Q=At��	oa���,����l��5L���9�^���B
sYʑ^���-ƼJLy1Ž���W�ϳ�b
K�q��z���Q��Fc./]LףMC��<Mx�ϣL�n+�TCs��\�y���B�ze���,/ʝj�K%�G~b}I4-��.�
��h���)� �E�dc��e�$GU�@�b�d��G�vF�%��F�s���ˍ`��"��lO'aa&V=K:K��D:.mD͒�ӂ�ψ��jn%���c?��"�W�׭z���4�^-�,�kV?��XB����_T�@?2�^3x�,��t�e����TCpF��3�l��Z�%�1���jL��z�Yg��~��dpP��7I��ZFo�M:��|�=��-^ vc1h�0��%�F���,RSk*G	`�h:낋�|=���V>��E|��Ԗc�"�X"�_��g����0�tS���|Z㏒2`�ʅyІ��6�85m�G�-��#K�_�𐖒�p�`��Ҕ��G���J�H3	��FZG�r-~�>�b��֨}[#�Q�_S��L�i2��:�`�<H�ja2��u�q�颗"|�
���&ۛ��*Ǖt�-H�Y��.ȓ�]�	h�7i��|�rw)�I�u��Q�Q2b�IJ��
�*
{��7�yk�H��҇]��Æ���R�K���	������`e�񆒵L:�X$N��8�����SGn��15f�6�Z�)�I	µk�6�W�V�炪�I���N{��6�n͞��<�6/\C�ր1�
�N�z�z&d�X`��je_��Ct���|y�Kz�2���}��s�ޝ���L�8H��;U#�XV>�J������
	�."�Sb�s��;��v+R���#túy���/u��:�L-W�(��Ll�
��z?��%Mew-G�ɩ�?��"FK��=W�ު|{�3pV��ͦ\F����2ZH��7�ݥ�jj�
/��w�\.rvf��,�%���K��{c�*��=G��2:y�@����C�:�n�Jq[#j0���[�{R�n4Ii-�n����T�{q�U��{�wLKb��c�L���Ĕ��K��t�m_��� �����IbU?�U����+�t-%�&9�po|�΢��RK_Č69%gN+O�&9��o\��V+�D�tN.|��t�V�P����cR_ϣ��dw�<����R���	忋_�M?b3^�ni��Җd���$j%R?�P(�Ѱ J��|ѩD��Ҵa�"�N���w��e��
3��ض��^|�l-
�?�I;�T����A�����բ�W�Y�� KҀ���S�]\�&z���H�`��m��d[��;񣦺ז1I�3�Or�q��XfϢ�a48;9a��Y��r�␸�veH���2����h��2���zq�7Ҙ�=\i+���mJ�l@�]�PGWV�B�ZE���]ȏ���,�h}�ְ�tU��
h�f�Kh��W6�a�%%5�B��r0�J��3���FF�i�J�m�P�
��F9��C+k��8ҟ%�a� $'��,z%�em<��t:"�W�٫/��VZ��hN�M�#��sRP�m��O�%C:�����1�I0����N�%۪XS�H�*��;����E�{:
�M�"[H�CJ�Zl]wp�h��7��o�~��P
�K��uX\�Ϥg@�tLM�<�8d��_�h�B��vr{������>�e��O�9�_�kt�IaI���V�'���s���.hNzb���t��n��ɚt�k�x�ԃ����[���i�?`�m���j�w��x��A5�aCP�!��^j���o^`�e���򽤥\���&(�h�Z��3w�&��K-��RC��-�q���~�ݢ��8\	�z)�P�R�^�PG\�cV�/,2�.���";-�ya�9��{�Džx:Y��y�����Džx���T#�O�"�w�Džx:Y��q!�Y���x:�=��~�X!��Y�wp:��D{H�#�DEz�SPd�j{[�5�{��(��`=���os�ٽ|0��O�0��)�"���y7�]�{[�C���ؠ]�v�[X>3��آ���`q[�j��F�q�ntr=��)(�k��4�4��CZ��}�,�n#�xB�@�y,1�`��X!�@�!�l(��)�)(���(_#���ct&�����V��l�s`s�Nlna�as����tբ�cC���{6�{T��s[�=�<c2���F�Ǣ�������H��I{#�0�[�зCY��U;�{��ne��@�?f�TB��8��?�C�Z��`e�a��b��ݢyFը���$���j�k�5,�I��j�ja���C��A�3o�Zx2\���b�''�F�n�9⹏�9j�p\-�G�U�i�*�<��e|�ۻ/������F�����_R#,qu�w�L֜\�<����'C.�^�ϫx<����m�c���-���<��:�0���xj8"�LJҳ��'F��B���T���Ѫj���Q��e+�l�#|<\�X�-5\�8u�u6^uH���H�J�)�>	ҍt7�$�����6�Y��+Z�F����a���)��!��)�x<�wƜ�� ��,2[��2y�s<K
�.�gs��-��.gʧ���Aof�p]�܊Es��ɍA�b&@����faJ̃�1�/o�SS@أ�Idr�|X�}�uY����E9�6�'���8L�}�J�a5����8;��B�g�)��bʹn�
<�0����<z�D�)GP`c�8�Cf�ECd'�(ٙ��4�=tۖK����nFC�ޔ�hW��E�.ԵQ}D�8��9�)�!b��u~4�28������'�u�C��NE��I��e
�d�^eˠc��/͔I��|�r-�h���ᑆ[�e�T��;\��g?ye�Z�E#��&=��J��L��֦{�M:~[:���*d��ܤR}L��~5�q���+M�b!��ir_Ns�Q��Aʣ9t��=�#��Hr��x"ȮP_��7�lBz�r�J{���Y"��f���׫Mw��PʋN!�f���r��cg��B�A.��(I
��8������
�k� ��YҜ'-���y'4�v�y�v�g3�`v��C7XS���)�1C�&��4TSw�W��s�~}0���|hG�ܽ��8W�|��k}yx@�ac��̭�@�\%<!��	�vS���ˤ�/���d����
S҃x���Twj���d+U1@�f_��OL��|��<�#�oq�j�E}~$��8q�.��`��d�
���?1�P����f��o(u��6�:�M/M�Ϗ�۝i�Q ��e�{:��v�=JiJ�&���eϧՠ�]�=�-��Ʀ._@�Q�㾊�рz�%S*��d]1!�۠�%�}��$o��C�/[h�X��`���w���ଓz�ޠɛ�6�b͌5C#n��,���0<�YR�A6E����
�H߿�*ݼ��/�S��A��
ƏnV��`�q�3bL�c3�38��\�*��6��o�ph@��)z��bO*�L�/�z�h��d6��[t5K����/���
	k�����<q�ʼ
�~w������m��r�2�?3�|��f�u����J��QU��̔��Os��X�Kgj:6n�YA����V��Zl���n�%4�ǔ�[Ҍf��g���F�Hq8�!���)�u�+�u�=46+y���()�JKN�gc�R c{�������"Q#�&�g2D���u�~��N{m���:۷�'�m��:�f*H$�C��=�K��~�W�::w���ʷ_U�ٯZ���7��7lm��2�r�Y�U��	�z�������ֈO����Yq�Zوάv���} ���s�>1��}�83�Nٯ��{�W�������eC�{CH�=����YlZ�������~�+�pZ6��l�Q���i_ͻ(����Bz��uƖ��sp��`�@\(��tbѻ�L��[�*��W4�J�KSV��NA��Y�2��L���4�D���Ρ��R�)��#�P�\ s��ɩ�U�g�B0[�Ϯ�<L	�xx�~:��7�8���KWg����BHq^��-K~�z����J?��=ч2}���7҉���y�����8����_P��ݶ���"a�g�����CST�0)�p
~A�l����2^�;���Y^/�w}�s ��g�f�k ��~��T�0�]4�{#��E����D\L^�
��y�|��]��4��G��G��>;�#��r@�L��� }�>�������C��Gq�qwg�AaK$ͯ&Y����9Ik|׮���G�z�l��Ob��#k{�Pu}�q����~0t��<`��ߊ���K~�3)�d�%n�Y"��Q��z쌋?�En�Gd!9!�i�P2?�����7F�2��i���v����?qV�����q���y�/��d���� ���tz�8g,���:m6�4���U��z�_�a��1��KaNM[�^���F�%̣t���8"��J��>�f�ok�>9��;�W���7�qh��?J�`	�dn7�B>a�3%9K��N�
�$�u�`d{�.1���ό��<�
C�����jc�F�O\ؖ�h���ϼk�C�я��QU����?��m6�\�/�$V�`�	��첝Y����&���j`�iY��f�RK|L�g�?�M�7�������],Ǜ9]�W=vq���h
��`:7�G��9�Gh�@�5��vT��Iߠ_�y׬��OZ��F���O}��/Mu��?�&�g~�N[>�?��T.�J� �h*�l�Q2zpC������L���G_}�	�R�Nz���e�$��\7ˡj,՘X7W1����J&uĀ+�[AV�Y���D'C�O��E7��z��z�{��{��k��\�R�,�e�S��Uڞ�̜�T��#1�C�&E���9>���n���nǟ��>���k:�=���
�)s��E���l���e�J�wLe�h����aK��{�SO�[�]�e�bU}�6),��M&��M����AV�ɠ�̔�j�;Kd*M��z�|J6-{��̺e>k��������{��;�|[�Z���'�Y�QFoY
�<ˋR��zҢ�kG�9��J��b�=�d]rl�J�'�(hZK>L��C�A���ўo �퉟���뉟ߞ��z�矛��7TWze��Y�Na�I�0�pR$��Lz�%��?�r��7�����a�+ˍՋ�VB����W8�X笟M�^S߾M}M}{M}�6��5�����)�O,A�K���<Z�)��Y���V�Ŝ�6�Tݯ����V�	R�ڋ��h.��s�*!jVU�[�N_X�g	|
��W?�d�ۼg~��~����%��۝:�w�s.N|�>��9���;����F��k��%�s���)�xd�q��[�F���o�[�����O
a���v������vn�y5p��n�W�⟈�btS,��`*T�ܪ|�����;8��3�t�{{�{��~�����7�*��?0�u��?��Xa�[����?қ��2̿��l�p���u6;�is)��Av�Tg����"��K�旫h�_��'���m
�k
�������?���k�0e?j��d?��T�Z0<�7�,?�� ^I��͗�\-C��x��d�d�ERdU���!w`�U��cs�8.�D�ſ�e�%��|.'Zך���� ��J� x<ꦗ����|tw&ڼ�<̗`6��z��{j��yN�\�{O���f�X���2������C�*#��g��ȋE��p�!hϱ��㊗�Z�=� _������R�җr-�$���[ک�[��<�]�zVP3�DlD[ �`��>���
��(U�rU�����@����M��=�Ep���r�㛮G�x6�����C�c�غ83Ys�����gz�.a3��J��)�N�{��H��S{f�\��L~�'?�8��ޙIs��~ L��N�0@����ި�\oM5��P�21O���9#?�>��)�/���K�_>��؟�M���Һ��u�ǝp�f�wt5\
�Y�"UIr[*���0w��������V�n�8O�`��0�s����O�|�|��O���rP��-��,i�q�?�ӧ�iswe��M��2w1�rJ��t
���=#j&B7�Hzi��=������z�}�����J�4a�]�J�i���G&��B�f�^e��Y�00F˴�	}i�StP��X2�$1���<:�os�/�{�!���1�qV�A���#�}H{���~��
��'�C��&I�t̰�+v��\���(��p�,��.�˲C�~J`�˅xM;��+�KT��8�Z��!�����YA�߿[V�=G}�L'�t�e�ĀT�4�r�	�%����J>�	S�Ӧ-OONnX�D�^Y¾��f:��g���z[���'�O�5�5p����-j��{�K[��U�<2Dw�T_���H�-%jZT���:'��T�X���e�IbM��-�ȪB��s�֝G����+Y,�����:8^�-��6�H��%�dq���Ƴ07'��󴤩[���FkQ��e��t-��͠)[T�|���"�Wӵ�f�~�W���ʹ)�W���ɹąA	����F#
a	�HY��4����8;�F�;��-�t�w;5��fz�NZ�v�Zx��-�l��ϵS�޷l�����nH�|�\G6�
���<>(����ϑ�DH�	�"e7r�I�_g
��ڝgj�����S%܂rD@FRL}��K.U�\�T�u��k՗���,�W.۟Z����⢹f�?��YG�T�e��*�$b�y�9Ú�Ψ�I���GE����F�<vSӳX���e���W�;3�_��2��?�J���k�_����C:���`�
�Ц�sj��hҡ��K[�([��T]�݃,}���<������A�<�I�E�;Q�.MiJ����n��3�X!
�'��Y��*ikK#A��H	���h�S��&^<���7E;�ǐ����
���4��ۯ�!��y�"�~ɥ��[��+���=K9�y��p�.u7�n攥wB��apb����t��߼X�w�R�d�? ˡ�\�+Ҩ�0o���t٠�!���iV�S7����u/��帙�46I-q��%��!R�\�_��"k�_���y���t�S͔!M�+�5�_o�ۿR���y�L�0��ȏ�!<7�̣dwe��Qc���k~:��/I��8e@6�^��T܉�����uKDND��D��+U��Mk\��^�6!�:���d�δ\v����[7�m�^�
-�(��$;-`��\M]�I�RWє�8�Bq^�Ǡ5&V�+{wLY�:	\�z���&�9��-�MU#h\֏[��~�[�2Dn��eQ�4����-��O�E�irs�r�?�c'˷Jo"f�il�
��`܅�c�L9��p-6����6�C�+y����IxӪb�"r���'�<����Wא	~���:ƯG�ӁLټ�}�
~tಣ������*h�r������vJ�?i���wr;�;Ӯ��n�AF�&�l�s��_�Ɲ՚��<A��d��V�3{��MN����KPoAy�塝:��~�J��D�R�i_�|�/�����]�m���!{Ҧ}�/���`��!�xH�hv�J
��A#�M'!��'7��}g��q��s��h`Zv�����-�c'�
4�.���=v�=d���0Y�e�ǽ*ݨo���h��4�RI~��t4��"zp���a|3��fj��t<a|7�n��?lR�vS��2d��!sb=��Ni��KV��̈́~vE<�yť!!f3w�m�U�/���)�0Pٮ�lN��6/��(`�Zb3��Y֋h=�6���<��nYK�!�Lk{:/��w��>�ğ��G�`�b�o��؟������r�qw������q�?��Ц��I�uI��#�j<k�U�Xe�(߄�M��ѳ�KdE�`��?f`ճ�d��$5�E�ܥ����ld�a>	��҂��O�=|�kWl
"5�7M��q{v?+Ʌ�?�w���t{���h0h���6q%4<#
�C�V����;�"2l���n�B7}=Y�otK�3��xϏ'��?QQ3η�?eJ�Loh뿌�#�>
�00H�߄�:���$/���Y�M%��nl���T�$&������$�������õzg��\�����eM�W�W:��Rcu��lQ0���i���%�"��6lp`��!��?��x�cL��r�ecMH�C�A�8��X���_X�4�}2e݅�m�{3>#�>F�<�'U���?t`�a&�
�}oy����`��"W]5�89�h��f�[Y��ٺ�+�'���x-�U����b�j�~�9�w�֥m�iat���n�ɲ�k�}d�uT��A ��N�=SC��Cf����X���e��x
�Ѭ��Ӥ�(�g��E�2.����z;C�}�{3`����g�����6����+RG�Th�Ͻw�<�����z\h(�퉸o�%L^7E�[�K�T��Ė��B��s>h�����{뾗�ٳJ�� _��(�1���pFRj5WSJ*�o����o�kZ�?��OL}�eĴ0��_��S����ŕ�e�����N�瑇�;c��n+��F13�g_\'���NBٌ����\���!�'_�6��yW�*a~��U��H%����U��L��;,8�lp�S�%���T�A��J��~�z/�&5��S��$Fz��]�0�t=��\�yt�9��&��R��E'�҉�j�ߜ�R�Nұʝu'-���,/�����(}ۺTG7��љ�<n�Y��_#��Y��H�j#��ˍ?C�4i����帏`�'������m">�pߘC�Λ�v�h!f�5"���x�B��ak���(�K�U��?\�l�8~��c��t�7���c�w#O�{�A|�B�%�$
�`���?��y�k��<E3�����?�b��g�}%9d�`b��ƌ'I˯�b�lv�R�����
��?��0i�&�,*1�P�
�H�=�wu��$�W�'�31��?�/�ר��-�u����9hnw\�M��\Dw��
�&�1K@�[�[O�чhs}��
.���9_,�,����7���w�l��a^ؽ\�6M_��w	���(��~���F�|�1dܯ��v��vk�n� n�ڂ}%r�Z�$�v9N���nh�����>HX��ur�a�6!�ZuH>���H�ˁ��C׶�%�j�¯Q�Ȃ	Pt���S�$��ALD(&�"1���EgO��kWBb΄�c��
�5�Y�����S�_|�a�7!���L�@�
��%�^�KAؾ�U����͒~��+�Ȃ�7�1����+�9����]�H��K�#�o��iM���0~��F,�{7�����^4��ϊc4󟸥�C����o�?+��a~k�_��^�[~3@3�	~��(4�P\pv���3�����E{���7m��>%�":?*��c��}l�x��.އq��E��[�sT����y��Ň:����g�h�jC���$dn����[�r������uk^���U�����Y��N}4=~�q��Ǐ�8~�j��������:�z�^��6�#ʼLjb��cU��JG]Gw�x�㥑�[�����\c�/��Ls������6k���x"�y�>AyS�q���Wo��z����R>͗M+��S��X��������Ѩ�)���_�/����5o;�m>F�0F�����A	�#��w�9���1W]�����_=�����._ߍ���C�q��v<��>��=v��=�N�߫��Z����p��u���u�L�	뜩��F�R5_����_RGG�0�hh���:-,�3W��ԃ���z~���f���_��bA{�g^���X:L���V��M�&
;�5�o�������Œ��!������p�6�W(ãGХ�x���[���L%ፆZ(��F��$�hc���I��4h�N2��!�8���fK�>�=�I�*&p8��n�~}k@���F
�����\��~��ΆkfJ�g�D����h~�6�5�Z��c�D���Y�?���7�-6=������ķn�����g�=��
��5����b�3�^ߓ�=i�~s�ϐ��N��L`v�,��c�j��37x�
��tW��y�|J�,��ǿ3��o�3�O��;K���L�d�q��b	��7��tQ��:,�UO_��W��|?)<�M-�����(P�GǡMqȪl�:��W���aC��V�J!�=�A��,f�i^�C�;����ɧ�aD��—�����ӥ%�䳇�6�d�*��,���)�H:�y]y��%����zw�����$(��$�o1>�%s�S.k
!�����jhS�v^"#�#*��[>�I�h��C�����>S��P֎�b�Q��_,��	�.��T��$k�JN��k=�-�<��򉽮@��13وr���3�]�Èj*v&�Y].j�zJ$j`�O��{��r�A��xF�"�����vV�n*�O�<_��p�u��I&/%nl��
���� K��:��u�U���:}��W�]��?���FY�Mَ�>��3���?{����Մ���-���#�7��,��6Y���w�gP½���
����A�=S"O�<��`�K�O�'����#d^�gH����D_�W����R�)��k�rS��+�_�}���%��#i,��Voz��oYOU�v�
���IT�7d��z�͒k��Vưϋ�oO�����/�һ�7�M���e:�(�1K�g@]���.�1��Z�z���_�$eev���#�%�,J
�`�5��C
�l7=�kϻv������a�z�����������(@���>�<��~�t�)��q?lwo��z���g
�X&%�٩�+�C{��8���X�}^�K+w����~���z�{�4���e�n����G��u�K��
�|����]�ޣ�[��M�[��檀&�*�y"�o����UaH*^ؿ�>��f�c�z�G'r�'s��<ƒaAt_��%y�H����m#�ӅIЇ|U��{~s�Q>���GtIOK����P"=�C��N���&=5FI�u�>��A4H��vNb�c��~zepKީ(�7ѩ@�\!XI/����T�h���/X�H��o\��R�=-:|N�Ng^/�~��f�|h^���� ��Z�9�W���s���7]��R�pqE��޻�烼�ZB;X��p�Dk�z�s�&r�y��?�}��=��^�M~�M��:�LU�p���Bu���=���x�DNGr�>��u^�b,�n_�F���J�<N=j�>=ޣ���p�W_���=��E�]t�[6�i|�!J�F}�*���N>��x��b-��N=^��/�dq�Ѓ�B�����t�U����6�x�x������Z�z�����?Kr'Ό��Q%���g�0D��5�c�w�=�A\�嫯ߧ$0�VR������?��l��|�J�o�~=���zޣ���Wg��z��E[و�z��f�$-��*q�a&"����e��k[ل�p�z�$��ͼ���V�BhX_��DZ�m�q�a��8���q1���~���"8�E͘X��=��!ߞ�3̷�]�z�q��_�qFzJ���B���5�/���n�{��o�Lxa%&@lC���z���Xb���1�/#�3:t���0����|:��A[h@���}d�q��_��m"m}F�O�
�1�7�h��z}ǔ�8񞟙�<Ay�)A�5��8��㦋��eo}F��������X�~m�Y�껮~��<�nY3�w�q���k��՛޳�E��%��s�*irI@I�e�u��H�Ӽ�cm"m}��qY�_����E=�I/f��&��7�����5D���?��V��a\������ǓY�d�Iz�J�4�>�{�(�u��k���5�������_��Wn�̈́�3��ޣ�o��{U�1���]�k�|��r�y�����1ƪ�z2\��Ѱ�͋�Qc:�Q���%���������y,�^A�n/�#�:��Gl��p}i���H��(-Po��t�7?��۱ym��)�łZX�_�$94��=s��_w�q�u�t���D�"�#>�N�/���("h���x̗z�{��!��k�s|����ߌ�
c�������u���6�W7
~����$�~
����=_��
i\/
����$��&���%x����[Z}ރ��癝I>(����+��mI��y�p���=��`k���aga��F8�9���������=Ĺ�C��1���=�˗�՛�S��/~�ž~�^�
h�x�q��8��36{
��ĵˣ�P~�*�2��UU����NqH�h��i�o�G���p�{=P���؀����
��~[	�I���	2�b�K�X�x-�;R��92�.����`�����t�4`9,·}_���$F�Sq�����W�υ�p�����z�!���"��д(xq��W�%��ᱲ/�"+���	�Y��J�29��z�j�l�0`V{׬�A&((J2k�}j�ΡE�BoUsڸF~�g�
z�6�),I*8w&�@�y�;�h�Y��8,S��1�kw)�M1�Y&��U���ݲ��3��cݖ0��T�o��$ܟ��umK
6Y�&eA��)���Xb?{���
��+Ek@���
�j�%g�H`�4^x���ME�i��	
j��z6��<8 �ޠ�eg�h*���A�̰�vV
܉�A���.(��ge=��&li��M�?#X ���k��Ŷ�*ѶY���=I.�ZB��6�����7����[�~�����D,��iβ���Ξ5��4];�V�`�A�꓾��ىHı,�
�?��`g�~4��ō�x��[8��E'��*��|�b�Va�[l]0�#.���`�1�V�d�����*
�C.��E�8�%S����Ѷ�l��<㊪��t�Q2��;m���S��R����oRv���\�oPu����(�ӴK�U_��Nk�<���
9p����;������
lyl��u�0�r�����v����Nq���()�{
7Pͼ�M�?�u�ޞ�K̀���=}c���)�m����';7��$KXQe��=���˸��r��k+�CW�+�;���̥��jCB6�ã�f��Β��0�ח���j� %�mGܬ5��q�C��Ol:{c���S��1B�ɞR���}�ʚ6����u���d����?�vNV�Zt�L��ώ�ᢷpC�y[|A�"���R��̮c4�v���s��g�|�p��X6g�OG4]2��&�c�"t2�g~�j��G��9�fq�\�ʐ
kV���"hY�3�̍NҨj���6��L���N�r��õ�dǯ[�q\
�����ͫ%����ˬD�+���/؇�O�nN^�dcV휥���dŁF��o&A~�������G�C���?���7
�X%���X�V� 	��d�_Cx�!,�p�l���ʺd�Ί�T]\΍ᑬ�]�h�F��6nۺ��o�w��n�P���f�w�-�'dO��w�[=0��v����%X��6�����	sR�E����^���1V�̋v�1�"d�Z�ۧ�UQ2���b��R�"J߼~�
�5n�雹�vYbx"�4��>4�6+����[�zH��{�X�`2ᓷ[
KF�erd�R��]lC�bA%������"֤�'�d!pGc��y-��&���g-���ԫ.f��J��Gɔ��Y�H���>����ه|�����t;Z	ޏ��1�	im)�`Mȼ�sr�ʬ�O�&��s�3f^��Y< ��?\(\�AC����mS����9T�lAs�Q�"�,��-���P�;e�Mc5 J��;e|e��V��M����Y[~��C�>u�7|�k���DŽ���s�c�|c|9�/q?6̹����p��-,��[�*��|džs/t�F���_彄��
B�wO���t�A�����J��2H-��A�B+�fr9�B��>F��k��@���{����Mݤ��IS}��KPR7ktw6�8����x�
q�Q�7��n�R�,l~=x��q)*��m�C\�ꓡ�O�<���e��R>����Jь�.�$�N��X��Üb�t�<+x.⋴usf���<,/��7�e���#H]zbnf�����5�qk*�B�g޶��^3�F���$lF3+��`��E�q�	�Q��	�3�}�-��%&3	qx�,&�������=_;sS;v�>>I:aR���'gN�,Q�i%`���o��H����
DU�N�`��%S5�n�=l]��!�d�J��{�;x��j�R�R^
Ym���m/���?䱶8��e�<F�NFX"`m���3�}�B.�
C5-*�c�U)M$D��B+�^����tG�8�Us�W�1�Ȃ�
�����V]��"R��,�g
�׬��U���$��׎�el����C�B1�J��l&���{]sB7�0��?��_��?:!o�gτd�6=�m���ţ	W�Go�ə�Z%���E_?�2��៘㚧���.��E�_���FM!�x��_H.��Ef�_�@�V���fO8�
n>�+�؛x���oCwe"��h�(c�a\SJ���\�J�XYR�O:�
�o´^���Ej��M�-�F�]���"iU~S�(�{��^ң�����rAZLU�3B''��eqG:&�ܶ���w8���c�v��֥��Y�ǂYA ��9ȣ&��p�a�-
_�fk��&�v�r�x�_�K��:�,8?���`=!]��'5�"����*@�Ȍ�w�J����`�Q�gN0�II�g���Ls4ȟ���2�	6$�盾vZUC�Y7t�lS��CH�o��jI��Є���Y��
�`�t�ECy�w��P!�k�I@M�0��7����s?�ǜ��/Խ��!I*ʆ�L����8��u��&Sqs��U��lZ��Ӯ��R[L��^5�"�&�B�>�������nf�r���Vږ���NF��8���j���Y@�E�CY�	���Y���e7�Q��E�+K+Sa"5)!7q��x������9W@�:����ĕ!d#�(FI)Y��}ӧ���ٷ�ܿ
�e�,��W6��0����S{FYIhD�ṷ�r�@n��X��*�$|Z�
�w��P-�:M���[��9��^����㣋��g��EP�q��G���D��C�%�5�n��⭓�p�<9�c���%!G���Sa3���G�w�у�}�/L7:n�΋ڸ��9��5Jn��ӡ��(Ӥ���Z�+
*�y�m��m�D�H�k��%�W�v��&�J��Wn�˟I^��PP���OhG}F�b���
9��G�|mZ����7O�f��T�-N�"�=R�y��4�b�y|�ؿ�B�/���C������4.�ұ���Om[fE�	�:I�x0�/�.¨z�O�J妽�+ϓʬ�&��ҥY���R�ՄP~%��N^K-�)�n�5}��3ɖ���P�O@!{�-�)z�-=�B�W%�F�1޺��Yb�x�f����|�c��8��6nN�!�W�tکH阅q�Bn�8\���|�\��`�e�K�S��fO����]y⧣떏@�	W�l�	�}l
�������<Q�D3�!r���$1
�}��-B�+�k�T��U(�h�[Fc��E�}a���u�X
4�V�F��Yt�� �򵬸0��Z��ڴ�����n9�24{P�����)�i!������������qȧ�~-���J��_�����s�n��h�2����qu8�-�K�f�m�|��W���g�[�����h�\b|�����#����̃,�Q*	��;�x��UH6-hB��Š��2�g��.�������r!��ܯ֦���������V���EE=u����t�"ڻ����{��M�:RWF�S�йzh�F�-�ñ/֤�C?�r�:��だ�Y%�5�CM�HVҳ�� !�5�p�
�X�=PƧo���ɢC���<TOx�%�5y�RoQ���E�t��{��́P�s��4�ʄX��
I���Yn�EI�ɀ��_��\.h�y��җ�X(Xi1�p<��sVM4�Ӥ,].�H	�O�9QI�M^G�����I�=��?T�W@�3j��q�����˕V����6$��0��.1@�|f�`�T��B����~*�*K�$P]�Y�k��g���*}�`�<id);��yG�,�M��J���=G;����27�ِ �z}���F�e�:l�I��Eś>OH�Jж�I�[�Y��"�X/N�6�-�!u
c}�I��k�B�a����)*b�z���,��a{�z���6'[u)��3�
�Ժ�W��<��S��MT<$Lև�I� �+W}�,��X��	0Qݼ���Z���E��ȞmB�ڽ�R�EB��JQ�=��CP9�~�%��Q�5l��
)qI��$iz��n�p��O�Xl�w�&����s���~3��],qc=b�}��|v����ā���[�ͳ��Qٚ;һ��`{�������*�{�-�V�L�\Q؝��q���]b���T�˖�y�s�����a�t+����	���]����	�������"HC� $��Ɖ��jk��.
�p��X�‰^�3h�OVBW�R�����v$C��jhA�[x��*�vJ{iѪD���&Ak��U�Z&�'п���}8�Pzڜ�y	j}��^<t�y�MM��|ȥ�:�\JG���^����Y���f��${a��:������g*��	�\�q�f�@�L���!
�X��B���K�6pA�c���_)����=C�}Z��sE�;���
�n�<� �s�lќe)�n�4RwQ��ך�,�lٞu�C�Gι�^a|�@��ex���i5'|k�^W�c���=c��~���`�/�W4����-�D�"T�O��+��C��ձ���x#;q���D��$�j�#2��P�$i�+*��k�s�@��>yR�����E��C�'!�‘����Y��e�Q��~Mb����fC�޸�x���yrc�r髈��(.C.�{��~�Խz�����uaZ�n�:��%V���]��Z�J��bb
l^��x�f���̭�Ň��,ƅ܍)��$7Uc��O�0�+�?��J�<I�2����rk�/M^,��dO
�h�̦����FL@��91��Hc)��T��¥Mًi�#�	��֝�/��XMn�R��
!�0�B�?,T�w��x�PpH���
�f���p}�EEL�Yk\��Y_.��\R�A.����x<��pPFR�[��Z�i�l3b��E���ϓi����,A&�C���Y�=��!Y���Bϯ�tW���f�|�_��i�g�&p�<K�[�������>N�'%|P�U����C!hU�~�G�qk��4�U��}����>�Z�Y�D�[��K����/[^��^g�y}EE���ԟ3zM#�+�`���
&�߸�&�
Ўu��bN���B;�<�[�ʮc�&�Asn�>��@�D/KU���B@P���u&�R�pk���E G�6���-*��s���*8�7-"�`Jf�I�m9��d�/��ݚt[����ii���i��̏��.-�t��y̹,l;I�@_�O�띉�x���6=BW�+�նM
'.�I�A��K���Cq�3�9�k�W�<]Y���u(W�q����;w&΅��tB�F�{�I��Imz ��`YqN�,�}�$�7��z&+E���'�f��;��LN_��@��mB���qÜh"Q��W�����4�=O�q��C9`'|(=]/��0\�)ES2�dayu��a�wӑ��0�ף}z ���V���
�I˙�d�Ϝ��9ۙC���69\Q �;<\A�5����VD
U�P	td6A�w��e(�� m�A2��Q�4����ѡEQ�i�"���H�R�����%^�nGP�B��dR	�ѓ�I�RYR�x�4�Y�
+�gI�9�Ps�S4�ݣ6��ӧ7�M��Cq5M���ے���~�u{���n1�	�n=g�����o�|�(+1����`A7S�$�i]���1�#Ӓ4z��մm��'n��3X_��k/ZKC�zh�]�Z���tgL���(Q�lσ��n�(��(�LWM�L}��-�=W'�����*|Y�f�蚹rH#�{����u�W_�=��		��͖�ze�d�Wבy���H�)=.�h=����&���a+�fѪJ�ň�J-*�σw��Mܻ�J�
Ɗ���k"h���&�&�������m<o�-
_7-�$�e1�Ή�N~bM�¥�Ġ�k���0�v�gU�e@�2(��k�
�(�PP�ܠ��':��ȶ���\�0�;{h�*H�*%�ɨu��78��0"�K���>#�K݋g��O��X��p՜�6kI9��L�,�V�G���.�I�ܯs���M�u�l��C�lPh!x���˜ɨ?_�i��'�Z�Q$��E��G��h��'(f��}<}d���C���!-`I���M���w�bwC�@�:*�𰣅>+2������V�a����E0?�1�6_I)D��&�%����W�
�ĭ���4�����r�Ioݰ��2�y�}�{��Y��?��\�U��%�t���!]Wv
pkG�Y���y,�˴"����T���yh��U*�hR��|��zf�0/LϴR��y<��r�#ڇ�qk�����f���R�1vͲ�D1Q�إ�x�yeް�ڃ�����)ʿ@��A��ӏ>9]a�%��N�"�v�*��A�Ex�{�(R_�#F�P%*�,�=$�*mJ�������?�5"��&�t�戣��v��zz��l�YN;�P��W1���^��2^{���{�l{s���JZ����aedc�w��:�UY��|���+5o��Bd8�eK.cX��2��ؑ��� �`B�J)�r��XېŘq�V)Ȋ��(�J�"M��& 
5_��E	n�c��]�!s����
LjV��(�&�8mַX-�>��
=�^^��C:9�H&�9]�
�^��N�ͣ=���55���f��>w�+Fk���S��b��ؒ������J�����X=pM���U������o,S6�t���i��t��.�����Jw�㊞p{>��y��b�Od����^
��.Vc2L�U��*�����	��*���A�U�hd���~�k��Iz�}�����,yS�$Bt�F�k�f����k����R�e�%���r��b���*�b7hq^���+*��|�Ưm@�/j+K���8��fSe��>�y���*�r�'W��˙3ۚS�[k��r�<�R�e&��A��d�`��vSݿ�OU:����S}Y�z�ڬ�D�3K%���[��fOQ9���*��;�کWjQQ��ʭ��l6ׯ�kfտ́��ڶ{�ڍX\����a��T�֩�bu�vmfμ����ԩx���E��uz˩�F���=��lq�k�Z���UN��ksr��G+��'�K-˯�v-t�,�
2�3k�^о�?T��'�ɱ���(]�cSə�}p����R�e���;����Ũ��ǎu��6���>hm���|[^�㿾nu��
x��9��(��7�~���g������5��t�I����ぉSIs�]���Tg�ޣgaQ��)+@�k{�\y*֫��W�"�4Y�L[p�B���� �0J=�o��$Xr��t���=2{)2��/Z~�|l�����>ⷢ��9nj��㳗���͞^s6*8���v>����>"�3���SO�|�۶+[�ұ��^�͇j�����R�,��_���O���R[��;�W�C%��Ju�s�i*{�kec��X��������̓��vf��x�uy��i��`9�&�=z���Ǩn#�ƕ�k��
?xR$�h�y���=<k���#*k2h�6a�҅�-{�uzP�����zY�8E���k���>�ɂ���Ř����9��6-\�=D/b��3��B*�G̯d~���(6�A�H%�����ON@���$����W_��?���$
W�o��=l��p�ܪ�kg��4����YX\�8Z�f-;��@���"Q8
]�tG�Ml��n��R�p��WWi��n
��<t��<�;).��X4[Ox�|l&…ZWoLJz�_�|�6KT���#ȣ[�Ϡ'Ꙡ���p���~������8*�j��֌�$U�cŁOC;�Q_;�Tm|tX��>�eG�~k�u@���U�Z_u�T���^��J���
�ָ��TCc�nz��]�c�������_�Ȩ�݅�VI߄LUK��nc��o�Wj*<��UJR1�� ���*$l�TV|��""0�w��',{��MI5�z��I�ԊPx�
��N�C*��Q��c��z�
=�İw�����j����G�Z'?P8�._(�t'�
/�P��ϝ�S|j�,��!�͏|l�+�+�X"���U)w�W�c���aEi��� |�$*i���}M���؎��x�4X3���6�7HUʠ�ؙJ	C�_S)a�0�vA���I�h���M}%�
�z����pf
�QK��:U��5��k*%�ƝƮ"C�$��N;O7.6���{�L��Mo#(�#�8�Ǫ�pf!����z��b'��ELR�Zl\�ʫ��k��#~Ez�Y�I�s�
�9VOVj�pJ-`�'���s�UW>6��B��H]�kT�����j���k���f�����uA��ᰕz�<����V8Br��_�!v���:���xx=�F��=n�q*誝��A�Hts‹�L�]�Dt�uu.��"�&kK;�L[a��8��2�egr4����d~�Bb���6�O�m��IIK��
�*.�i?C0�'P7���ŒdQ���Ve}w�؆r-$��4]V3%�
�&�1
�HcX�0�(7�dh��k.��o�@��3�I��y���HI_6
'}��*�gZ���+�v/y��1qF�!�wC��Q��ah�1i��6jR�M#J���uwZ;��t�P��K�z��a9��~oc��p�w���cm&n=Yx鐜��*]�-���vﰲXlz
#�������rQ-�jW��kWs�r�IDe�����/�
XtC�����3(.�࣎Q��
��k2�(��df1%O]M�T���]��),+���(m�CW�vTߎ��n�.�I��#Cĵ�[S��_����tM���x�Ȁ��b�l������kjUX�(�.m�t\�4�B1��n���0��8X�1��L�Fq�g&}u���E���_�x��Ǎ��e������#�MPG_y�#�3�(�肨ae��a�s�tٸ���l�	�8�dn�Z��L'Y=�y���Үa�_c���>���[�t�G�ۈъ��@4�Isj+����j�}�o�D�Y�%��.�1Ȕ�E.�,<�Œ)�K����~�-��_��߼L��.y�{��MaC�R�£"AO~����.���k�&ijL%uYx��.u�g��ض�q%h�����2���XD�$s���$v��Q(�v�A��U��
�26��#\T��ԠV{��:�Ѧ��zEv�FRa���a���m�s�uQ�����yd�wjU<�!�;���ޫr�\W֓�C@�\~W�;H0�)[�%S{оR:���USuž_��X*�q0�QP�L�x��;�n�ڑ~l*��T�DIX�m�{S���Ԡ��XG}9����G.�ׇSN���>D�i/##�1*�5�k ON�����3g��Ӌǻ���[��� �H���%ub����@�*9���M9*�9‚��!A��W;��G�����+�hT��*�g��ۮ�Ӫ��yZ�mZ�6�e��t�V�ȜMS�׌Ȯi�?�vk�@0�k�ǔT�U�ɱ��'^�ߢ2��6R�*̐��jO�Y:4n�xU������>I���nko[zu[zK><09E�|0戈��#��:����H��t&e�O%B�ul�:���D�I=�^�Q��B�F���^��c��ʋf&����3L2-��k��tX�燈��ruT:�v*�,	�^��iϮ,U�ci��CV�^V$��$�Tv*���
<KRz��~X�C��6'�����m��ŷ㏞b���N�_3&��+�Q��e�U(� BS�1�R^!����v{���A�ޠ��@�S�?3�k���+`���2��cXL2(��}���Q�o}S0�\�5��F:�(S`5=����B�
�%]�^�G��C�K9q�*���M���
vjV�W�oh���7����T�4y��?�2a��z��W�{��y�
)&�B��i�*g�W\��:�Mu5����x�5��8g���{~�h�ޣh���
�0:�y1��6J���q��XN��[1'�G�09N�0:�4�k�c�[mԖ�7�O=�v�ڶ���B�=
�)mzƱ� h���Ǣ�ڨ-<��u��T�y,�;�B&{+��g���S���j���X�o͂>�e���N�Ƥ�&�fO?�����E��� a%�p8�O=n9��z���<�
E�=��I��Zs�$3��������>�.-��Mrk��w��r.��q���i�|,j+ŵtj�Ǵ�=fꙚ���jk��{,S�G\9��kgb�Ym��<�Iw��8Z�h��E����ǨTݟ��g�t-��~o\7�e(�ET.��-lq�נ���&���s��=�]���Ԏ��מtt��ߙn���8�e�YYX=b�>��ԫ�Fvy%�D�3������+=�1��!�a/�4��\,�����>��v��rQ�v�Q�(��IM��z��=3Z@S�౱�xo��_����I�M��<�C'gT���eo?|�Y��{u�#�e�c��ި���E�I���Q�`f�q�y�'���Z��h�׈g��X����:h�{G�^p�Hɓ��f����
=�`ʢ��C4�^�'.�h���kP�O�@8�:�)�H�^���3E���"�#�e�c�f٨�����Ӥ���J��V,�`G^�2��z�h=3�YDsD�l|,�,�V����#����yżpA�^r�����_���,z`IJ�>3cY6�9\������L*9�b^y.�6�^A酭R*�N�L�,zfIJ��e٘X�J�����3Y��,�(��T=��;T�̢gF0K�r~�l|��98���`����C�/�"Ѧ^�s�UM����zz�h$��^�$�Y�ke#ngbpL[0�Y�E��Ť,�-�)��q��ΐz�͎C���#�� x{}��b	
	�,�h"���('e͠�S;�]��RO����Qz`�W���B��<��G$�z��"/��4aIZ�&��N*]�(�S�,zD�yQL�
�,��_�p��}gkC]w����3XD�
s�i�/՝��kec`07>�D���=P��'�l%��-�(6�e�qLa!�{%�l�x�٧��!�F�Pr��{E��
����=~\��'nz�ʤ�B��oJ�c�����j#뙟I�z�n�.:)�J�I'�l'm�C*��K8I��L$�J*9����$=���F*���E%�Q{�#*�)�%(ɤ�RF�I#�|�J�5F���3��dz�l,���kQq+U=AQ'Q"�1	tu�T��W�7ǩ�z�ڽfx\�X4R��H�2�G��"M��ROJ�iM�a���/厉@6fN���Eb*ғ4�J,8�Qʒ2�G4��Q9u-b�G��74F�GrRe�6��PH�8RJ�2�g���;R��[R��I�<
eC]�N�Y���C�H���Ae�z�CYN�����t�Q�q閔�dRG%���Ca�|5'�]Ѻ��u�F���@�P���ee?���Y�L=�a�?tum�8��4n�����u��C-$r�^h`�]󨿺�&}��)f��=$1V��
Q��묐�3C!%�C!�1����'�ӈ��)S�;�]���Y�{ɜ�5/O����3C#%�C#����ލ�{�L*)���5TR�N:�}f���Q-�kmVI陡�͡��X$���k�wH�#���y�/��|.�_=D�*���C%����TR���Q{�#�*����q�u�J*�8*�Q%��I%�g����r�6>)61�⤔RϤ��#�������V�P'�~p��pn�J陡�͡�Z���R���>�7{���R�2ʝr=����@��f���J)QJ���M)�{m�}�&�vA]������/����%(B`���̥�Ii�V&��F����Wh�
)���E�T2�z*���}1Rz`(�Do(�6�[�����@\嗤��6��R)��PH�gRH陡�͡�ژX��J���͞$yT�)�Rh�ஐRϤ��3C!%�C!��ne�Vf��z&���xm�<?J!��7�PH�gRH陮�ɡ�Z��R���>���Ȓ�I!e���TH��RH鑮�š�ڸX�k�=CGE~�~���FJ=�F*����H���H�\��s<���k��3i��#��)��*URhw
И��&��*)�:���M'�{��|�Dr��4!�?�:��k��]k��b�*��Z��tR���>���kW�\j�	�N`ֽ�1�,��gL}�c����)*��ĜGv�	d�ѳ���y���3�u�S�tJ�D�ܚ�W�).�h*C�B�#
͍G�9e�^�T�՞��t�&��)	�g)lzz� ���qp�z�9YK#��~l*�/�m,
�����+�]j�K.5�5O,��#�\��i�ck�|�G^R�Cߑ<2��^��hđ�n�S���4Slz�^�����FP=c��.�3�j#��ڇ���{ �u��4��i
N��	���Ȣs�k��^;�.j����G����N5M�1Ŧ��Jb�G�u��ov`	�ջ�"��E`{�۠��RF]bߥ8��P,����ՕESxzL�I��1�a8�k��%_47>e�B�v)c�X��p�pMɼ\A�+r�����F���ذG�Hƞ�Cx:�]9�CA5���R���T?�{00�x�����vm��2BV@�OHn�����o��H��_�z'�/(�A=߷���>��c	M��(�A��T���+���tc�)F�Io{��q5Gy9�S\��KdTM�XF?���v�`�}��=��	�����a�zo띧��9�f��ﳤ���?+B]����l�0�X��Z\-;e�V��{��4�M�߳6���̆���z�h�+�K��r��9VGu ���i�V����m��L�Tn�Y�Yp�I<5�;��Z�\H��m�]�1� �����f3^Yk�.=�2��]�I�L`�.�a��/��X��5f:`���T,@���vO1С�����h��Cӭ�9E��֙8X��F
�-�}���5<+�vԀf��Ԁ?�+MMn_�s��y!���i�ڕ�,�y"�p��,@;��^�
�.�_��=S��]$w.�byB�N�*LW"�������v�Wp#���x#Ѐ��W(��ue�r����?�<?��r�(@��<*5.ypZ� ҘĨ4�ʝ���@(���Ƃ3bܼ�ܿ�lخ��]�gGV�笣���W�r
,����e�c�����0���#p
w��U�ޘ��W�ֿg��Z!bZ�fG�UmM���:��3c���<F����0���(���W^;��h����G�fOaG9��:�H�vf�Ľ�
#�	���	Z��;��m���ZFK$�^�#��
�UMh�qi��	t ����)WZ��M�zc��'��kb��F�W6+��zK�)���F��Ԍ�+��Uӻ�r���x�+��i�!1�?�i��6�pp8��!{��r���q�e�U�lQ�|��^�Nj�<�#��j��?�{,s�%��:)�G��N��>_n�AK}�L�V��V�$N�q�
G�]FǃCdeE��]5�챃��%��2�hZ����l�٩���A�~3�'�х�0_��l�i�vFQ����x�`��{+��k��39�1�Q��4e��*?��1N�T��InS��`O�G�H֯1��X�p�F��/�QeDqv�]�mS���g!��8"*e��,����jab]����6�7;(~��T�/�xԩ´�˚�L�&�)�εĮl��ژX�q̃�[M��͑����%���b�遖;k	QJX$";\x
��/Μ1~�A�J��z4�h?���]Uӳ��}�Νu��:�*~�ި��(.�v�D���6UT�_T��T�h:� V������u����� ��X��Xo��kQ�&����vf;ƩL��1ܥ�X�ؿ��������NJffjCE5F��c/\�iLn��d;L�2G�a'UN��/"�vz��4�6b�}�N�x}m����gt,C�e`�50T�L&'4�&xt�/=P� �S��6ĕ���0�4PC��?��^:Ň�����ھ��|WAyB��5\
Cǭ�]34P^�m�38�s]�T�ܖ��6�(nd?frK��N#\�@��Ņ��M5Q�$N#��QJ��lf���D3����G�0����).�l*���k.w��!E*�d��SjKk:Y���R=���}�����)/����M35{�~K5$�R��6e����>D���-�1o=��IbX�곱�i���+b�ѓ�Ėp��n(Ki���1gj8��T4��#�t�?9Q(z-'��Z���M7�%K��{�+�%<@���H}�[B�#��X��3TBK�����>I����Ŧ������ᾩ�ʐ�9�ٔ������I-��E��!ม1m*�f.6��B�=SRIf��燴=	���Z�Z15)evMϬ�D=]��{�e����`�*���m��n�o���ڌT]=�gГ�tI�-A<�o��������9z�����e&_4i�����R$���SntH;����Q���{jó���Oa=���a�@>���V?�n?�Ԥ��a��~S����.Qy
�)��L8��C�~�ݰѐ^}�<,��FM�iD鿊~C%$x�H�X(f��ǫzd	�z&�p�Q�nJ*XS�7^X̓��h�:)ͤNB�z��ԏ��Ԯ"��DOX��(���'��B'&ZNu{�C�T���I� Z(�g�-4�-k
5=|��^Tq[��~�V�-)�Z��CO(��ѕe^j$��8��ގ@�<����6ߝԖWY�)!A�i$�H�i/d�CB�L Cy�
'����:
�3�0m�lQa��褌�����"�X�p��=/�Q���y���
���ł�G��1���*�A\�1�6�128
G�"K7��(v%Ya:���5(�*�z���\�K�g�-߉��ź�Vb�}����졚!q�R�D�U`ۋ�@3{����?�~���I��6�WO�y���P��$��L?���_2��X~�`9��.�����-����M�TVmSt��v���2=c��i����z����cY�C&zI�*�T~�:�(``��Ẏ��;f�E|��=�ب�AM��g�xw�T��c�i0h�Z�<��G<���\`�Ds�cE4!�9o���LQ I������1J
�x,WOw��fNɍ�EG�G� ֕Tn&��6�2�v��ɢ:3���E��;�����g~�Ϲz9u|�}���Y��\��}�
��NSor���Ӯ�:��N�"�e����D�y���6�ō�;���.��D"��0oC<��r�ҙ)J4�������SG�!�V����G�|��D��(��n}"���9]���eBUOa�����"�0�_;�_�����Гo���!�
�!���\��Q�!G��^�l|i���
�/��_����:Ү�A�h��*��ۨCYK�ҡ��O|�^���b�#�H�����Qp�<�i8�ĿE���w��2���(E�P��$�0�k�b��1�ݖ���W���'"��5�ʰ
1;N"{���g��^�&���=�v�?Q+�mi�;ho�q*I��v�e�Q�?����Hx�8�N��a�ll�?I)�@��3ٺ�%3�rL&�r��g��C�.y���)�=sgb����>�P{��(T,�h�nU+�҅N�)��RR졘;�#l���z���Y��������!vcri��2��Sh
r̢��v�N\��_���5\�8N�!v`���"�m�I�ȽI*r�)&��x���A+u��b����<~��C���쵽g�`��]�{Hf�^�S�F���z7(���
�_]��b0�#=���1�7�� �=��@�_�~���Z:������L=�R_!i}{�l|�����s��O�s��xzSs8P�L=�0;�����>`���{C����/��/bH�k�Ϛ�'��f�]��|��zϗ[����“��j����k�n�O�`�e��#��}ꞥntH�_�
zH�/�#�gga��Wz�z����ʞT+�fs
%4��J��#�M�a�a��y�N�d��3}�����=f�ȼ���J[��ݷ4��C�:O�
���ps-
q����d��H2?7�v��6�P����)�]�[�h�o��U��d��F����ޝdL.��)��*�����4z�J��&�	�������\�P{�#� �dO2'=CzΧݻ�
}����aɝ�ͽt!&��4���t`w���!k��.{Y�kw�Ť�G.��z`3A��;�{�B��(�w.4[~$�'�P9#kI�f������"������񞋇�B���ԨHuՕ^t��TL�G�?���pw�Gn��?��M���N�x��#�n�+����)lg����
�
��zd�u<3����ts3Ք�B#������^�#��f�cjn�1����x�&��%�{�77S��A�K1!S��"�<��{F���i��T���#���gh#$Ʌ��M]���7i��#�%mFJ�h�-�u��P�O��@����nަe{�]���k 7����������������m�ܸ���N��<
�P�*�S K}�2�\��EL��]=���<Kà�sq�4�<[��4�8TG�PsZ�a�蓧������� ������"&WS�h�[o�u�ӽi��Y�_�Q�6��=%>���(Z�z�'��
�Y�kI��FTh��w�hY�L�\���0�����dQ�i��9i�%�3��2;\4-������a�́���R����{�\��)Z�:���;�<=�_13�!~dI@�O��F�"-����ߤ�2�i�,��fJ�rs�@���ugm����=%'�_��A?��ڐh��<(H��:�����4�<f�����ac����L��xӼ�4`�����LFt-f'��}���;zJ��P0+r��s�s~�㨟z�w����K��ךz��}���{�x�\	�j����I;[�L??7z:OP�~�O5�����6���=���&:Y��~��z*r�����]P���m��G��WF��r���rL�
S�C���iU�\���ũ�O=�S��{�F�K�S�3{�j ��K_s����-|�`R	*����e�$�i<�L�~^�$P����ͣg|�B�z�+�vH�O=�!���mk�Y���1��k��c<s�Vx���R� �1G�t�f��+���8/z���2'ŭg:��n�m�Z��8�X��ʮ�z.���j��x����y\mO��y<��1�y|Q�y|5u��qO=8�k��z�����y\�	s��jb\�1g�:������3Vf���~�Ʊ�`v�{�t�9��5�*F��:z��O�{��j°��q�,B6χ������>v�W�����އ�w�ɸ�=&h���5$'��cO��5z��=\ȃ����� �nLR�&۬a"�Y-�t�^=<C[�h�:�Hw�66Qw(����t�ѫ���3f�ڠV��\ߢ����k���T?�L��E�/�k��8F��S��ii:��|H�#����!F�XD�(4W�{Ʊ����=ӬE�x��L�;;�#jF�+�u.�v|m1w�p'���sv��=�SAz.�1�Ǟi�:KuU"²��h)*���Gg�
gƜ„��Jt�V��.�5d%8?�G��Ն�`����{�-&d�&��O=�SqNz4��C�,5�-�οP�m~A+4��S3`�C�fhp�9�yqv�}�{����hL�x-|3]����o}�/8���n��퐷�ޠB}��h`���te�su	��a:�AҪI�1���B��X���{��J�{�)1����9?��l,�~��b�6���*-0�a��`xT)p�v��,4g$bM*mߝ1ԣY�W��X�?�<h)��8P
~f�`n�:��W�m�<h�gZ'
ƅ=�q
6ḃF���:Ux���tE��Y�_Dπ�~����z�(�JL�yIHc�!1��4��lS`�./m�i��4�M�l����ᨎ�b���{�1�UL�1�!��x��*�l�`M�W���3
<z�c��E��=��u�u-��QNK�G�F���el�\3՟����ΉI	�i�-��BGυ��|��h�z��sq�G��3fd<u�Ш4�5L:��j?���z��o�ٿ������f�;�gf*�k�����s�޺��cυn�U!͟z���y[O�g>`2��9�~uF<9��z���2�2�D�H����}����n�
5q�����c4Ӫ��3[��Fw�R�=�U15����j톏=�D�$sOeZ�r����e����Paf@�%��	=&d��sr@Zv(UT�Ǻ�F�b�H�^����4��
]AP��R<^���ѭ`\�:��>ӭP����E)]t+���zOi�����Ǟkk��������{���0[){ơ3���\����=�g��R}��{���fZ�h��l�8�`��隟�O�L�p-��sMCM�bp�v}-���s-m��>���@��}cQ�-�v0A_2��˼����L�p;�/AZT�=U�xk�Q|�>~;�;��3������ �]w�[��y��k
���=��k�궜�ȱ���&����MU��:4[e٦��l�X3�F��L�J@�3s�Ǚ�{�8/�X>�L������y��	��z���8Q�3�z������83{�~f�v?3{�uBb�?�Lg����m�W�wO��/��~Z��Ta�E9~uP��}y��qB�4�'�C�XL�V>���`<u������/Ӌ�[�85���ct&�������5Oͫ�O����eun�1�|�1j�s�#
��#5���޼Qϵ�A���s�)�ߚ��
I�:&��w	>R�=Z��	��8�
S_���/����Z��s���=cO{W��ZEΜ�§�驄X�=�����㗣����vC��3��;a�1��G3�ͽo�.s]��u���\y|����k>�s�n�v|칸�ʘ=ג�O�{�����g�����s�ѣm�y������d6�P�h���Fsl���0[?c�/���~,:��s1o!���0���\��G��3�xj��g��}ẽdϩ-�s�L���ȵ4/dx�B�=����6w���_����g��|�fiV�Q���[RS�I��8A�T��W
�R#,��䂩��
�(R�g�q�Y��3�^���k���W�	���5Azv���u�#��g%��t*14fKp�B��#3hgG/�hjsYvb�ζ��}a~�ŁEh8��G���0@2��[�8�p ����=��Dz��@s���r��~x8"��L�.K�Im�$��y�g����9�}ɍ�ǁ��V$��=�10���"\N%q�C��fN�Ͽ`&T*�s�ǡ��N��0��~�p�����%��ϓ��1�b2��b̬�tf¹[�̤L�2�~y��bA��Ij��fYz�
Գ�p��!��/ؘ("��>P�0O5����(�v�N��W�a\g|�rJ��V*�v���Jc�03�vx^���d+���mq㽳rn7�+�%�H�79�Þ�s�$�G��ˁ��}u!o��`%%�5V@5��ˋB������ E+�!ZLp��W���������}�|�A�*��b���4����T�Md��e]_�����������i
Q�wa����,)�CiFE��J
�VV��ˋ��u�����|Hax�p����Ԩ�`f%��̰�{�V(���Y�Eݘ�LDPc3&�q:3畨�`�%�;��f��t����%<;���?	��q�M��1���0)��.3���|���x�bp6���Α-�D�+냑��,$���ܵz���d{
<��v�iS�s}������o���T�n�G궊$�g��_s6/�8�����,d��ճ3g�ME��O5����s�!3�9N��ۼ�p�����qs%�/�3�Ud�3��G��cA�GeD�١���8g;0����\w�0�K�f���-bs�dž*F�8����͈��1vC��A��d��F&���El�������:;I|�UC�qM�0����dh��oN���c��c���s0��X�dYe���ɳ��9iG�_�d!�ۛ,�4JC�1��EO<Oζ2�0��>��%�%/�!���ؤ��RW��O�����1�
3��^WW�k�b3��Փ��Џ�:�m�G�����0�?�s��yDD[����Z��)�6��4�����⓬��q"����4l�QQ�������b����ې]{�<V�/������f���]^�_չ�a�y�����(BfF���;��F��q�Y��y�fw�3O�}s���y��g����r�3���F�MyޥP6xcs�҇��A<S�mqZY�p�4�)DÙY+�%���o��Ӡ�����E�"@<ܳU�l��IsՏ�1~q}�$��Wbf=[��`���I�ؘ��}�Xx5%��>�/��L��e����	�z��8f�4+燳4�.����\�.3X�|�1k
$��Ād�O��Ns��
�d��/����;���+<{P���*;�u�S��V���`n����X��lH�\�7�:�/$)V �to���ָsQ���(�/��;KU�Zy�����G��?��w��1�Ğhq�
mg��uܟ�J�iG=́��,
��6����T��IO��R�ʊzmg�S&����у�c9��9tP���/�?��_+��Dz������`�'K�|�0�R��
|��hTI�;,��zH��PM���e�
��ej��;�
_&������=΍��ex���T�p��/����#|�^Gd�P�Ô���ȵ�J�rJT�"�N�tAq0�+��Z�t�c��D�+Đ���!��]�څ5w�Ĝ�33N�sj�Ej[r�ړnH�G�7a�ǐ-��Y2L�f�J�,�:wf�	���_�t�C�R�XWFK�Y1ϊ����V������y���	�G
5C,%��������1Qb���	9�rX�'}~��;��B��׌t�3�����.\o9�}0_Z(��9��%� �hF8S��ބ��
̈́11%c�(|���n�Y�&�x�M��~A���5>�m8��`�F��`ijI/;�Eb.Ԣ�
2�7Ϟ,��Ua1'�j�K�����\�XJ��}�y��tWy�s�:.o��m"��f��qQq�l�F�iH�X���=�����C��vp�?�P_`["���<���2$�EB>F05bAH�� 羔�u
�tLEG�h0��H��U���8 m&+��n��0�k0!�!X��`V7/���嘡�q��3�^B�����d���eB�>�~��c�s�,��j
ϣ��s�0�5�*�t�٭�Jh{���5Z<rTj�,sp�@����`&x����𸳍��F�)Մ�'zU�����92)��q`��vc�q�� ��]� ��QE�&�H����lW)��،�D퇞 ��)TJ6�]>g��k3=��Ii�C�&:V���5p��\�tL/���:�P0��7��,�=2
3�R�O4,a�X2+g9m�Dx4d�=�
���^�:�V13[�k�i42��=��Y� '�d�i&M��͇ q�X�7�3lg�I���;H�B�L��-�5�����D�sd�;{�<c��
��&I\�����
�:��G9…d����i�N��� �J;o_�;�T��Z.�b�^$��5x�/;�L)`=ܯv"���z���u���~��󐵊[��!�gGF�ծ�lB%څ�i��SӇ����(��kӲI��nM*~-�d��̰e�Ev�4�7��o.�'�a�R�{��!n�D����-����QH��X>�W���lb
"���l�(o�-(�~�a��%ẓ�A:j�0������H��Ixi��[-T���K)�DG ������GC�٣Q
�3g�0�}E���ȍ\����(������\e�s8�q��|U�GyG��]>�m��w�{~k�w�u�������yǁd-���2��9��[��|�҅��4����m��jVjs�����H#���O6�m�i��9.t@���L��zՀ�{�eY�'�7z��_���&:��
B�=��aDw��S@�z�i+���.�#	��!vt�$w$��]*���$ڱjV�}�E�#�J�USw
ȕ�B��@����L�z^~�7SsB�v��p��708��a�:�0
sѭ3X�'�(vPz���FacԊ=W?d��O��F�@ʅn�x���l�x`�Kc�HN����)����ͬa �=��A��P�������?��A��w�i{�p�`�#N�*�Y���0f�����kZ�:nJVr3�2�
���/W;JeO+!�,[�
��
��
�3�6op�=��L�%;�?�K��q7=��(��
�'���s��P�2�%���,ۙ��`�٫��-�(�u��x@������?����@��� �H��0$��D���_�j�g֡%��j�ɍ]ЮL��de=��l��m5;�Y���|0�
�?2P�&�:�����I�{@T��*{��K���O��_��TŹS���?�������̛f
D���w�+��O4�5��ç�R�@|d�=L�@��?��������@���1�?!M(�'$ڄU�j�./`ƞ�6�bn����r��9�€8�����
���>�F���Sx+��<�?�&�n<�uW���s:�h�l��{��`����{�b'������G��3����ʟG-���[�3��=��L7�)w���s�Q��7ܟW�o�x�q��mȿl��ߐ��!�
��
���w7��8��D�+�!��"�!��5���!wC��ӆ���
����w�/7��nȿn��oȿސ��!��"��C��A�z�e�e����n�?n�n������������r�����W����+������7�_7��4�������������zC�nC�yC���
��
��
����7��W�t��������
��������7�n�?�࿴
���O7�7��7�_v�w����p�����c��p�~�~�y�������o�?��ߵ
��
��ؿ��?����3�7�_o�߭������
�������w7�6��7��o�������w�n�?m��m��ߠ������`@��B�
������w���g�7��o����
�M}������?�
��
�_Qŗ�w���Dw�� Q/��U)���t��"|�k��W��椕*ƅ<�Q��:���P�f�zp�8$��T�c�;�Z�|��
�!S�l+qTu����O�0�;�}`����G�w����	�Q�i<���f�b�Ф����i���=f���������?���������Ҍ���
�
�?2��vx���s�pp��<!1�y�QGź�Er��6-��L��AH�y�Wyp��W�M�E�4�<�h�1�g�������}`��O��!NF+Nm{�Q
��>Mk��/�i� ���Ϣ��1b�����}P����gY@�e��񛟏������O�|���o~>���SV?��6G��:�����_}r�<}���'�<}��ӧ�<}���7O��	7O��y���ӧ�<}n�>ns􉛣��9�l~>���_�|���cY�W/�y�lN>��O�������m>>����n>>i����W��)7�x���\|���v�������'n^>���Sw/���|�l�|����7?����Ի�O�}���So�>���7G��9����O�9���ѧ���'�<}����o�>��O�9�ԛ���}���Sn�>���6G��:����O�9�����o�>yw��^<}B�\}���o�>���Sn�>���S7W�4�Q�b�!�_�}���S7w�xs��7w��ۧl�>��O�y�������ݧn�>7_����Y�}n�>y��}V?w��q7?�������'�|��ϧ�/v?�����;�@˺z���ӧn�>���n�>a��	7O��z�����ԛ�������էn�>���n�>iv�Q��ۧ޼}���'m�>n���7o�t�����o�>
vg��9�t09�}aʪ���Ap�	�&��a���)���%�4|8
��=��%�!a:Vn(�ֹ�5�&����<}���kf��n>��8x���k�w���_q�����C��Y	?U�K�j�����G
������:�!�OUFC-N��ԯ�οl:����M��6��t���o7�]u�u�כο�t�m��M�_nJ��+���w�ֿݴ�W����M��nZ��i���7��i�Ӧ�ϛֿݴ������?oZ�p�����oZ��i��M��nj�����������7���aS����?��eU��M��nZ�|��M�_W��i���eQ��M�_W��.��������]���?nz�t����l���*�ݪ��"����?mJ�tS���ҿlJ�j��M�_nZ��i�������?ޔ��(��M�oJ��)�Ӧ�O7��)�Ӧ�ҿޔ��w��?lj�|S��ڿ��yW��M뿴������*�w�����޿mz���M��6�[5�w�.�������4��������o��p����n���i��M��n���j�˦�w����t�q�w!����\�]H��?�T��/���-�wS��]��V��4��O7��5�8�g���ˮ�/��?l��z��]��7տ�T��j%�	p�WΜҼAV.�tAy�-�qf��1~i��=b�2��p��~~-����EZp��� /&ꀬƁ�M޳ꕇ������}@�_���?1�Em��SJ��pX�Ԥ�ޅ�Dڊ�b��г�>Et�q��<�>������<�>������<�>��Ͽ������DˆU�
!�Q�����Q0������S��Ns��\��ÊɎ�8'F
��St��44�I�+�߭
�X=d�ˑ�\[��tngl0�hQm<Gf�������0�A���_B��0��]��̂x��To��7d �
*���˅
�E�ȓ�����d�y2�<�}��>Of�'�ϓ�����'3�f�Ug��E85	�����7�S��GU�j01y��ؕ�������f$0��x��~`�Z%���������K?��h��1��3}w�_�x����/�C�
��j�q��	�}H�fX�j�Z�F�x+t�����?0����`�����?
��4�v�4"Q��9?Kx.���w�G����=�P���R�Lg�](�9� x뜡���W�:�#��p����{+ڵz�+����i��T��WE]�+��kWZ��&�?��@�
^�LL꜂Tpu�;,�{>V���r�?.8�����<.8�����<.8�ο䂓��4g�T��*|N���ܖ�'!7�=67��X�IP��5c�G��L0�s/��̙�&(�K����<]p>��3!A�ō�>����x�8>A�z���Md������Ü��&��γ����6�N�9ME5Z23<��O ��@�'��	�}i�@�'��	�}i�@ �����y�Y� +7Y�����j�8f��G*y�J�����	�3t��R��~�ChE:}`sפ�ǎ���_�(�c�=ސ�P<#{ͣ�R�T�*%�ѯW�({_�Ƒ�3�u[���5����?5�C��P�8�<5�C��P�8�<5�C͟t�H�x� �U��*qa��=9��En�ˁ��uR^f�c��J�^��O���X9=��v���q'�@�=�%�k�_�(�c|7'�< |R�Α�&1���O,�no6��oaS�12�2�L�M�}�ڠ ���@��?���� �� ��H3�׊D=�*|�Y���J�i8�#|���K�N&�)����en�D�v����)�{�ı�^�WMY�Z[��5e̱W,�cUE�<�p�9��p
i��J7�ڕ�l�������\�rP���e&9�����x~j�2'�(d̩L��,�`k�
�G]8f$��,0�OB�^l`��{2f������1�asd�X��G��s~�.�f�9'��� ���a��[�q�2L���N�]O��#�ݹk�ֳ�����#�<R�#�<R�#�<R�#�<R�#�<R��rOib�G�2����
KeV�
w�*z�M�qY+~�<���,	!SL1��)�@!���L�
�.@��������R���,�qlݝC������1~�Tb������xǾ%^�v��.)�O43�tj�y�:,�����ɾ�tr��|z�LO���P�l�=̱������4P�s#�D�-��K�bg.O��=�Qa�a�a�<��k���ᛏ#6ѧ7�+
)T�R)�{�<pK���3�=@��.���J�A�Qef���Lu�<�t�{]O���n��#H�:.S/+�=`��	�X.�9�Z��q��M��K&�����1߶D؅�'f���~=1�O����l?1�O����l���ٞ�f/D���TU�df&���|�����
tT�_*Ԋ�̎�34��kk�����?	U��a�цv�E��muq�e�s�a���٤��jG����&�%�yLD\���p��7J	Mۭ%&dm�r��W�^d�D<7?�N3�~'��N�OTz��X�	j�ܓ��80��8�ݓ
��ƕ��
�XD�tH�Md�K�?�V���c�ρ�U<U>�GG�~�P�Ơ|TO�R�Q�m��6e��Q�=P�**�gCU��:���̸Z; +$�e�������������
Hi�!nB�MX��*(�P�,G��h����(�v�5@�u�V��^��@�@�d��w^8H�r�|zf�4��@�{h:����5�h|<���3?B���c˙`;q"w?�g�s�#�naU
�UU~>xN�GRn�@m�Ot�C��#u���xZ����o�\(�]h�C�P��EW��w���{>n9���e�3�ҌCEp���]��!��!�@>�4�9Ѵ`'%3#�"Q<�~`0��E`B���F�x	~8��x�i}���Lrv8J���l�vQ�`]��j��ф�nt-7�(m�Q�ģ�s.�l���#��M<ʫx�7�(�ģt��"���G�&�]>�|��& ����oR�	H�& �M@ʛ��oR�	Ha��& ���t���&�M>r7�h�6��o���e#�n‘߄�M6��F�&�M4r�h�n����Fi��&��ho��&�U2
7�ȯ�Q��3Gq��M8�e	Cr�E:��p��&�M<
�xT��Q�v�壸�G�&�3��M>
�|n�Q��Gi���%~	H�& ����7i���M>�7��m���r���M>
�|6�(��x���&�M>ʻ|Ae��.k���&!ś�oR�IH�&!�MBJs�����D�h���&%�MJ����oR�&$�MH�d�z�|ۤ��IIu��n"RYE���2�MDʛ���G�x�n⑻�Gy��&śxTn�[ţ��G����Ql7�oҞ$,���H�& ����V�.�YB�7	��R�$��IH�&!����&		�c��ToBRڅ��	In��MHJ7!�nB�&#ś��W)n2R�e$\Ʋ�$�J��l��U�B�t�;�U
B1=�xGU�f�T�C�R���T�ʏ����`uN4�jua$6����n�1N��<���$7c.=���By�z��Y"`X�N���n4rm{�b��=�g�@�)#�6���7��tp�����.,G����d�/���%�6ҳ� �����}�/���K�9�!��~��:�	���)�ޥH|t��L���@�#�rXO#I�#�<��#�<��#�<��#�<��#�<�˟_`�j
t��p��$��ͼ��{�2���$b5)7v���A��zA���n�BN��G#!�U�y(
�%B��O����+<~h{�'D��0�]y
�~�)�5O����<.�N`��B����2�2d�z����\(~��5�a��浌���8n�:���=���	�x�=�`�'��	�x�=�`�'��	�x��IO�$�Y^+�HU�l��N<��q.r�̶��\ʍV�#)[��!"c�nw�)�I;p<�n?tM�ܳfW�D��&I�H:�*�����H�-k#ܣ�쌈��d�HS����z����ПZU��s�)�d�ō�>���8L�01S<� ��l2O��D�v�����1:w
q�}l����U�?{ҟ=�Ϟ�gO��'�ٓ��I��?{ҟ���g�\'�,t�5�R�r�d�:�5���3,�Z95�@�5xN`j�09�	UŅ��2�vQ)�aI�@Է�Z�x)�G�V��q���vuv�����p��1�zp�r|k�xx�d���U�9
5�*O�@���6�d�sOS���.���d�mD#g
���PTP����o9s�'T��8iGn`��
��[��ؿ�1�k�R
Ա��6�ؿU�7k�jC��az�Ա�ol}���5L&�&ܾڽY�wlތ�;vn��E|Qdx�R�i�y+7/�JL�͛�y��U��i�;Fe�:��,��T�}����-��۷]�!l߲ڎ:�8��k#�,U�ιEfsHh�z�'P��M�!�)p>āѸ{����DEB�s�`<��>�!b՘A��F�D:��{��\�e���
�.�+��[�4f�a�G�هȮ7度ꯦ�Ei;����&^�!� 0]���5����܏��܏��܏�w�ܙ�I�0�L�8�t0g�g>��…�hw�=S�q���]K\�k(�
��f��64��,Ӣ�S7���c�ʰ��F`��?�w�@�
��@�v�0ӕ��y�����p���B#^P��i'�?.{��]O�P�=2�c�pY�@����lV6a��	��6%][�!�_�S��o`m瘏��L2q��RQ�NPR=X��Aq���1P*=�L����A)�C@6��﯎�)��4o�{<�O�����O�����{<���!�^�%
:d�tX�,��9Awq���#��7�o`�2ښT������
��B׈�Z�H�zk;VV�������	1��eB��m����}��X��F�^b�u�<λ'�}�/Dߖ����+�iS�LA*i�}.L�q�[���jEX
A*�f!�2#VX���e�	IW��d
-��b��}P�b����>(vA���G;��a.#�r�@߯E��_�{>���8���xMa�.Y���][��Hq}�_яv�g����7���aX6���Ӱ��w�9�KIU��gXvve�=���OReee��[!�̴{
�9r0�7�9i�+�c�9!�#w@��5vP��O��B�pP��R���H7�d��u��f��f�y��JA�Sy�8}�~���^H~(�î�c�~���cB��#�o?r]�1n�>®�#��>�u�����*?�m�Ǹ��p�ʏ�����qS�a�*)x.Յ���4�=7�V�Ub.2�#ԇ�;$`7����-�NeQ��*;��?'�pj��ףN��Q�P�3�>���H�F�7R���T�YH5vYrh�+������yN����U��(G�n:V�Q=`Rf��`5;#�qY�=�Սju�Bp:��;�]s#��V�e X>�@��
]���*)�4�sFP�J7W� W�i�I�.ˁ��L���y������{Z>��4'�S�a<�ې�<l�����7����
$o �
��aNjy�1�h\ب���A1�)K��Y<���zC&n���L����V�|G��2�42�wdS��8�D K���ƨ�^W/��c��Ƹ4�h���Q'����u~�Q'�l{�t1xD��Fe!�uȯ���f$�r��u��*�gs����ƥ\RS��4W�A��F�7��Q�"oy�ȏE�A7j���0�D�4�W�wA�i�%J��a=.^���9h<�X�n�pF�(�gb�¿�v0��
T�+�{Hg�:���୔�&7jKa��}h4��P�+��
�C�K&&�%�*� ���фR)����괹�W�	h����ɜ�3��
��y��؍�n,vc���X쫎�G9h	>Zx�3�h���x>O�̇�������t�����xjD�P�92VK�a�㦁ߞ5	ғ-����4��BZB�k�.�/�'��gl=r3z�)�74\K�E�R���>o7~�p�Ͳ������V)r�`9
��3����#���dֽq�YѮ}�R�y�Yq�N�Tt�_�����o7|���
����1
$WF�2�DaPFgDj��`��
{dv�� z�k3�4l���H�<��k�^��G�_�/������BXG7gh���
[�4�#r肌S��<�
	�h8��S�A��"�Se��9r{
�K���M�2�B!G(�7��߅
7����
n�sß.�)��ڣ�X�f@/xI�r�++�:��$��b�=2��`%�׬=W��cf��s�XL�e:��Z��O" Wύd}��n��:��3�q�n� &��J�{�K2:���A�ƩOu��J�%��PA{�q
mf�6MML�.^��s��3�d�*1b���9��h��#5��������qӍ�n�t�7}`��X��>H�B�t<j�#�m>r".r:���'V�y7
��#qɀ�h8�=ڨ�6P���`����V���Q9�G�1>�)�t�g�ԍ�V��!$�d��ꊳ� o��P�c�I���M���2X��|fnS93Nkf=�-D��	�{':H��,�r���)��y�T_�����
�n`t���h�GH)!z�js��*��C
��lˮb��ʼnF�����Ј�!��L��5)�$�	�W�J�v��dnQ���̨Qd�~(g��=��u!���_S�jw��WQD�ܐ�F�F���DS0�~O_/(�ؔ���Wɮ��v}S�$^3\�П	X;��<��D)
�7x~�x"��L�;4v#���H�F2�p$cj(��*$t�tXh�>�^��{N+��Ȓ�h��"(
s8�M��.����"����t6Nn�Yj�Jdte7��p�+T�=Ki�	vҵ�f��%��G�UpP�C�|�w̪��-p�k�e2�1��e�0��e�ك�M��h���7̸a�
3n�qÌo,�(���i<�{4�D3͠�2~A���PO�
}شs@U�:�(O�+��m,=*R%N}����,X��
5��q	���wT�iғ�"�Q���C����=Lb�M�*o"$q������Ct���u-�2Pg�eZ�<��t�Z&�Ҡ��dɻL�\)���&�ߨ���
,ϤօDy�6@p�s���	=i��	=�c���#�=��Z#/
�l�����u���o����������~3een8�0dǜØ���8Ԩ�Qڞz���G���	T5������Zg9��s��ڂv������6�qB9��{H��$Ml���'R��l��3$�L�ќ��:LPR�,�v���5	,�Ѷ�
U1h]h�,U�qTŃ�+�oE|+�[ߊ�V�_
E,�W`0�i�/�1�ha�[D�߰���y��٬�R��r\�9���9�R(hX�8dD��0רGϨV���b֭���]�ा�JS��vs�@���h�Ө
j�;�E���� (�a���{�ꨤW;|�6dIB�D_5��F��2E�e�5n�`�D��*�6/��V��z���^o����5Yf�
���(�„��$zθ�S�!�qE����'�l�U�B�|N�Gӯ�lF�E\bB�ш'4#��2�Ԫf�T9>��q�c��x��2�l�^ǍbT������<�_Q���h���D�"��ڳ�rE�ʖ3AX��lN6�
�f^�À�0i��'�j�/1$3	x�3	D�'Lg�3������6�������-G=�Ke�����Τ�(�F�����;��V�qʿqlb}�@QN8Y�x�NR�;��ɀLB��I����
��t���`�C�����ɪ�3gxI�7�r�[����&��˿|���WgJ�L��P$c�#!����Շ��H[�(M�#� �Qv	/Z��،AQ9�oـd�Ԫ_J߼�	o^���Oi�7G��XVX�,g)(���_�k1Gx$ϊ�����:�}p��_��BeH�g���yj#6`"[�H����Q�k�Ɂ\\l��X������@#��#g���b�MSlW���>;�n��ܛ!Z&��O���[BTl#����Z��IL��sB^�+h5��j�ٱB����&Gm3v�I�w(<�3y��S�U`��R�#$ɔ�L�i-�)�Rҩ��nJ��9f��]��qn��eQ���$h	8⊈��p%��1�eN��p�ư��J�+�����,�l���
�Q����5�,cG]�Jlisd�<FOr�Z��;b+��s;��5����^�~�c�\���8P-YfT���IX�%�I
�,�⠈3�.��%����;d�8J0��D4.2o�%+]
IA��/�P:%g=�H����xEp��Ĵ�,���,��J�x
�ϓe�~�+������w3�~9kȌ��_TKD �gO��H
8�A���Jd���6��*�1ko�:��)(��W
'렕B�4��C~����/m�"�JSPG��}I��H|&�A
��~�nAGE�L�����'��[\��<`	K�-�Z@�(�en&eh�*
y�Uz��uiE&�H����M!�n�fG�i�c{�ofjf�Z2��"�#�� y�d���`�!�G�{��4�!�RZ`D����1r�`�H>��(4�btV�8.��������83N�b��DF1ʋ��N���{��$q�mPa���IZ���D�`���&|'�Z���H����LD�7���sT>��Q�`�G��f�ߨ��>S�e�6Oz�D�I�쩍Iޘ�~0P�I݊�R1KP����|��	z���D��H�K�r�ҟ<�����9)�B�>=Xq���(B̊I�����,���')�0�aMڜ��"g�7�c:� ����KT 6�L��]�C�^Vb?
�e�/���}Q�э�ʖ��ȕ�5Y{��I�1�q��R-VbĜ'��H(O�2� �+1���f� u�;k�<�[�W�Q�/�?��(v���V�{�c��!F�%�=X)m��\�l6������`[��w��9Pa��eGr�L���Vz���;���>��y[�%»��yFԧE��|K�
�~fw�������ʝs!%x���/?ß-p���7ڽ��Ki<�|aow7zjQ�zk�{�,��.�c�C�ܓ�_�	��K��[8�&�k�S�dJˠ}�D}JK't��UE?pA�2&���H*��� ���q��v��ɂL��SP>&�����1�����≈#�X:�Gù!��О1��8��3m
���F=�E����v��
������j�CS��Q'��ݘ�Q��JD��=6����=�����L��/8i�k�8�|%�'���;�p���,%W1lv��٨=�������S����3'���=�Ʃ�T2�$܅'.���@
� cc5�[��ζɤJv#�4�]�#&>F��h���=�ߛ� ��&n�,/�b�*�>n��|��x��&�ِj�#At�ĕ��	�8��[xMB<�'u�g:�˟�J���}�R��a>v~7t�<w�9�6w� ��?�gw��P�y��4
��F�@)�E�F�Q�o��"1p ��C�(	ѹ�;j�Q=�`��/$����<��sOzC\*j0��)�s*��N�n�=�w�I��KJYL������R�g�.)��8�!(C�jĪ�ŭ��r.�)j�!��6\J���p匀���������8�F���)'~���Љa�����̸vQ�gŹL6����S�^hoMiO�8�>6�D"F�T5RO���eb�2�d	q�V�cȜ�A���*O��#�kCчpK:d�EA��؍Ry�>��h�?�<1�r������ �M�S|F��S<v���
v�.�����ڨ-���B��B��#F��O�����3����\Lx��(�-�Gs��g&�Z��Y���Y�8&-H�J^
n�Z�@�.��+�/	#A��s�shGc�6[�mX��(���(��k�CB���k$��&��j�zd���&#��F�LZ�����������#V���f�ZȘ�������ߜ��|��4��6C��mJk�Y�<�*������O�Θ]c
mf� 12�����Ȃ)q�J��a�8/ZÒ�`X`�ʔ�f���p^�`���r	�k � �&M	�N�#Le���DKc�v�Le�t��G�'����?l�mh��L�J=�H���� ̌S!:ږh
L�LB�I�:��:S\�������B
u� |��{Y�υD'����Q�����p�<%I@�U
{�3� :�L��C�,�~���&?R�1i�N~��o0�)�1NhD̤l�#Y��#����@{���d�|�e����񒎅(�UJxI,����/�1A�|���7�R~`�g�ފ��K�s�3h��+��F��j�K�u����k�h�������}jY��7�Y1��R¼�w��YG��V�(O��4��O��&�%˕
Q�4+hO��6�g��`:��JF�|Ǯ�#9�_�E��eb��!<��G�,f���<��3`O=x�D�Y��J�Q3"�����5����|}p���ᝲ�߰tذtZ�ty�/`63�/�
,n��Pnm�;_J����G�y�qҋ�E捠�E�#;�D/��83Λ��|i�a��KOz����B�rj?�ؕ�H�f�]\��T���aX��I���C�љ�ӏ�qx;�����m����n�ۗ�r�=f��L���0�����`�<摠z$z�Q2�F�N�/�鶦?H%���3C�sY��G�,:B>wB��R�vk���
1o�D�$�cd���Cb���}�
pT`:�9#Q-�WL�N̔�Uv����0��4<�e'�n�m�&�n�`:f��TK�ol���Qc�5�,�X"�,��3#��`dk����A,IXU*{FO�T`)ҡ3�MN5��1P��K���	x|PSSϔ
�mx1��]Yh%K�I\1i��fm'-g#�Iu@˸� �H�f�k�MHqW�hv9;�W�˲����`�������rx��w�ѝxt'��;�����>>/ȝx��t��>�;�����w�ѝxt'݉Gw�ѝxt'݉Gw�ѝx�1;�n�ݝx�5t�����cv'}lN�;��c��݉G���N<�����Go~��T�e���%4��~7�w���|g���$��<~_���ß儕�A����<=~�Ӈ��DԠh�"�>�̓��z%�O:�BZx�˲>}z��o�����/-��O��o?�%iŊ��K����r��V� ⥟������K���'e�e���8>J��"t�D��y.�P�Eqq�?���c������ß��"��)西�[]z7]Ji��rI-��K�9�:�D��,w���O���bA�_K$mM���e��/T���z�4_����g�qw�j
������!��#���drLk��i�=�T�Ty��{�
�(
w!N��V���w���v�Z��?����XV����7��j�
qg^\V�D�Iz�D�wd
��J�ڨj�_��շR�x��Ҹ��.����/d���B�J�+w��ƛ=߬��������|�W ��'���/�>���i,���4�.��wY8������K��h�ɇ�z��??�{�)���Ê��M6\�o�7{��]{��^��4DOC�7ě�ݏ�qw��d]��^��N~���'mfY$��)�/�wi�qcgۼ��G�H�4^�O�/Mo��������%��N���k�o�^?�S�]R���eE�����[���垔
h�J�@;��r�����QJ��� �~��VVk�8��1�eڔr�^}�[A�>���`��uǎ�N}�i ����M�h�K�B\Z˦|ki��x�k���H?+��|6v�q�b���@g_w���ײ�A�K[߸�f:2WV��m�B��aփ;�cW1U��L�g�Ɨ~��M��tQ����~����=�͗���N��ψ/l�*>�e�Mo�8@'��
��lY�tG�T��x�5��lm
�����Vɋ6^<�&g��Bޕظf�Z����C�����W�������]�1o<�P�~
���W���K�̌�Z֧��,_��E&�t��7{��!]'��ΠE�5�җ����d�<�>�oY}��~���V���fߜ�"��!��`S}4d���=,����]�{
]�m���x�H5ضa轟��0���r{�6�}󲎝��ow�����p�5ñ���~����Z�\��5��zAr��R�/�@�4��!/��'�a�p���K���##;�8֎�e[�j��(
N9 -?gSRu�\}�
x����&�8��
���3	�8cm�u�s���׿�[+�>]j�|ҁs��1�J���Jи!�;a���ߓpu�vhiy���8��*?���������;F른�j�𚋹:�gn��S��ò���씻�h`��^��t�Ym�VA������l��|�4섆��K���sI����/�>6�$�%��0z�@�2����v����Pbc{�~�ƙ?1��A��]�j#ېW��.{����j,�2m(�K���Q��f<�A�/M�x%�Nq��)����c{G�8��tb�����5���aߏ�.=���ށq�O��n8�[�~펤� �ޙ����*�9��0�9�[?�K��l(���Z��N�8P��j/�i�:yڙ
�p&�V�qvEqu�/��5cv?αi��
'A^?��Y�_�aVXж����'�$[���$V~i����ڗ4Z?���M�X�U��cHx�2j����ܟԈ�Ex�)]����C�����~�EbA��PIL��A�ti���>4��[&
�~1��#T+����Tr�A`�0�?p?��ϻ�p�P�s�^a56�g�� ���9�;&W�5�B���G���Tg�\�WI犠/�4�y��irC�7����fy����
(_�
q�3�b��k''��If��w�V�w�W/����x�_IBW�(Z��EZeǧ#9��=Oس%Fj��? F}f����7����2�	TP�qP�eXc-M��
gg��5�A��'�ZȢa�6�n���T{���i��G�>�
溔�v�x�{��-�e�5�r�sz`�jV� �����g;ɑ���T��a�N��B�gd�]Knz�)�!2���qN��b��Գv:i��̕�?���}����y�L��=}�a]M�YU�5�=��D���輳��3O�Y�]C̥���/~kX����?�~�Pt��HG��Z�mu/�]]-����h�����7\-uz��g_�Z��]�)�C�m�T<֨=�j�7�����t?�
߷h�eg�4�)��v�_:>�Y8�.h������5l�QC�4����H�^�GϮb?��Id� �jrx�L�}�
[co!��FZP�����P�o�(�3�!�.ן��}Ԭ�iD5\'+8����4Ҹ_��=k�T�}�_뵐{��xFJ�ڮ���\�@��\�x��i�I�� =�$"l7j���h0J� ���T/֐E������U�ZC'�0A�g��MV��3jn2�/��4>_$��۔�����u��:,,�󠊡a�e����;�G~Qa���>p|����,=A���O��D�F��I}�^mwب�Zo�v��"m�k�L���O\
��x".��}�������ۯ���P�ZJuɭ��K{���vJ�sv�m�M��Qmp�@T�i��/%�58�Lb�pM�;R�f^%�e��U��M�|��Q���T�
�3�,����sjp��e���%���Y}cüjp�YB`��?\^݁�݋B��&'M��ŕӎ#�Еs�w_�ʹ��<ֻ��6.�r.��n�|��&����%�g&ǹ�Mk��Gf�Ƒj�u�>�KW�`��X',��I�~��&���_�%�_�@Z��d	ԇ=Ӂ�˸q8+M��
9<G&:Y���Q���+9��
�`C�}Ah��߭��o@E��]f�=��.盧��u����G�A�kR�R�K-�%l��װ��^�`�Na�yi�ߧ��䪓�N­���a�TU^�u�G��	I_�Y���itv��ʥ��o�#��G��*�b�_PJO�gmUC��Ľx��O���a9�DZ�?�g'ۿT}�Ş7���_n���x��~��<Lky����ڑ�����uτNE�_v��/U;��7P\���`�*{���u6+*��Km���,;����3j}��f���+�f_R5Z9��\����ͭ�endstream
endobj
75 0 obj
90369
endobj
83 0 obj
<</Length 84 0 R/Filter /FlateDecode>>
stream
x��I��9�&��S�	�9'�U/�zQptf`V����o�|�pR����1�#p*�I�H��?������Ƿ���x�?�k���o�e�-�o���m��>�.y���(q����?������&_9����R�O�ޕ����?o�Af���3��Rm�Y~7���1�k�J��1t��>s=��c��%LJ�S�С��t�W���gm��b|��J�S}��=+�؞������R����?�TS{��O*��?J���Y�峧\����'%��4]���(�㹴����X�R�I��3��:�
������e������8v�zK��klw?��s������ �Zƶ��ߤm(q4�-=C��d�?6�{��ղ���B)�^���Y�9c��g
{}�X(���f%���*;h�ϒ�`QSz��gɁ�y��u�ۨ��ܺ��0�~����V��O�{�[-�|�4�����J��E
��Vaö��,Q,���Yv�V�%/Xh�������|�En9<S��d�"W�-�X�,r��p`���`����\X��?��޼�,�ı+�p�6v~�2�m�sk�D�g��0������*D7X�n�2(M�#
��3��<��)����I�XY#K��1м��Rt�f�����)/w40+a���l���B��wѴ`p>G:JN<�e<��+�8�i���`���!��}T�P�@ZP����`��!#�Ք��R�?J�cg?Z.O7�%Q��m���U�A�Y`������0��MP�[�В<�5?�`�EPZ�`�'�6����:�a��-?ޮ����^�R0p�c�����*K��^������}a�'x`�
�U�ȍ��
8��]E��_v��Q�����)�K6�F���Ŀ��ד�w���v�'���sZ�E�x�3�C�iٍ��v�9�V�a�6%�9���������=⻖��P-�]�u�w�0gG8�,J�?h��H���p;��o��
�sD��K��B�6����X>��%k��͛�����<��8��}��#J�q�n�̂�0�Y�A1��/�#K�y^�����ǜ�ǽ7ฏ�yz����}��0c*��.��wő%�<�͜7���;�1��8��}��#��ZYҊ��#�o���3�lM��h'\�9��^ˉC�JZ&K�=xY1a���O���[�C�A�\�}�B"u1Duz�aE���2��=�	��k�[��m>>i3�߱���g��$��0α-��l;��a�6T�d�>�m����X(�CI�X"(�8��I�]'E��c��&��
f�u�Dvq�1��NX��]�ݝ	�瀂���%�1��|_Lx|q�7XJ�"kz�^Q��[A���ټ���ݛ�x�(8�O+Os��H��{Lc�p �-h�^5\)ȅ�>����qb�vt�u��|Wex�ө��j}��.����(�֬��g���8�X2�b�]��q��K��3�����:��,�����2���(����6��hj(
�q�#��x��������]M�lv��i��Mѽ���b8v`4z�X�̢(.�]T8ԅ�.ܴ3?;�Pè�5�`��RY&�T
�=���iʕo�sf�=+�}�K�lƱ��r{\h����C�;_ր�Z����.Vc,ŋe�,��,�c;K����7�N�S+?���
!:g_���������R��Vˡ$�C��b8���*�u]�e�p-��#�%��b1^��$f�H��EW��j���}��D|���!��N���eY���.؅���m�Ī��|�`���0����'n���ڐ~�ayl\a50�:�ڿ�hF[��1�cs�!'BO�C[���[�u���j��A���~8�C��T�T�˜7����W���*\���{���
�ߖ�,�>^�ǭ��9}c��	iS�,��>�a�?����SDylcۉ�|֧٠���������'� �tҚ#���顏�}_9�1Q�G�C�}|��!GUoYs��
���C���/����w��;�����ǿm9˿���צ��o�S
>��(�}(�>�cFo]�,�g̩��霎�(Ģ�[)�QK�Z!5�c��\��C���kD8��q[%�0�˪Ū��9�6�8�
��hݩ(\���*��\7.T�_O�;WvHV���.�X�.~ö/Tx�c�dq^�']����s�6j��J��c��0A�Ҳ��w�Q0�R��
�'��
��[A�:ge�^��^�����,&~���_�<��e�S+��A�?�uN��\T��!��^Ta���Iz��=�Bܸ�9P&��c/��=h9��B�쯥�r�r,d��-d��B�tpI/9���ʥ�;��&�S���8t�����⇉�wY#%���kT�M~/���/�,μ%�����F�h�k�#�'�ۚ8Ӏ����t��b>�B�ޢ��?i{�a�Cp��XƀS ��k�^iʙkT!�Q��5�=U'5JA~�Y%�c�6��O�;]|�һ_�[�.��]m���~~�.�l��m�����mF�DB���w�(s�&��~�귴�������	����$m�I����\m8*B gm�ِM�%����\J��{m��H�w����5~Q��s���B[����P��9ˢ�R�ȥ���5W>^+߮�����s�%P�X�r�<�t[����\�䯕���{_ΕO��Ww���J�\�ۉ��>�3�O�8���x�2�=�tx�ѧ��˲x��N�$�*ln����KPx������)�!0��s����B�Dk�f89�y\b�AK�
�NXW�I�Ɔ�z�^5=,�]mQFE���p�eD9P%��o�.�~�`����|7�W�,�M+���8�EO%FI�,I�[2o�D�6Y�Σ[)��%2�r�g���D
�ؒ�Y"�L�$Aa�L���k����N���V9%u����
Ġ�_�sK�Y"ְM�����?M����R��Ђ��������:�̖�|CP��nηT�ؖ����-�DZ
GqQ�В������lUl����&%UG۬%`�	�qD�j)�HJ��Pb*zL�۬)(�
"�CX�n�*-�Ԑõ�@Q��¯������^l�phx	u>�R]�ARy?��i�M��t���!_�,<�U٥�L��Ft�a)]��3�&�B��9�QT�s��S�O&1��	��?Ƿ/��"b���2��{�zv�a-̱+�N�vU�]��˶�TR��[��\%���)v4����I�}��`QC��ߩi�hK�S�q�wܧ[��WLX.��qV��<„��	R�t�����CT&�%�ȩ�"\a7
7G8c���KU�^jH���"���FUmz�"����[���&c��W̙/��8�w�[�cΊ΀��pw�Z�:��s�I�� ��mN�~�i��9'c��z�@��oJ�*s���
��%��ka��G�4w9�5pf\?t�����_?�M/{=9�z��3�1�8���A��Ը��)�`��Ze�Uc�Z�
{hN�1x���JB
4;UIi��̛��֠IM=�L��i�":�T�|y���2e!�'��,F��]J�f�����-���vcӣ,�t�Ed�<�"�n�$s1�z{��\�ytu$��àۆ�d��(��0�&�
*���#=|ov�.v���Z]�т>��UW��ϟ�jk���5<f�8�m���m�h�6���g�P<��(�v�^߯���u�;����P8�>K�Y��pl�G�X��oS3��1f�e���V�?����j�	�>��0�����^K%���8(y���ƃ8�mɫ7�q�hsX��%OPD5��`(:vj��mZ��\lT`�c�+����6��0̆���8���'E.�(&�54�,L2b����uo+~~Q�(��}@�
ELZ�u�ؗ���a�`���()�����fQlA��`�5G�� Pu-Eo)�k���,��8���so��#�"V]��:qt؋��륁��4n<�c��^��4#�r)BG�%*Iw�pE�Oud�k�F#�0bG�y�#��s���s���O��5[�,�_$1	<���2O�Ų늡h�ʌ��<�n��͊�yx�Uv�A=��Mp<G��JP3�%��j�	\*ᚈ���5DZ}"K�l�1�#,��D�EW���(�ё��b6��%0Ώ��b�O�7�i�R�i���q�F�5U�
�.<G�^����ܢ�����Unp
6�jg����x�]�	���q���:���@AR%o�E�<L#;-��l%M1�Ȱ:��
�:�uM�(����,�
;���Yt�^6e4n��C�k1�R#���<�j8ɥ�[�hP�H�(�����|9��wg�e[�h�Wl�+��	�[�T�U���-�5b!�����ə��^Hm����6cQ����<g/۾����l�$b��xń�D,���D͍̒��Zb�3��†�XH�[ʫ�V�	��%��m�T~��b��;��5S��gI*D^=�'��ܠ�Jo��C�jd@�{�f�b��}C�ɾ�L
!(�R
i�(ڵ†uް���f�8�,f�E����L�v\���\%*�]��0�^��>p���&n�c�ز��l�l
2f)�$f�+2�a뚹��7o(��`�M_J����M�No-b3
�h{�d"~^�tz��5{�fψ�y�N̨!��
���t��'f��	3[�Ĥ��l��'j�c�k$EM4ȅW��ۄ��'C�&M/�h�MD-�~�[���M�������k@����Q"�0�r-V�`��j/��ٝ���l/z����{��m���[5B���F&�V�>
29��^�?-�V"+)Z�q#1ۺb�0@�b*��٘������U��:��T+"��7\դ����G��-�F�zqj^1`u�e
�`������LMϿc&w<l�Vi/��2�Ai���0*��gC-��\�Z-6�WT��%ѷo4����
̒a&�����g���XQ+6pʆ�
���T���
Cm����`;ʅc�"�m����+
{���}�F�!b�J	EQ4\(�#d����FZ�F���%	��j%@E�&儇���dZ���.-iV"��K��LF�'�Vy�[�LԜ�T��3�JR\ p��p �����kˆ[��ܲ������%7���Z��Qs�V�cd�s�����5�ڼ5���y##	B�7�x8{�x�G$��k���Ԛ���e�H�p�L��G��
w<l��^��>pk��Z���"wX����j;&��V����%���8�Xk�z1��H��U�g��8
�.FD��]�]�lު�S¼M8c�j]_s�t��j�K[#ǒ����8X��p�8�XlDډ�h%�q�	(���M��	Qsk ��'���fS�kG�Y���U��J�l�bf�1{�V>n��^�5��:�/$
��j���˼��5�;�6i�&IN�dX�t�s;�	vvS\�丮��f0��$�φs?�:��˶�0s;6s{'�k�� �r����H�
%p$^	�M��L�!%�7�ј��U�� +XZ2�m5�ZR<�l 
�6Qw��N��U��=��j��7���q:K���}D���)3�@mOL��k#����"��am*+Q�>�fo���#5W���lV��l:�ɰh#���M_��E���v<&n[/�m�J@_��@cz��`�m9��i�!�̘�hӖA;����k�M/�񈡳E���g ܒ�����G���cx�z��Y_0�nv�����f;Lb;%��qY5���ь�ɸ��q�X�MU$b�`L�L��#�L,�q�İ��<�[<�h��86�1����Copo�.`�h�Wo@q[���F<g[�h���ڹJ�ͪ�uF��qGÖw����q�@%@�hg�%��Mf��G3@�TC-ZIj�fs�1�{[`gY����lr�mA�J	pL6�����+��;dLВn�#g v��vTvuE��p��E�T�匶E=�FB�����,vģ��
g6n��Q3g�ހ"vt@`�h6`00Fxv����sg�{1��/t������PF��8`�yu`,�{�5C����l8�4扣Mc&�6�8���8��7�z��^+�zH	�Cc
���hmAKb��j�H����|1�c���8"�΀�> 0t�I��D�W~��
�	�n(-�`(�Ln��}Gl��#C~�7��!
G|G�ͫdG��n6���؈�bA?�g1c�A���0��p��3O׀�(�*W(�dL},�M�"tN��x�[h�Y,��'�
Su���B׈�(ۋ�)N�PLX�d-xz[���q"Qd��n\�Sz�8�0rA�ֵ�~�f1�֊�(����v�msl�`-�m�`$���pȘ6��z.�������p�G��p��f�
G����8ی�0�8�!`��k���ܽ�}D����U#��!1���E����>n��-��4�C�7���~+^{˫�E�����%)�u�\@�v7M`��
�`g�q5b7f�<��*J�R#6�i���ֶa��_#E�Ϣ�Ž2�?ha�W%s�H��Ft�8VK�|&�.T�;��e�-�ހ#�8a�w�)�
G�}�w�4!��dߙ&��m�82LR<0�S6�.��WƵܳ7�XLwe�ƪ�XR��me=��I�2�Q�Wg�"[ ��p��i��Ѣ0?�_S�{����c�S�2�`�b��T�ȼd�yb�5t�����A��.�
[�[�h�w)��̖�$e�x��&r�I�M!���;��ᯉ^ٖȻo�nC�K]h|M��I2��/渞(Q׳�R�&��}2^��Q,p�����|�ga�
����(�����m�0
wk�8�WԶ��W㏷{t׮�"-_�K6�6{�}d+ɏ�'C�o<�{�Woo�������/8�8����6�ĝ}2����H*q���v���a&/��5�1�8j��᲋d�y�*��8�H�|C�����*80��ȻR�%�aE�f��`(���Ȝs���v���%���~�{`{M�}�Β��O��ݾ��eN�����{D��u��W[p�pd��6�m40�`|&��ģ*��VWo�d�Q?�8�)9�p�4K4�l� 	����c�)p��꯽����*�pL��h�rgm	{��EK4.h�����3�kG�ƫ���{@�t%���(*l��2���ѳ����� k�C
�t��S��}��#J��}�d�1��pd�5��K�(��hK7wB�����{�w�ӏ4i�.�-�ϕ�%�L�C��W=��ɉG?y�����=⻖�|���l��o�2�kE�x�"�c�}ҙt�Os���v���%��8I$�	#!Ξ�,"l��B����
�p��v�꫷��{�wMӎ�f&ک{�c/�*�LBQ-mKz~�>����%E��M��1�΁�Ԯ�]���T�{�b��Y���,�H|��‹�����D*L ��Z��L��u߱�%����:����3ұ�K�)��b����.}���K'��=t—Q�gM~~�E�
G����W^^�|��o��O�o?�wZ�+��Sc�f��i��=��	i"�����
��1=�*>��������@����>ح�C�&�|���A"�gh��]�n��GGUT�߅�΁����>��è�m��k�`�mi=�+�`��0��݅�.�Ύ��6��n*d/P{M�lФ�i�QQ�O��(x���dQ�-�S���hG�g��X@.�Ν��x��.t��K�F�z�����B��f��u�uy�2Z��T�M��R}6����t��]3�
h!`��)
m����U*�k�JE<Sb#��v�>+��^��l\�&��6�1s��](�z��Vv
++��c��X�oh��DCM�&����F�[���w���8J�y$(S�we��aƒw䶨%>"�)�b�x:5bO6�e�g	�mrxII�H�!���B��z�Y[�A7F�}�~f�T�5�^�"u�
=7�ޫz�<��ǟ<��ҌS�6�P��	���8���
�2���B��H���	�]��Ȑ����K9�w���;O�{|�x���
��>��I�Y�Z�c3tF�Yv|��2فG�U��ih#�<����Cz\�A7�G���=�Y�ӛ���V{1D��Y�y��h���6��%�����WoH߸��;��
zm�O�蹍��3L��>.��l#0��O�#��;7
��
�{�i�_J�=�ѽ*�͞�]�d�9���?�Y��x���z��y��փ<.�����R1��>VR�ٿ��2��(ȋ.��]4ϓ#m!��PrJ\X|���k���z>U��k~�L���j�g
��<�8�Pbc���oze�7A�6^_�N&����L�!�t��B3�۲�}��Ebg�f(�,GĞI�̴����y,��b#�*/%iZAq������cgUwo�q��6l�j�P������NG��w[A�A��\
�;;ÿ;���̴��Gdֈ��#ř��+����T�e�f�%��"
=*e��%6��>ޮ�ޯ���a�8S\(�4{��T{)Ah�4���Įzܝ}��"�("7I��e�4�E�u�a�Q�0�>6�CN�����Ǯ�ioq����e�_�TDKR�'�{5��]��8&F���%�h\mvf3T�O<vEX{3�Ԉ�S�%��G&֐w~$���ۍN�0��(yB1+4#b��u���̴�٧�Q�%q����G�Z�}!�nj@ٳZ����$K��~�Q²*y�9JF.{�	�'�<jo�z*D�E%&Khvs@��ʬ�yI�)y$�]*�[�u�I�Zg��W�&�����=�u3%\��Xeyй<K�=�dPfy�0�#�A^1<������%H��Etъ�D(O1s��a��<KNJ��3��kߞ1O<v�x���v���+��4����Q@����L!,L��q����y�K������9�j�9i�y��H"����
�ˮ�f�f�g���O��酜�;@h�CK���0�(�k��<�B}�?/<43���{��+(��#pp�z��t���M�N�V�_��1�"|j^=~ �'-^�q쭻��L~��w��Q޿��yz��Ck�dd6Y0� �p�+�ZbI2Z̜x�/Z�}`��Y�<�m}@rF�F����/�E�5�9�妓<���
8��^ԧ
�����\MS)�����
_ԧ�}�‚�d5^�t��;�h�6�|���
�DBAL�o��}���B�J��^��"����'[�����xK?�U��5?@��Ιv�.&k�))v�[\���q���E`���[����!N?\`O�STK.�,A�y�N�M�BS�g��.Kl��B�
0�B_Xe
�|����]vY��W�.G��r���U=���oXȂ��=	�n5����|3c/Ih-�N��f-��,Q�2�9`,��n|��jh�D��[�j2��y�w�DҌ`)�p�=D�X�<�"2��'ǒ�9���+Q��]D�V"��T�<V�|F7�N���c�*�9^�<3j�c��86��ռ�8�R�K
����F���;����\�e"������6/]�HZGn�u�LdP,���\�D��h�3rDE���i�0+)ȹ��6]C�d��YW	����	v�%�I�D,�f�?���%���
!�{�v��"�CI$b�#��*,Ì�$e͈�#{j�����-��Z����A���-&��š�Q	�-��"�����&���O��U�@6{���I[����/�S���+7u_0�7�UC����Qm�Dɷ�g�I���*�k�]��|8}�,]���U����Βd�*�r�m�ؒn*�ZA�3����L�٭�ا�+	�6�0'���v��FY�H�����P�m���V#�j��x���HZ!^#V���o6�$�d��v'�F#�`ī�yvH� �[A��H���x��3��d*>�A��A��As-��O� *d�餐�T��kҔ`²3m3��d}FI#}Y.��i�� ȋ����i��\�U��Rl\6��J23PZN���ref4=���%��	�C��$p�͕�q��n�����F�̔�4�g�Pr���� $8��gH�f4��)��L�!w�q��
�&�A��r�Od��D��3����$k���Ϟ��-�"��%��%��-����k�E�S{w���o9���gt���o9<KL5�^rx�t(�-)7�e7���Zr�r�R�4�&��—������M)� 6
��l��/28_2�_2����|��"��NF�&��7�5�݋�.F�v����d0/���;���_g��&��0g�(H���b}�$nm���ҝ,%�L�8i�ւZ�$m�AѫM�˦y;l��)�A2�X^w��B�T�j�R�év娉�8�w�������=�K9?�x�
����#��(���h/<�]<���z��E�K�K�A�/Ao�{��%�'��'�0A?��/lb
�d�'�0u�_lb
�z�yc�0)�"�'�h/|�^|"_|"�|b���(^����t�)����O�>A6a��=�e����:E/�П���L����fN��O�6�<�i��|�Y_&�XU��x�Y��F3>#\j���O����)|(��̾���z}���#��m�ɳ0��UK�WH��v� �4&F�[�L��#���c4���(r��U��0K޻҇�9Q1���6X�t\�J8����J�ԕt�+�VW���/�����9�erLue�{�M]�&G<Zlꊙ�傗�RXb�
�o�+��TWl���������+�VX�J��fn��ޠ�Voi,���/G��rSc1�cj,P�v�|g�X��5h��k�_4i,��L�6����Р�0��^�TvcnjfD�5�;h�C񖒤��dE�r�Ф�&Is.�S�~�Uր*������q�=$�%?xv+O׿�d��<\d2�3E,؝k�	q����bH���ɍ�B��[!��|f&�j��i=lEoI����u�/~��u\��_�u\���V,�qY:��Y�XNj�3}�:.Kg�*�x�t���s���kg:+�x�v���_���Sok����M�f��+���:�;+!��;��=K2���j�9)s�Q��k�Ϲ�
�J�����u��@��P$웵0~YA�<�HP���9��]�>��`0��Z4���-�BZ���V�8�IPz�d��Ts�"AK�|#sWZ0S�J����Pc��jL6�i��예6Z�z?�5��N�����"2���Ex8�P��7�!C�E.C����™�CӢ�Ֆ��O��G3Ҹ���d�����͗���V]'V�^�Q;-�+4�a^_��s�Ȓ'����BN�Wp�d�Y4�c5�^Re3��,�=��i�U�϶hD�{�ЌG1���D��7�h�C�����O�̔�)�L�X�^����>�ny�(�_��Z�&�|�x��ػ�&�|�����CTt��\]^�_�o���A�����o'hc�F�!�=�p�X�ޜ��E��"�|�|�wtx!h�A�A��nf�L��H�o4���/�./$]N��"�B�兤�M�兤�ˡi�M�!�x�t�M�}h�*]J@je�"\A�3�`��B��3�y&Q�7�}�ԨX�t�}���(�_����hŜ�����5*�+}�P1UWs����/����	�AN@�#1f�)n)��
�����HՈ%#�ܨ�Gw�k��
��Dg����@��3���|n�۹?h�m�ai+��y��EOxA���<6�Mj�D�-{(��T{�2ڃ|���{[`�oS����Q��I�=f!vN��)=
h�Э�(jV�MXi�=�LsU��&��a���j:���^�?�ל��*N�y�����	in���D����@��Yh�ay�T���|:��6��O��j�p�C�b�UA�����<.[�qX�u�FYv)�����}��eڣ@3x����?�,}�ߍ��e�����-cg�㎝�)v�g�U����'ۤ+?S�k~��.x5��g TO����Oe��@T?�V"x0`j*�ɠ�e�ƍ��h�s���*E���&^n��uTkuO{JI\���s�xq�6�܇�ռK*ng�$�z
�z��%�ͬ��D�e��˼���3����56�8�!-�@\��^q�o���f
�齙qzo��	��f
��@�@�J���O�͔������vjiⰿ��r���"ˋ8�/�0��n�]F�Zyo��1q��{�]�Р��Y��^�Eʘ�*
@��G�XEUNu�$\��~�7~�$\�o��E�ykۃ��%	���1zJB�xzEOQ�^Da�D�%��u�q�™� �(��,�4��L��C��':
��r���i(��,l	N�[�[�C�S�:Co!�K�7^���� ��x������y�,���-2������q&7�;�&C�W�"�ʜ"6�ft��,���5��5�RT¤������3f��$ĺ߹��o�^�=�d�
ڳwd.�Ɗ�u�d�m�4�p2[�U�0��b^4��M�pIx���>+WoAt����+�ֺ���dM�D� -�!�0�%M�N�>
�U�]!���m.���YG͆���$z蕒�����V��U%���]l�k�.������a���,�l�hB,A�����#�%	י�6v��9�
���J_H�
R��FQ_!S���>�=��D��Jd�@����ޮ�5�9�EЍg���P~�B���si�_���ɳ�z�Q��[�a>��f>��7�@x�.��FԤ
����41Ϸ[�/�u��H���{#�9;F͍�8@��VT���0h ��u�l9=4ι�n��[o��
1x9yq��Ua��错�������Ef�]f�Kd���.��/���a�O�����k�����x����n0z%E�Rӻ+YZ���^�0_�ZB�Cwe�U9�ݽ	�Pm������s�C2淵k>c�Z@B���?`,]�g6mu騭FW��
��MLZ�\<�n�B������a/з2������s�H��]k `�Gs��
uo}7�dx�:%A���S�RQPO�_�)���u�2nv���ev�%�
�N�sх��K�;dG�z�wF8l6�!�y7Xn�K(%�l��3���D��gH6����hR(�1�	O�I
�M����!K�~��SL�3��m ��kc:;�_5.�+��@���$�c1X�
>ϦUvS��.)����ɓM�B3U��ӿ��K�h!���5bl'c�O�q�E�kf�B_[�򄷀��h��#F4����%�&�M!�/�l�sQ�c��l
�p�9�]�4p1S�H���ʃ���Mɟ=�Gx �r���2��+��B��W�j��X�`|��
��
e�	��yA��"�$�l��q�T7����Fّڴ�xY-k��$D�<Kݩ��J�`��ˌ�l������h�^0�.�f�fe�^�tMy��t����l��XzŧH�>~g�ygN��3=������;�K����Q,�q�Nx���ٲ�1Tq1Z�FT�{�1����:�RR�SF	�b�[$�l���3�[�g�1@XS�p��k�or����^�(O���kT%��3��ܔ��Pw����2o��� ��%}��w)^LY[^�d�+��+�3��]P+��IcES����q�Td��!�y%Z�>��"ѷC���W�_X�	��w.V~��s��ųω�+�+��� �߃�wܾ�pE/�Z�q�mV�a$Qa5x#�F��r�PH�P�K$M-߄	��j����j�/�Zt��:�ϼì~�Dٕ��(h�A��D�[�ވ�Bh6��΄f�`��I8>��h;�Yhs=��m�l/ض����_.��H�w&LK�ҷ&��!��v��h5��YҸ�����V-� �y��.eg�N2"@r%��U9��S"9��.�q|����?(���E�m1�r*���:!g�?��bW��>=���QYY�(}�q�t�ؖ1��&�i͜&ݯ{ΟHwˉ07�)�O��^d��J���L���j$���������EŨ;�����;;o�Z���{#c��у���D���O-�t~Y�S�wx�O�r�C�p��-�'F��ƈӠ�6��3Qө�W�=��<��
i�%�?��}J2�i�M�����p�^��Jp���,ޝ�F���,�9e�"��ƒ�u$X�K<��_J<��$�?��3ݸ5���3Kxp���3�'��{`�j��5p�b�~�'I��9)�NO������~;�����o�L3	~��'Rgu�Hx�7*�nc�&ۗ��B�<�
�ox:r��?̈����A��J�\;�6��N��x�<]e&<��W��*�T��|�q�h�&�(�r��K}(/n?��l��`�m����ש?O,�%qi�'��M|tc$�Ш�3V�:g����#����*�+�vHa<�Q?�<[�Ipj��fl<[�G���L��QbD�&:n�F{F�� �Rw��q���D	���=�6�C�J�LO
�v�'׶�|�I�|��l�ܔ����t��+U|��݋��Y+��*v�Ձ�	�����L0{��"�pEU�fu��\�9_\1T��Tu�1���4��f����qN���3)�d��}�M-n;�{��6�7��طTt3�)؋�S,9��\jX�>C�7��6Jc�a�[j�$�^��Ů�HQ�3����.{:�aGx
M�ǗMO:��yM�0r� ��J�Y��n�nЮ.�=�z����v���Ow1O8���n�)\p�[�F�'\f(���l���J�34a�=�<̑Hy�.�G�k�j��ͷh^h|�]X@����K�J��f��T.T��(9,>XTE�z^� ���b,����u��'���5��F��*7�����`�إ�]��g-��[�mD;�Ok>�ȡ��|�)llg��y��f�6��{~l�𒵪��X�Gz�Q.,�"3���o&Oє/�P����A.�$��~o�O�8�$p�~]�o��ݼe�|���\O�ǻ�og��1-s�l0}w�O��mS_�~����5)!��"��p�7=z�p���=�ƿi�ף�i[u
	]y�eFV��H#�
��J�`m���=b1l��{�����C�N5ȫC_0w�%�sع��R�F;�zd�M �M�Ѧ��S�!s�M�l3��r�8t-'$�!5I����A^r	�l��ͨh�;w��\�̋�Q�V�*�J�0/��F��r6�����z�>�-�U#��w���7h˗���~��{�|��P�ь���	H��d�$��a}����<�G�W��i�c\�&�-Ҩ�~�| !$;̔��-�@B&MX%L�g�[���m�dj�O%wmc����	Om���+�q��S{�����/��X;Y�������uy���K�A�s!S�ʥJB`[<�HO\��Kss�3�x�L�҂���[58��^%���n�ѡ���C�@l8��,8��1�M�����/�8B����~:3��v��F_��ȓ��B>�d}�p
3��������n��V�]䭤tz:̫wI��bNt�v���3�	nlP�o�#8 L�o)߰�9k��,*��\*�}���ۺ�Ka���=���9��%��L���~����Ar�W��&�֎O���B�k\n�a��„�l���0��Ĉ��a���1�;�k&_�9�s��˕ݘ�9���v2e��
��p��k+�boA��x���k+����'{� *�Wz
�i�͸tTOuV-�Ҕ��Ü��l�z棌�b���'G�׳���=��>���I�3�M��l�S-���S����[��$&��g��C��$����Nf8��"�Za0������ʌ�����e�È[j���QV���Ҥ̿j%�Ym;��������������`�c}����1���7���p�ҡ������{��\���e�jO��c�>i�]��Ϸ�g庋IW�Į�NMVb>;��ךLu߻���-:i��/��U��_�H�����ߘ�s���U��^�3~��vS�}y.|��� �U�}��C��!���7w���`Y3v�U0-i>_�;���G�'����λ��\��FSl�j^w�x]�w�-���7Z��,�?��e�!��JE��AiΦ�pڟ�8>�l\�>>짷��h��
w4�ddSGl�����l�g�~6���?���
��ӛ���wɝG?n���=�'_i����֛$Tu�39:�M-�n��D*,ד��%<��6!��Dh���Bn���e2DZC|�1�@
?��a����'�F�R�0� �J��6LD`
T��o�Vo	�ߢ>������}#���R+��A��}�p�R��_����A�/��p���>H����L�Ʈ�N���)� j)i��XR�&�HNJ��OJ��m�w���e��e�>����"�E�/����N8Lc]��i,礅~NZl���/�4��%�V�Ќ5b��j�
�_vV�į�%n�Q�s��
.�GvΙ��,^s�9휳r�Y��]s_�L�d�jβm��9s6^Tt��<��I�qN���l#��S�_���x�2m���3e�~�!F�L�ج��`S�a�n4}�7��Q��hS���	���Z$eq'��j�ͣ5�؟�����G�7���v�7�L�Q�2�w�Շ��y��eh��q�1I��f��Z#W�wM�f�[��}@xT�QCu>�Q�KI-��a�.C�!Q=�SR�=Kd�.G��3�
R�.���U��M�,>G��
����`�zCXc>��F�l��σ��^"�x����5Ui����:\*�!a�r�hEi}� \��5��u7�4LV�0+x���[b��T�@��Y`ҷ ~^��D��z�M���I�?���s��A�B��b�V叻�jZ����I���Fb�;J$8���>7v��������/���#���p��fK�Q"ɰ���ۈ��c���ގ���XN��f���pL
m%�(�~k#���cW�������ܮy���Ie����Dr�Y�=�UO<vE����k�a�!��9�z:n%�b�-8���R�H�z��ف�u����Z�J��C/��s�%�(�%B,rk��.�G.�{�u`h�����ٟ��:�%�a�^C��}*e��%{��>���&��k�ÜD��h%��F��6�Yg��Eؾr	ۻ��p�"���<Z/�6�8?}���b�\D}!���Ic6�U�֭C_4r�mUu����� c�����DCTV�S�(�@A!�5dA����jR`�'�vT'��QV6�7�
8w�䝜<Ep���5�`�x�.b]t�1��.N�q ����>��(xZ �.`��L>T�:����,�U��!p���I�.���C{�U��6^5����u��k8rL��2�7� %��}h�QP�����Z�h�^񻳏�{�w�d�����:��cB�g\�%��>��$%]��a{x�h�'�Y�}}�G�ӈ��`�_Mj�pK�#�%�F�����}
���b?��;�x�|��H,\�Ȅ�\�ظ��:�%�jxł�q4��S�'s�y덳����0J4��^��A�$#���EK��YJ�Z��c��Fm�x�0woo���g5����`�5+{�\J2^. ���;�%^����h��a�~�*nw<�5�{o`�kDt^�"@��󣰯���x���,�-�&�l#%�mD�ˠ�>n$��x���v���+�����%�c�I�]�Y�[�O�_�{�	��Ǎ�I�H�m�}����⠁�^�}�$�C���f��
���HI�wv~�}�B�䋰L���U��=T�̝jT�+Ѽp膡�H�=[�8�� ]z��_��qJ�-��>V	Gd��p@w�T�+Z\
&�Y"�M�zA��V�(�#���>:�x�ǣ3�C�R�*`%L�+���!�ϸ��,���s��8u�����{@v�*C�X"�;�H퐟м��@J����	���7����[4爻�
�	��u��,9�	_��oJ�'o�55�?s������k�Z�o=��j5�xm2�L��(�`�өh�i���%"%v8��R���c�
�����L�x��e#p��SQ�&��lpk%�<8�Dž�J��>����T��{zl���D�N��b�:���%�y�q0�7����_�L��P��)��{��5Vw�~�;����.�B�b��
o1Ok����G�g�t��]!����֫���%;�T���h��-�9`2k�QTΕ�87����DQK�ϒ�|Lc共Mɺz�M��H�B	�*��w�n
ڻʄ����%�z'����x������="-
�����������@A� �+z
��}/�˧V�Nw����&O��
�Y�U@<y�<!�5����zf�%��#o,\K�id�5�vya�,6%���s@д87QШ��l��xp�S�֍���$��U����p�[�Q�e�O�Þ�@I�NKpm����pΡ���%q'i�y��9I�7�ۈ�qj�ի�Q�,tw���d�(y?K\;ql�q��9gDo�q��	��|i�����Ă����<p��}�g��Q�ߌ3'�`�T�i�tM�J�;�4J�I��$��g~&�5��p�#N}ڱD�,�Ω^{S���b�'�h�þ=n4>�t���mDS�M�T�ia$Z�#��oӉQ���C�:3��S��ls
�E
���{����U��
��k܂RW�}�'�#f	�����N4��3�uҪ��u��]��	������DA�\Kg�ӽs����{:y�#����g羴�c�����?��#��F�u���P��4�2���E8W��Q�,���=��P7�e�O+��m����e/�k/�k/ė�ν�έ��pnh��>��~�%+]}������DQ����	��~S�G���v�f����ׇ餱�����x�N���X��%��	��yT�"�~"�W*�5��n���ʌ���Z�wyՄ��i������fP`�?��	�S)�I�ž?Q�����^\5�s�ZtM^,}iѓ��Gݼfy��n],��4�3Z���Ɍ�	��|��?M^���fi_��1j��U�)J�#�m-p�Hs��@��U�	$�ͦ���|���i�Xtvك�ǚ��{��*Nר.J�VB�S�����UyY�����vu
1��=��翶"�>*:���~E�� �vz��:���L/Ix�U�������UWz#���"�^�ck�wfk�7�ჭ�f`}��U�1���c@�,��3��Du�s=���.���8����H�!4���&���M�6�I�y$XW�p %rT�>n9�LM
�0c'u���X�R��Tg-Tp�'�x���C
W�S�$��e@t�<Ԃ),���X(�XXb3�^�B�w����=�|-Ɍ<�Q��	���%`��YL6�>��D�D�<ce2��%si�D����(��,;{
�+�:��(9��o@��L4<�����V��{��,��}�:}i���e7_�������{���O{�M�:>�s4F@�1�L����t5���QψdV+&=������{�/��'�]�C*G����{5�L�i�@�;���Ɖ�2%�dM&�6�s�_��S_^�dS����f�r7�/��}L�ĞG�i�G�eR�؍�}#O�?����x)�*�V�,G(��H�h��bC���r���f�=H��6cumL^HXS�7��x�7Ys��I�&S(/Dt��1Z�)�[3U̙
O�G��y�&Me��W���9��sܚ�z�H���vr�t�B�$)���4�~��H�߲O�4MW4Ç�$�}6&K�9x.3��4��'�3�Az��)6�)�D��)�٤eŔ�o��,H�YFA�C�������ω�6i�t�d�a�L�3�Y�=��F�.���xCSK4��G���jԩӯk�U(�_�a�w}Os�)�ؖ���Ls��O�!�n�z�N�)�e��ғ��a
��Z+Oxx���~�d��E��5��1a����8g؃�Dp�Y�}+,�
������/h��Dl#wlt*��������4
�bv�Sp�T�e��<�q��=\cU'����=�SZ�y�v���bXHP�����W��U�k�,L�`+�w#B��&5Lޏ
�dT�\5�Z���{��L}�RFO���ǎ�͙����5�!��p���BC�X0$�>O7��I��ꑙ֭?�#u&�FQ%^��	�	�~��t�S�!�#�^Ҷ��7X"����f	s�.�;3Κ������Yһ�e��Bo[+)��	�U�`�
z�￿X�B��P
�����DQZ�d��>�~�u���7��н,��L�܌6C[ه{�ݫ�b���\Gޫ������f	n}��4~~[%
�Xť�>�[�sWt9����#avS�n
z����G4����X�c�cz�'�,����I��o�.t����R
�xr��p2�Y��m$�8����#�ڣp��SO�/+����7� �G\�S5S,%���0��b���r�\���TDMW��pM��fz�䒔��&\�x����j1y
Ke��H8����<^�FSX����`j͝=5Aٍ|)F�'C9�z(�;8�)�mԮm�m�h�H=Ȟ~�X
l��M�qm[W����$�*_`��9i-��ٴ��ؿ��8i�,Ey<R�	º���X����
��y��x�N�f���(������@���7U%4�,f���x�X�G
:Q��#?6��خö���{M\f�.�B�p�ᭌ��/t�d<�Y3�hQm�2�bE������$� �C`�9�oB>S�[q�kmO牣y1>��$�F7��2!����J�X0�²�Q���c�ٶ��"��[�OR��{����xT����2�rH�
�7ސԽ�%Y�T��鋮K>త����K�A�7��{�j������'��6�âT�O�x2p[�K��r�NU��?ذ�L�Ȍ��~@���E�hԇc��#G�1�s
���k
���k
¹s�EPo���t�'��-�=n��)@�7p�LX�c]-遱>�s|�ëQ_�
�}MMp�3M<�*�sW�"���Mk:6��0����P�`�m�_2oq��;�4B����4K���<���D�E�s~��`�&�����U���r��䦕��]))}�A�}��7��������E�_y��ϲ�eο5�8�5�ޥ��g~�=�����@&�ɬ9�Ҭ/8��7�d���HƇc�
����s��쩮�xP`���ܖ�<�[�l�q*��	����E�MkT7ބ�0�'Z����e_-mA%z�����a�h�������`9�jt��q�\K�����I4&�r�ϥg�R�)���
7�{���ğ�4W�5�BL��eQ����}2���]pX;-<�f���[�Ң�Hɑ��aꅫEH8�5�=�p�ƻ��Љ�F�f�Gz�|:�m�i��;�m���p��C�_Ģ0�m�-�9�ˆ�mqC��<{�9�M�pZ��-�b
ZC�
�7V��ާ<�c9��g��ܧJ.�p��
jا�3'�o��-�jT�F���`�,{���y[����׀��A�ɏ�9������@��X����ւY9XCC�{D���m1�|��:Z�٢�$�i��oRi��f���<ӛl-x�j�Ӓn��ax]�o�W�r�D']������ɷ��綖
i��\ZԮz���s���;�7�b�bZjf�Ls�Z�2�	j��L����"��:i���9�)�iQ�F��Bca�)`mA'߬���RX���hQܙ�F��8�
m-�}�(s��A$p�OX[���
z�~a�)K�n8�X���b��"?�^�L�x���`�V�L����l���k�������d��m^y �� 7=
pY-r>��{�S�:�[����t|�A<#����2;$�5"�;
.dg�i�d��:��M��Ng�LYԵȄq��a��t���Ys���F�Bd�y�V�~V#�'����Y�f�ຏ�
�����L�Y=;�ޭF6[���Z���U#=�1$�٠�Z^A�p�g��.�]w�w�[�s�{��QΤ�բ�n��Q�ޡ*�L�c5��Rnp��22s��T+.ېڠ�S[3q	7G%o�j�+�
�f�i�#�LA3��k�j���=�8�tOT��
5x`4�S��dè �Em;l�`5Hd�V�P���I�����M�48��O�b�jZ�F��'��iQ������G��EH�ڬF9hˇF��Zt�Xc(';��m�����j[
^V#�ʻ�Hf��](�EّJ���ԟ'Nٝ_�wY78�L[���Բ�W#���-
WV�0ū���5�}�P=�|�^�ڇ���yj�E�>�(6��ے�¾���$�1�{�jC!
ʽz�,_�]�I��;�)��D�	����a��N�[
��0&��f(
���vB�0�I�vB�aS�g�����S�o���	��_�i΃����a�j�}?aj����춎�;�f�,�Ek>�X!��
j�M,Ή
�T/�3g�i��p�<�[J9�ߐ�gv��vUσڙ�K���X�7�R��;�@��!#���5́lp�Z����jU\(W�B��jT��u�բS�X
���#��}�p��-Tl�H�V#�7\����>O�a�u���BrH�SS<U��-����j��j0
�Հ�f^���ي�E5k�5ē��qWه��\��ٕI��Bs�j��s6S��3�M8?��n�ܰ
�Z���m��!��aO��Լv�{=?���S�*�R�7��ԻW����^vؼq��ws��wMҥޕ�� oX��U��\
���]��
ծ���q��F�El���f����9���z�ϋ#i�ܞ��&G���w8�(S�
:�$��+�	�
���V!jL�-7�j ����Z�*�Au'5S��}L��&��M\[>P��
�_�!P�I��
�ӫ9�^�|�u���LU�Q�"߷�KD�ޏ-Gc��q�����ї�P�����Mxa=�؇G�39�JF��ԅ�5�z�A�2a���"c%f�����lQ�MV�]ct�E&G��c&�t�[��3kP5��`��QfV�"t�$ݭE����1X�jP��C�pQ^��\�_2(k�eF/Y�:��P��cTǀ��B6�`�0�T�-�s�����\m3��0�Ր��E�����֫���r|kQ!�f���;��c�㩇��h�*�Z��F�z��"J�Fq�nNM��IA��>�>�p�g��2�*���N�*��A��u{�!)k9[d��Z���	���XqH�m��ݰ���}M�<�l��'ޫE
}��-�bx<��cxȾ��}~1D=��;�p�gk�
m�Kiy�P,,���h �&&�&|}���ӰU��<o�K%"�8+��[�c0�^D�R���.�L��XP{b�>8����Tz![���gɊ���2A�U�g��&\:�Z�/���n;R�-:\�gG:[dF$���"o���"�n6�g-[�B�c5�9U�v�j�Ɏ�%��ϸ�Y���wֈ;
�y�� ��
l�]X
p-j���}DIfuԯ���r&�`an
	�jTJ����Zt9�F�`p�[��3	��r�$G��G�܏�CA������Y��|"<,�������HE��4#��EىDct�1@߷/�V�6��;���i��:[�c%4b�hx�iB`(��3�ܪ{���	wʱ�"�v�]��i�9�x}"փA��;ȍrA��i��&�2�IEޘ�JF��������媫���;RV!]��ɩ�C�6�N�2 �6���Ĝx���PB+�
S�G�B��ધ�[:�g��݄��l���"l52��L��0[-����[����Kg�	�Ղ��g
�M������.'���
є���A�A�V��O�Qq�4ᶯ�7S�\Mw7�Sm�-j�GU����o�l;Vr��c%7�ωjƱ��>
N��6�*�
�Q�L;|���3�W��m�P.̜��۾[����?k6[���pߑ���ȲM�0�)��#��3<��lp���	:Q"
c4'���x���$wR/�z3��>�P�\��8�ǡ_FzE��\��r���+���4�����LoD�{
&�����|��j��z4�0��an�iG�Έ�#�y�=�J{l�h$��)n	9��[�1J�+
8���[����>[��Ĭa���N�h���\:n�	x��櫲���`�9�E��n5v`0b$��>#rj�CK�j�LVg5p�>�v/B�V���~7Ѭ���u��f7�5�˔:ae3�����Պ;�Z]�}�R\�m��Zk*r�Gh�`������f	p�+4l:�l���2)[��5i�aT�'�lB.�/��B�ꐿ��=Dž/}4EJx��%f����,�@2߶���6�f�����ll�������ϙ��`�j��<8��)���yf��%E�%�_�����	X�P/f�g3�VGMŪ���P<���f���^HY+m�Y��Y�{sG��g�f�f6�U�5�����7�t��n�
���mNz$O��}�=o;U�
Ӂv�s?�]N
�+�i{u����%`u!S��p񆷍?�
5�]]������E��qR��)lUt������#E󋟽�]����r;���}��=דҹ׈g}�SK���=�˫w����y�-��]��v�=k
�e��xa��$Ȯ,��Mϴփ����_��Ak��Ak����0ۃ�LJW�g�LQ�rLɒѥ=Lj&:�gdL*��u�
���fOۃ�l{�ڎ)������[Ͼ[�4JF���f=h��8�Ojp���^��ζ�9��zt���y�+w̕�ck��l}>u,��Z��A�Ek6�Ǎ�g/Z[gۋ�p{�Ž^�Ah���EZc�Ƨ�Zm�F�֒�w�Sǰ�=n4>y��:[/Zc��Ak���
V��ϗ�=]��ѧZj�Ak-���ڧ­?.$>{���Ak��Zkr�[��Γ`S��7۫��G`=h=JԾ�>��q��ك����5G��f�oZk��qx����V

l/��Ak-���ԁw��ك����5G��f�?��hfhh�*�W�xRPd����{֣	�������޳Foe�ZG����R,�_�r���Գ�36PKF�>���֒�6>`\<9}��ٓ����5Gܞ������-q<<�'&X`��2�㡙�Z���{�
����g�Y[o�{�q{�Z��?��-�8N�:&�:_w�&�:?�>n,>{�Z��a6���hx�#	��|��E�9(�N�z�(�ր��cC����񜵎X�笥�޷�a;j6�Z��M�������w�΅�gZ����-����Z�����Ҝ��g�O3��{!���q`Q���ގ�=��o/Z����_{
ک/�8Fb��5J�k�b����/Z�m�_����5u�_��Bٷ�s���p")���,ǒ��?V�+ph��_��
h����y@�/y)�<����/3��.u%3�F��eF@ME�5�
O�DA!���S�ͦt���sz�fJ�^5��Zł��Z��q��0h�6��|J���n��j��YE.��X�,���{�4�d|���jo�0�'ϛ��	��<��Ltq29�)�o*���H�P���̪c�?/1��~J�I�!����KN�3��Oӿ�4�Ǐ�S���z�|�J^��Z�65Y<5^���X;i�	96�j*E�ű��υ�����M�XA��(#��(h�쒰���V$5iQ�)A�n�����~�k��%�/Vq�-��֘�WJ@�-�12�P��H&��BV�5Dav蜒r<��U�⡂����Ml�p��FF��)-�`z�Sn�N�u��ŷ�h�n�d�O�~��܇T�>6h��j�y�Њ[t�2����wH��zqy��CkH~h05z�T �ɡ5J34���+,`1�������܇����ZdB��*b����L�X�K��E�SlP�shD���B���v�*�Ђ��^�+�A�U>�-��h4����ϡ����Ƭ��Z�3�X�;�DW���
h�CCC~ZhΐSA0����|�m���g살@hǩ!Ț�e�-�5���k�H��FJ0Z��]t=�!n7���jL5S;�aU-�}v�M-6��C�Я�kЕ�КD#�-�3ED��c�3�'QV���1"(�	���e�oMQօ�YPx���)R�
�h����4!�~VV�2T�<�-VK8�d����$���6��dD43�x��3�q��%uS��a��W畇��)8����V�l^%����m�y�l�t6��͓5lS �+3�s[�����QNI��V�*35�¬�L�BZ�
jܰ�j*�\�����
!�j�i��bRl��n�}W�����w^�k�K�Z��O��BB�,I*p��ū�ԧFW/�CêZ�/�ks�Н��i1y6�FI���ZVhA��Scݽ������=v��`�KN�V��`^�C#D/���=L���S���5�-U��@o��b^�����Co�.�B�z5ָ�c��{�v�ynf\j�OW�2z�p�s���B��ɔY�}
��=Z�fX�&r"F7�l��5�3��`-��=��A[w�^�W�k
f��ߣ�u
��kd��jq�`
�|�>�v�j��b$��-v�Gr?�FϮqR,|�p`�[�@)z!�H\b�qd��cG+v��K��PK�6��Õ�5Z��
�+o�5R��kk)�uw/��F�v
S�]-v<��H�q<�&X��JدG���	�_�3���k�I��&W�-���6�N�cڇ
�|A*��<����dz{����ئ�Z�N�@+?�:�-p$������6
^{�+!
�`��F�IAH���[�.�˵l������Q���f�������ߙ��[/Q�j�������VWl��Hyf�g���wl0G������"ݬ�����!�p#��G������iDZ�{l!.r������^�-^7c(Q}W�d�j�
T�UW�1x��i}c�l�3k0��v[؁�%�q1Z�)B�2�N��:]�1��NZҲ���Ə�/~ �6o��
֡7�vo1����1��>+���1�@'��b���k�c��{�u7�Vc�>#�zEf�ScQ�I�)��@ ;5��t����M�FMw���Т�k�3��ݩ�m�Sb
�s�Hjl�E�&Hy�8��{�{�f��5��Fk���b!��k�F��ѓܛ��v���n�9�^��g����(�#=߯��+�8��X#D;�
������(XC������آ�k�����"o�5[�7��'j�q�N�{d�-�w���淌|�(�SP9�k
xF/����&���e��'���Y����ڡ5�\0R�7���.z��&2�@k�6�%̝��F$ZȎ�r'�ܧYw��jUO&A�klQ#��lӐ���=+����rFܬAf���Zn�)긢���2iP3�O��ߥ#.���fRB�.m�K��{��ҶsaM�^}�-{h?f��f*�h�L��d�"ݙ.��I�1�����d�b��54�yZ��[�>�5Ĺ2�xI��n!��O���t
�U'����<��ޔ����X#��	��[,�W�Q2�a�onoQ�(��������U�<�Ɗ�TO��;Z{�0��x"z�?���)鑨����ԠDl���LS.���3�p��-V���jL2N�w�A�-6ՉVaR:���/i�j��H�Be�7�Zsª��'a���ª�0����8�S��L[��1Pʩ��\����5Pʩ�U���E���ɩŕ��Z��i���X�=�g�F��h�Լ�sj��۵DTKv�[e�B��U���T�x��XCx��~͸*��g��,���O*�X��dF������5�J�(��5R��Pc�g+��p+��h�?V��b�=^-���j�j1�u�+��+��e�d���f������z��踔��l��o��L�j������	��5��YE��4D����S�W�Z�ZBr��V��wEfZ�y�g����@�J���惗�_x��Pz�;E?�Kv*��2f�u6);e���N�Mq�S�J$��G�K�~C<�vC����VH3 �4nz�Ժj����	��Z�0��kȊU��h�W1����-�j!���Dm�7]#M~�1q�M�ph����Ԡ��Ⱦ[�{�j��<�O�2!+[��|u�.\�ޢBi}j,�RF�{I~��^I@P|G�uh��V|&���&[h1p�y�J�f���`�{:v�����-;��=��N���7�$$��W�2�����:�ɕ�yPζ�=�'�oh 0��Bx�&oP�5��K�iD݅�ngV��k�3!�Bb�x���C�Y	L��`B�C���ӌq�V����W=y�8�r���~��B�f�4���BTa4��Z����iA�~�Qj�1h��w�h���s���Ӣ�k?��+��!`h!� ��2NS�Z�k-������5n*̱rSq���Z�O.h��;�z�D��Vn�]t��E��b3��8��:QS��B��e�I(�a2\���8B�+�Y�D���F\6�)�.���@�̓f�#;5�Թ�+�PJ"W�ӷb��ܔ��Dnj}�֥�B���M!"�ߖ���6n�+7�:q4!���R0��(�c�`���(7XR*���A�-��Ȃ���x}R���y��Ba���!��C���:-��85D����cUFa�0�r~hF�����XP6M�#�Ȕ�F�Yh4�]CDOz�B��=_
���
5����Z��Q���x��nά�Ek��m�}�9>�'��s���ql�ݧ��u�؉AݟѦ�8-�Ŝ�C���W�e��U�<�I�_I�j����z������c
cNHgcN�Eײ#hġK���(ԪY������*a��`
S��Z�k�LU��˵Ȅ����Ko�����n-E�W�4�:=ɭz�����OX���ؙ�k�v��^q�KZ(K5"}-}c�b�����ʿ8*�(�AJ��qT�!I/"i�7p��N�up��[8[m5&CFw�L��PY
��8=�:��D�1�c#0T��L�^c��6zŁ1�*T��Ut�:�宯T����bT�44�X�+�U؃��u3wiBH��
��e��v���'\�1i�Ŀ�"��N�7�q5�=R�T��R٥B��鋡*�*?�������<*��;1Tt�7e�����2zrS�6���$��JW���s��	<\��K�'5W=��
���b
��
��X�-���#Ԑ���� ���� �PC�'�Ȉ�B�Q�<S�)l���ZЯ�k,J`��G��=6ȝL�ыw�7������
Nwޭ��rG�QS�rS�	A�Zl
Ĥ[	��	؞�y?��G��z����J�h����Bz��[�GZ9��Fq��?��׼]����=�r�Xcq�O��_'lT��oƑ��Z��M��S��s޲�!Y��kmd�
�1��2�HFw���B��0������i!\T|�pQq��ZLr��0is��o����Yc�k4Mv�Ŧ��j<�R����D��D�H3x�ȴ�[�ܮ�9\��xl��Em\�i��}�\���Ey�:�Vf
碌.�����U0&��3Q�����c���7��X�y(���x��ŸNMw�
-�����i�c����_x�L'���7��������m�K�G���:ez�x��E~�H��.9d�-28�ƶ4[�rL����/�x6�1L��˳<JK�1�����$^������� Sn�MY"�MزTaWl�ځ�S���^����h^\�w$��N�Z:u�~��M�hȁz6�2//��q��ݩ���	�9�qOZ�/��T���s�ա��Y�W8�U~��
D�&�I�}�*����R���M���+p�oz�tf0G�RB0�aG$R�[�~ٛ:O�ROp�x!G���	Z�kYLN'z�ĩo��'zDr,�z5X�W�0GP"���9Z(io_��ȓ!]��tF��R�^�@
�]��.B�eQ	k+G��	Xu�T^��ݙ�H�Iϱ�)\�6�
^�2�D���9�̯��	;�z|*R
ĕ
�vy�th"�����]��p؄S���dzW�	�A��a�6̝����4\�Y�~�ԩ�d�T!$��قVN�-4�/Ȕ.	!(7m�-�H��?�VR��D˾CCP�z:
��6�i!�š����[Hޮ[����B�����/ְ�Ъ_N#�P	�Ll�	��E�w�I��U`����,��"�R�j����ś�[�D��� �vу�i�hLg��PI��{�Tz*y��~���ޟ!0-�{&� {h��Zj5�0�Cu�$�a�Lz����F.�j�#\;�-��k5̴Mz�M��f��HkZ��@�9b�M�wx�ʞW�<���(fq$kF�Ia�hZ��#�΢&(��F��{�L
J%�8�H�{_d�9������w�&"���lp�s������UX��E���`�{\%ue��m�Jk�RRX���
.�pZH�C���
�M���:V�TZ����|l�^��Vr�t�[�RR\���t���-Z��l�<�r-��L��B���2���Ȏ|m+�������x*$=Zlj��Ǭ��6Y�[�zz�)$	Y���(U��De��B��L�1+�(2�f�ʚ&����
�z�R�;�؉�Pbྙ	Z�%˦2"C�E�ĸ`)H���L&S��?2
�aQ.���bĆ&����N��N�H@*�B���3���C�=��u���L@j`�g6�{X	�o
*��[i�<�G�:�eB$ڃ��|�!|PO�,2�I��yl�5���Kl��9|��0"J�n�I7�GYd]�Bψ=�����6D�9�ѥ6��]�jk��B�:�RC�\�c����f�6V����T<`uw
�S)_P����yA�M�y�Ǭq�/:��6�@_�E(
7y��hZ���+�ĤM��	I���4�O̅��/�D�ad9h��xM�F��q!���'��F�m���
���E��y���:�� +�Q{�3�a�	�h�����A�Q�8M�ia*$�A��TB��k����4�\�Ao����+;B�F�V�a�`NSkZ�I�j�y�C8��E%ҟհxm��Z�x�6��<�H�)4O
��N'��O�D0���3+n�؂���]�׌��}'�F�i�y�4�Zl06�u���.���.<G���`5ں��^#�h�^�q���kl5=_|f!l��׊��T\q�%�A����9i^���Z!��0�
;0z�	-��=���W�9�7i'�C��SA7�����S{
O��t�N��k0���F��ձ׍&��O�^�"���ʲ"�xXw�r?!z��HHjT�CN��<-Һ���uފV���R\d���9p�+�/��%��aRNaU�(Z���k�W�'\�����k�������5$�+�r��-D��5DGv��n�\|��n7�V�Z+Q�*ŸV�@�
�Z�8-�[��C�&oIfA�e��z�F�Dό>e1t�}P����6�Ao�y�%�&��2�jv��f�h�Q�H!S�@$�������ԝ����3U�e�h�D]��hK��Q�]q`�xC�DzbUMN�sQ���Sm�P��)o�bΜ&cd�����a�U������t�׻��J��
�D4�
��hh�06�'X�9)-�s�=��6�Lu���Y ���$�K(�\�҆�>P�3��s��X��2LC���z6*|�NnO��o�u�7��qN���@���3tܛ�
�t�ͩV�OgR%�:0��Ž汙g��
q���ʃ��
άe%v�jWbL�����Z��	��R�J]�e?�6_)w�֧\�
�)�4:����<r��'�Et>�*
OG�.��&�J�8��r��:B��>H�r��29��
��@���!�R��l��V<&ʛ��S�+��X"�R��[�Ti�2
0�\T���”��G�rYN�s�@X[����&S�'X�U�RuJ�y�H5
�u�ݜ&h�jb��&�\h@`������4��j�_�Z�I9�52%�"uhA�=�!���e��-j���eC�vzP�����T��v�i��=V�~UF'�	�^O�|�J��02&�\5"!��W��F?c���h	��W�Yyw���B;=(){�Q`ǰ�*�p��AG�L�@ߡ	yZ�t�!�i��&��G�آt�jF�;�����L�x��=rU��^�Rd�v���>�U�xIF��թd:y��㢃���pJ���9����b��*����㱨D���mߝl#.!J59֨��q1��3j���k�k�KD����.�#�	� w�{V�^G�b�-d�N$r�N���)Մ5!>�s��tV_,�e���88����@��z�!��"-���B�PC�{b�)�~W�)+&�x��j!b�ݢ^�)&�Hg�μE��-
�Y-���b��bުݮ�J�١Dթ*�L�j<uϬ^�&��z6��9�TK��<�/jRx��m�ǖ$�@�2�-[4��a�����Y����2�t�t�]t[RL��F�k��8�j��),P���b�5q�6:�-f�IįQ�C�}!^3@g�Fknd����V�{^��u$�T��,���՝���̙qB�E�/l����*w��v(�'jrۤ��kbH��,5�M��i�@�
�I8s�N���&��em�0�:��� 5S�QWyز*X�b�2<��	[���H��p=A������K�F���07x��Ee��l��p[��Maw��i�a�_��D�B����'��v�!g�x������j�&3�fd��o�C��Ԯ�)��33�j^P�sU&t0���qo�R?�c��+p�fb����7�o�@�(9�_�d��c�\��~O�/�}���%_���׳���Q��{�|�58|��|��7_���G��7��7_���������Ź.�F���z��>�#��Z���G���o��y|��q43�ҌN�`�H�3Ԁ������t[g<�t}�r�W�u�I��yg��bVg.����+��l��{�S_δmf�W�0�=L_6���s�l��ݩ׆񝵸G$[�M�k��lh���y�ů�}�����dQ��q���/�󅫏�$.Oq�
W_�����X#ůT��^#+\��j����sw}�p�9|�f���ٓ�qAX��C���O�����_�UG�d�K�5R��է�3ʽ�n:~�X����2vy�r-J�/\�;�t�5�=��8����né


���5+Ɖ��)jb�h-�1M԰��41"-�xw9�B�)�$үj\-^�C.�����5��Bx�X#?� �W�!���Xf� -nw�y�z�!����`�!U��t�_���`��|��w;�PդίZ��گ\[3O���I�nҒ�)�_`��'?Xr�8*wa���\y���A?w���ע�dF,�K	�yb,0t�
Z;�ɝ�gԫ_���L���לW[�0�L0Vl`�S1���j�cȐ
�5M򑇅��5�A#�}5 u�YY�/�tK�=��{4өg���e�@i�L#�`2�ke�������B��� lyHo@���?�4��.�M�Wt\��%�b	ё1^�>bi�2��[�կ�@>��?�h��y����F7K	x�kw�}��҂%���-8t�3�>M.�.Ǣ�*r
�՚)_�p�֍��LGB�ҡH�\�Ä�i[d��h�e�-d��L=32��a�oͨD���p�<�IF$�V�'��m�CA"2�x���ᐗ*8�݉��vIV��O9������ooI��[��ʼ0�TO��EFqq"��T�T4������O�NwsZt�<�f'�'�N�ZX�C�ѨX6���ӭ�e�t��	o��k�8a��	�Ea6	���T�o�O(.N�0�:�3��ʼn���NZ剫E��d5ҙ�
y�]ߑ�w�J��kh�W�D��f��q���8�Kĉ�Й�����:M��Ӣ1��ը��,�G��c~E��ƭ0|��8T2��S�5���L�'�щ!X��H����*dqZ,3Y�tm�(�u+E߱q2��~O�.��S��q��bE�r�(J�t�xD��h�U�ׄ�D��wT��d����0z���ż���c��|U�h��r�m!K�E�G�נ�id>�R�8���SX�"P����s�[`-P�ױ��e9<_��"]�u��Hqح
�6"-�Z<�*p�~<Ғ��wL1��|�@Q�^-�Ο5dnc���;"���?8��Q)M�*Jd�
U��
?�l��^=������
N��Y���6�C]����5�T-�*6��Ij�	�jͽLO&� =l�7��z����9��i�P������|��a!��ZBt��]�פ~��\���vBڡ��@
��}ft�7tQك�8}�w�A����ӷ��
ĦL�3I��i^LF�7�H�\��d��@���9��d�bN:t{B��$����{��Ra�
'�B���w~/��*�@��j��^��T�f�ZUCe店H�l����M9
�+\���-f]ְa$����(� �p3�����`��L9�/�"�03m����:'bi���7�)JA�h�R��!.}��A^A/������76<��Gb?L�?/t�d7Uf|��BL�ό��Q��S�?�|�6��q�Vݙt�o<:Icѽ�q����ȟ[ug��q�$�9��Λ�c�I���k������d{Tw���LI�ɭz�d3�?�tRΏ[mg���љq��8�7V\�É��a��:�\�Q6.��8�ʃ�Qɖ����g@�8������(��}_=��]�n�!���1��-��P��[5�G�X�Z�}�΍q6$Û�n�w[�He�Cma��
g�@�E�Ϫ(T��ˑ�xS�M�L����)���d�Ôh
�Hc���������[ϸ+��n��hSFv�*d�g�Q|��q������D
:�<�0)C����_2m�Ѳ1�}���	���i3�YM�W��\ˬ����8j�A��^X\�H�Y��8X���Y]|k��cz ��tU�=��O ����KT�_ĀC�W�U}��)�/�X e��0�q�ha�{��4F�̯��;Гq�G˾���'%��5T��xg��c���#Y6�ӱ�2��N&���	4��P-����]1����u�E\,~LE1���V��@�+��2Ԣ	(�؋�@�N�UhI�}d����kv���B��'�q�K�#���H�-�olT0G��+�A��@k�#��#��8�k�s�9x�p�h
w$0���k-��~Z�N��@��y5���%� 7T�Tα�E�~���#��e�W�r�G�EM�����=���We6j����Pz�5�PM@���!Qz��-f��1�5��w\
�=��x�N���ne=�+ڌ����l�,�5�9�A�٢��TX��	�=�
��E_�P6��Jˆ�X#]�SY�t�%eFr����TZ4;w��\(@�t����*aI�t%�1z�������W�瓌I
�J�m��tw^�-?4���k�w����d������p��yB:Og��"��k�k�
�ropaT�q+�J<��U)�W«�3�«D�]Uů%�+�O-"}\¬�kt��[�j!s9ԐK���Ez��5�UC���x��+���%���0k�!gR��r���kR��X�ի���鱭�n.Xj$\���L���d���Srz2�G0+�g���5�T�Q�Nc����y�u��Pa}�����4:��WC���q�S:tp
81+��Ю:8u���/�sR'��I��j��Bե�e�Ǎ�V���Qך\)U���2����'Ƅ
ڮaR�Og'�U��G�+}XM��G��<@��8�J��6�H�[\2̰/��ް#�栓�l��W�مh1��$�����VTS���*�w�2(d��O�F�Q/��!&�����T�!�2�*w.<�_R���������
a��׊�(J`�o��`��1�K�馪�b(��,�
�61���R��߬���a��w�Aj�@oje�1�T�Oz^�b�#n�Ыb[m��t���t�Y���^m�7��#c:SdC���2�����?4c�@}2��u�	�^2��ŇW��[{�4*Dpw)M�1���`U3]��^΅�NC}�
��JYC���ږUߍ�Sa!r\i���,�a�ὔ��Z�>��4�����d$.�]��HD�p��'�G�f����I�XA�bD�=׆�!K������G��a��B��
�L�ȼ�>&�C�U�$p��4�]�W���$�2m�9J�E6�l�sBu���[q�wxX�w:TRy�©��cx��\�Y�kq���U�:��^/6~�lm��Yp;N+5<�nsڑع ���UƱ�Rm8U��-���'� �bZ��͕J:�+'Yu�2M��v-e�+~���3&e�&F����~�.wC��l�s*��y��:[�R��m�m��F��vͷ�I�eC�]��	6�4nSu���i���fa)D3�A���>����8���Vb-��Dkk	������1��>�&�ql& ������f���d�Z
�Q��z�֟-ܝ�j���y�߯��A��tPj�zPj��Qj�h��q�J�[�j$���ɋJ
�!B�E���U�_���dwY�
zvO���{l߮.�J#��4"Y�r�F#�]��ڜeO�<��>cD:�z�-Ҹ�9]T���(3ʊg��+��cT��c�t���?�)3�jJ�z���-F��ڌH�ǰ�2#v��k�����������@�;IeFc/ʌ�XD�Q�m�ڌX���(������u���{*���������L�EF^����{mQ=��o
T��\$����kT�F �-f�Z�}?}���"=���X��HR����5�[�!.K9��\��ŘW�(/FXq[�<���u-�XC�g�t��;UfX��[#�1��.��hӴ�:WSW��s)ë[Jlo&��X&E.	׼Y^V�d�e	�-/̝*�K�~b�S4-�{��g����ܠ2 ��gc��e�(GU�@�b�`��E�vD�E���q����
a�*#�mO��0�%%�A"�6�fJb�Fô���# ��[���pcQc�o��+��V-ԗl|���`��kR�~F�XD����_P��~d�f*�UFP0�g��.�:�N�
nD��s[&�
_[��(jLm��S~8WS�(d�����9�L��ERm�v-�7ݍ&<��4O�}���4ZEga�D���L�C+*G
`�h�
�E6�*|F���-,�&�j����Z?�-�G֨
�I7���]��>�ʀ+����Y��ac<�,�8����i1)����I/IO����@��4�
��@������ߠO����9j_�H7�(ԯ1xe&�4��c��<�(���̂k��:�8�4ы>�
y��E�7��+��%�
���-]4O��J��ܨ!��	�ݤ�F�c�-�~kɈ�LTZ�YX�Pi��b�b�7W
��I}H��;,lȝ���/�o��"jV��3�o0Y˄c�D2���!&��x��3p��#�F�2~���-��$��9[˫b)o?�*~R�`<��^���[�kƧ�����`�ݚbLb�S#/��AXkp��ME��:��mn6=�%�RU��^T�0�΂])~��M��;T#rYV\�L���ћg�*$軀�E�L�#��w��t+T��

���
����Ծ����Z�a4T��d��6p?�(��5�ݴ�;�b�, �M��b�\�z��2����B��������5�e�,���o��t�����)��~�r��=Ȟ�$�<�V�\�h@�G���92�������n�>$�c��B).s
&Q<6�o�A~Oh߅I
���m����
t/t�t~/�i�Lq�	ۙ���Y���V2�~�;��
���if�X�vh�,6;a�G�oƜ.�Eh	�I�;���Y�����2��NAɘӊݷA�3�
3�xZ��JQ"�;'&�
�y�^3q0{��б���+.;��EO��� �u@��bGa�Gl�+�M�Q��ӐD���g=�'�Z��P�_�ѩ@��#�q9�=�:����|��j3̴�cۼrz���95j�YHڡS�X��'?u]-l�mrI�do[���jK>9����7�ӎ��s%.c&&���8��=��H�z>#��B��y\);l^�ٲht�E�����D�SY��r�b��
rdH+{�i t��	��L�e`�7����@��a�H#X�&�/C�kC��љQ1ute�)t,�Ux�^��h����O�����d�d�Z	
6��F:�8��FPH*�8fW��r&ӗh��ѱ�7SoK4Ĥ� �Q<Vvhf��!�i��'L��ڭ���"Ÿ̅�t�f@�H�`��ˢ���� �Sצ�#��sBP�l��O�)S�t�ڙ�c�&AL���;��d�꜊E�Ua�=���U������)��4h2D�d���q����B7[�W�� ]c����%p��L�8P�����O��A�`����B7���OF�d��I.��}B��<kx�Ja���V�'��s���&hNxb���tM�C=�Fk��#�Ӆ���>�}^�<L���1��F�y7�
G�v�[%&2���|����
d��_6�_�������1��M�s�l�<_k"k��"Q/5����g�x�-8�}��p%l,�8R�e���D
8�Uq�Ǭ0Xd�\��E�-��Ȍ>.���O�"ˑ�?o�ya�}\����5��4,�|�8.�Ӱ����<Pd�3��4(�{lK}/�Br��$Y��;8�NC"�OHӍ� �ůHǰ9	E6�jo+�r����
ֱ�}��&����Ss[|��Fz��r:Y���)���=���5$w߈
��i3����[�-j�kN-n�
5���(9vڌn�B�n���"�VmN�J1�RR'�kd��6b�J��n���EVb��<J����Pd5�S
�Pdw�Q�G�C�nt�����V�w�u�9js�v����t��-v�v7�E-n�e_����^�z�mIw/�O�ѭ]52<�NW/���#U7���$Fl!v�p�o�:Y��U;�sR�ne��?Z�n���pzI�n�t����PCr���̻E��&�Q������j�k5$�I��zo�j!���C�q��J�3o�ZX2\�юO1iω�^E����C<�;�k���D�P�*4Ye�sn�[�毡��BL�la���m����N5�"W׌q�d��T��AYx"�B�K��y%�G��v0��<����!�M�Й�����S�#�Ȥ -[_?y0:���WN�Q;�5Z�-6yB8�Q�lF���������n��ũ����x2l�!mo��l��S��	ԍt3�$������3�mF�hC<-l?C=5�=�^6���xG̩�q��@3��f+Z�!/w�gQa�	�,.��dS���ސy:�ͬ���Cn�I3�쉅�b$@Q�˴�Ĕ���1�//��&��G�ADr��vs]�z�C'sQNb��d�$�v�ɹ��7�F�p5Fgh�z�!�3}���bҹn�<0��^�-Oz��N����Y�3��4{-";�FՐ�!YAM��C�mڱh<oH�&�*�s�bJѶ`=��6H�G$�R0��E�DHѺ���$��A�?�O��(���Lu�(��N(�
-��$�*�n��lj&M���ӵx���YT�8�65�L,[&#���`��>��EkA��X*�6���P�D
�0o.�٨㗩3�:�B��EJ�������J�eW��(D
�a2_Nq�a�Łʣ9���=�#��Hr��xj�]��Z_=)g#���Sݡ���x�)�of1ȡSq��k�5�T^ti2�d��<Q;r��b�8E�jh]�s�*h2�� P<��tHv%�y�Ѣ3gB�i�W.��(8���l<�ku��Đ3�An��RC5yf�qEg~ӯ�a���W�>�h��B�!x�w�4,h;5sk,��D���k�ݤe�u3���<?G��[�¤���������{`9�LU�	 ?Q�ۀ��Sc2t�+�}D�M.�A���Ϗd6���y��xg"���f���?��Gz�̎;Tu��2��ٍ7M�����6g��
��[2��'����(�!ы��<K�O��;!�{"[�U�
]>�����>����S�T
�	�:cB�A�K��-|]TI��9���lJ�Ŋ5������Mg�Ћ�񦚼�\a�)��X3��fl��7$��A�ʐ��Վl�i4��f8�K���t���$/��ɿA������NԸe1&�1��R�3u�P�RY��m&��)�C�f̜��9/�Ēװ|�S��k?���M;����E�c%���9nzܐ��z��}>�	W�U��a��c�җ�J�He�k�Fj�H
�T�6R�#�,_#��)Oϧ�x,�����hFf��뽔�&[�,c�h
�}���Z��,4����iЉ��tN�)ZǾ�]��Ca���:M�B���xx6,2����+F�ޜV]Y$h�U�A�Q���{��?q��ҙ���m�X�ږ��s-������Լvw��R���S����ѱ�埜ϯ*_�����UxGf��V[�U�W�6_��N�w���~o�8�6{��x�8W��b��Jz��UÞ�I�E�÷�=,�F#v�k�}�x����}�VO/邝D��t���b3ТU��ۡ�Ђa�Ȧ�5�+���j���/�60�@H��?�Sglj^A�,- 
�6y,z����rKKp��\	p�c�j7�)h"6Knf�1!&+�3����<s ة��Ya�<=�eӁ	�8��UekV����ڹ�͔5�6o���y�[+bXI��,�6/^H�G��S�$b���x��~���zCO�L�r�=��t"�:�|�߆q�~��>�uY�S��	�_#�7�}M�^_4D������C��rء	.���-���?���l_��mֺ:r����Y�����G�j7�>%�b��6��?��'w��.��|-y�ZB��׊�V�9 G�p������c���=��8�c/n6�~���z��%��W�$HF�T�9A�U�]+�З�u�l��3��ډ��7F� >M���
T}��(�����	bzw�
wE���J>�5)�d�&n�Z ��^��z|&9���
����JOY�
%�?H��R��J���hb����^�lwt�O�,7M�f%(������ҝt����1C	n�6���ꦱ���W�D�F~<M�x�Q��q(��a�X�՚{IǑ�G���#-���u�H���x[ӟ�~��o���Ӵ�����k�(A�D��Z�.�O������X^"]I~y�ٞ�H�F[�3�=)Ϟ�]T;�y�����a���8�%G��Ϸ��=�Z���i6������p��f���˹1��8�y��4;mg��Dt,Qh�Ȑ�q�լêF�RI|��ɟv'�{α;������f�����@���`TZu���d1�P����-�,��+����'�~��]�\�OZ��F����φ�s���q��A��_^�a�N��]C�l()��¡̴	pE��9�ҁ��)��b*�����W{]��)o'��s�`rCh���5kL�3W!����J&t�
WZ7�������D'B�=���c��c��=_�9_�1]������i�<�a���a���93'!z5���!��N���0f��Aݎ_ùm8��c8�˟æ�)q��A�g��m���y�R��2�`#S�?�M	�c�N=o-gM�=C'��I�t��d*�����`;Њ=��r�
vG	M�)��޴_��
��*سf�Ϝ�b�=l��c�Ǘ�ޏ�Ώ	�_&|?&|߄cg�Ϝ��!�P����j
*Ld>a��C�	^r��u!՞`�.:�cc%˓��Z�8����1Q7���[{>��ۗ+~�W�ڏ+~~���㊟�7��N,U]�4�f�;�eMB�î�C��mD��ƒ��{�����uՃ�����2c�B(���c=q��6��u_��1�����з�з/C�C���?NQ�1%N����f�*��5g&xZetr�˭�xRu;f�-���=His-"c �����Y�<�U�n
8}��)�9�s�Ͼ��e�ۼG~>�~����%��'�;t���\�^m��\c,�]��Hg�-$}�<ϴ�r�T�:��_/���qa��a�2W|��}v�+߆~rSk��O��'�g�j�˴c�OG��3�Xxv������`5_
&Cu����o�w���q��S��k��c��=�˸�Ǹ?9U��~���u���`��N�n���w&��t�9Xe���*��/v��ͥpx��R�[�^
!o�/I?]E������\b����9�9��/s�sP����ڷ`�~�(��~<��T[���4�D����ޒ�5�M�-��x偃�d�d�ARhU��ƌ"wh�+������.�@�6�_�02��B��	ֵF� ��@d	'D/���eL,`�ݜ�6�#�؀/��'/��វ���	�s��ٌ�ױ_�����y�R%dc�Lz��X�JIu �96?;�xɏ��߃|�S_勺���/�	p���[ʮ�SKwI9���zfP3�D�G� ������
��HU��8��	L59z���I��=���T����K�X6�����M�cغ�g2�Z�v6pZ�e���PN)i��tv�؛���\3���3���<��W���H�k<@��+2�D�^Չ�c���;�5֛C��|0x��B���R��$f�~�}���~�ľc�9��;K�~��;���)����P X���Jr�m���
�ܱ}v����o8�K����~"�ؠ�
��������5������k�r���M��Li�p�]�ӆ�qqwf�Г*Wf�B���Ƚ���&[F��nX�x�{N��������:1o}�)�N���6�:?2Yt��Z�H���Y8r&���4ml@_��nh+�#���9]�e�T����I��X�IX��&z}�U�3�=�gU�����$q�u��\�6`vp%�j�D�����³,��Dm��ig�reP�D���d�Ǥ�Y��o�1�ᓂF������ؙ<�t�f�ĀP�4~9��&�v��e��|`�(�
[�^=9�auI@JpPd
�g��-g�'��zZ����]f�{�d�(j�ZwsO7i˰�
�[�.:զ�a�k��5-�v������X���c� q� �#$��9�=��"��^��-Zw�b�ˎ�3Y,����I{l�`��y�PK�i9[��B�\�¶�,L�Mԝ�v��4yJU�-4'�(LP&9AW�����IU��&�^�taj��hpi��?ʤ�-3g�t��f3G�N%�_#,�(�%�I�<ܨ��wս�aT}g�ؿ���{7�185�Zt�$����ēg��o�l�f�F~�yL�qx_�������NH��l�LG6�
��t��I���Hn $�R��8�D�/��v����a#l���T��*#1����ݒ��W��37�]c�ڴ�����}פ
��&�40���A
�r�Ry����В�gY�kf���Hb�7�*���/d�c79<*��I_�j30m�1�0�N�-e�́)fl�m?)uR�P��6(|@�*�S��AW-��X��F��%�j2�`��D�v�v̅|�	��+(��f�9�4Z�=(=�K\��]�@=g2�� K6�3�&rU� �D����L�K	
/ũ�`�c��^�Z�}7����1h��0��v�\O�\~���֦3E���I�	q[�#��<K1�y��0�.u3�n攩w�oC��
�l�y�D�AI��1Zx-��s9W4�Q/<a��2���E�N����Y=O�8�';��^��q#�hd�Z�$�SH	(�H-d2%�+
��vL�Q�kPU��a�MM5��4:|���t�?�n�45�7y�L�0��2�xfv��d7e'�Ac�\XRk~rk�F����H�2�N�^�T̉��T�릈��@���!G*U�ָDڽ��m@6���ִ�`�7�4]v��'�,�^O��L��	�(;N`�c_	
\u�⦮֣I�������Ak&L�JW�n��fu"�(��MrsYb��Fи��[�b�>�q�K�,r��o���l��\�l�&3.��3=v2}�x'�#
�,S"P��g!�X6R��M\����B'_F�Iw��7/r"	oXU$Z�N�Z��"N"����5h���6���k����)ǹ-���=��k#{��R�4e:�J��K�tJ?i��wr�ŝaW͛'�#^u��9��/V��j��D�@lc��q��ș��rr�"'�[N^�!(���<���Jߧ��T�I�o*�.Fv�93aw׃����eО�a_0��Y�L<d%)M�X�!�:h���$$���b����-�A�}.���]������o-�c'�Mi�==�^�=��ε��l�b����e��s��Q[�	5J��k�4�RIv�y:=�=8��/�0���c1��brO[M����7��M(��j�Q���<d<�#���@��d&��H�'Gđͫb6rw�bY�}i-sO��a��<�������2����(�F�'�6N&y²T��d%��3���@W[�<��^�L�Œ�;E��c������r�1w�����a}p�c��2��.nTze����Q�g
�害����iu�z2~	���B�v��U}�IIj���K+s	(r��i�U��	(t��PZje�U�H����B���&h}��~R�VX%0�&�+���s��(0ߴL�c���L5<#�� G+Y͊���P��u���	,����Az���@Q���q�}}�)�#A����4}V�@~#��쌪�l��gΎq�3E�
x��(�Tj=��IHfG1qEOJK�kR�ޤ�k�g�xa�����t�cY#������j�`���-Z\}0͵�8��Y����68�`��!���8�t��K�l����4�8��ta2nP��� \�]tp��J���}��9����~_��
3��@6(��I���ɞ�\5�L�����}/e���tկ�7���x,*�8��1��Et�
���Q_����m�M�{��v[�$�W���{d��~�y��}��Pdꐑ�%�* ֟U���W�
ǰ^��|��|�vE�Q(+�Q�3ꦷ��3���h,���m|���3R���h��ܻL���xhf^.0��#���<vSrI
u���]��9�fɿ���[�=eƞUp��RY�ҽ��u:gD�V35%����}�f����}Wp^�85i���ӂ�ZvTSOI���W���a��;�p�!�����=#����ꂖb���,}r�P�'0#:t�f� �_n�r��҇�|���v��;W
�ۄ�
N�*�)?��W2	�ru X<vp<��]�%�}~*Ѡ�D�d���:�ܤ�r���Ho�+;#�C)�%�G��oBZ-�h�Q��!�Ш����&��D+�Yw��NXh�e��4��Җ�IupC�����~�5�p�5�/>�厅�+��ܰ�j�&�=zf�*i9�#��f��їE�kA���P����vZoU�j@�Ӎ[�O��[��{q�����щ�
�a�@Z�fۇC�P�G��ѯz��g/������RdIv
,�jO[x�8�W�_E���c�}��ס����	d_I�7��e<1��'i���f���#��Ǘw��?�ݿ��0i�&
XX"��:
*�{�w5��D�W��30��y�_n�^;����{��u��
Wo45�8|��:F��f�tt�g�AZ�\�x���a����-�ٛ�p���W6�d0��^��6�o����tow/�>��iM{x�h��ׁ�[;颀vk�n��om¾9�-�$�vN-�cnh��i�?/,`��:�g0z|�$���D�R�#o��mo�H}� 
?zq#&����}z��0����PlE`�+��&�-E�r���g�9�TZ ����U�8O��{うUH����Ig��7�G������훙%��n��ʹ!Ƨ��P?l&;����r�5�i�D��[wqJ���G����
,x?������qD��;N�a�E��;Ʒ�
~a��Z��-�7�5��7Sh&6я��&�K���x�f����7ڳ��/ڀ�=%�"���z�,h���36K���&އ~��E��>�$���y��ɇ:����kh�l��f�dn}{���R�����Ə�敪�[�_ϸzXFMmv|F��׏S��{�=���V�]O���|�t���� m4G�y�QK�9[��u�:�j8���ُ�FVݚ�i�^r��?T�4�:��Rp۬�g��W�b��JzS�~<����><��`��O�a�
z�c���=�{1��t�����~�F�L��><�A7�k�v���F��G-�P��`=�3����}���i�?�o��q����.�_��<��L�M�ze��֋�=>�N��_��U�����1ԉ�Õ�]u'M�I�9C�u��j��������p�v44����-(�3W{�"S8P�J��֋/������}��=�3/}E�CL����f-T��
Z��W/����><_�����.�����U��a07h�o��OT���g/~>���y�	�X�hU�;Yh�I�]���`�T��3;
�Iƙ8���1޾j��߰.�y"U1�É�vC��SJ�W��a�[q�����E�
}=l�f��{K�}��(Ю�qmRkxj����*G��=����-4u�[{b{�S7���B	�F�a�,���������z{}b���ɞ.5���L`v�,��c��*�"��n��tW��?y��%O������7_��z��*�;_�Ȼ3�q%�F����&u�#ʳ�Q��gU�7�tx�{
�lC�EF}��a���C�&9dVs|�;�WZ7��&��ѭ&?��{�'YqZ̶6�y�r�`��O�ڂ���U�c�џGJ��
>{0nsRv�t����m"�$�Ȏ����N�����j��><_GAA7�J�&�cY2���ʔ�Zi+��{R
mj��K`��~DE���i6Z���U�%�?�L&G܃Y;�9�F�J>P2C8ԟG��TχQ�/��P) �zbY�鎉��^WE���bF���{�yw#���0*��2Q�V/���k\G�뙔�0��2b`��h%z�m,g�����)����;
gY��O0y)aa��l8^��=��}Ǚh�oY��ﺵ���e`��5pu��4�zhrd;<�X��ׄk����[��h�K�ז���%�;��,<��4Y��{��gP�=;���
���|!�ɋK#O���Sj�CW�%��{���K�����D_�W|֧���b�)5��n�
:���L�(�:؏���M���~v��0��/�xU(�O�z�I:�>`6J�.�[�g^tz
�{-?�x��
��m�>���Y�Qb>|D�^�xd�C7��Z+Q���~�+)3�����&���E�a(���rH�3�M��F�׮�}�x��K祤::��n8�'�J{�
]��ɃH�ӧ�M�я�b������\,�ה�c��@g�ήH��1��|�c��~)��݋ǵ����:}��� IS�;�t�|����.�b�.
Z7�ǫ���N�\�r���mܢO���6�IΛ"�Z+��R �x���8�j<7��YG_:5�p�2gJA��c,H��c�򐕌����ܶ�c1� 	����
2w�o�DF�+i�1��C:�Eq	}ms0���fނ%�r�N�Q�ƅ	
y�$
�@v;#u�c�՛~zEpKީ0�7Щ���<Be%�D� 9����](���P�;�u�EW_��NjӧSZ�d�)�W�,il�}4gmN��Ō�n�υ�ț�z��`0�$mn�U�� �<�P6Vo8%L3��QϨq�	�k��Ǘ�8��y���n�&Z28�@'�Z�PDZ1�MoPl#Ts���؃ǹ_�݁�N�D���U�[�aI�R�v��6u�W��8������ͧ�ч��������9��K*�Mp�]S{�%��g�J�>Ü|z{��b-�i;8�X��(��nU:
,G���eׄ,K�g�4��g�gϳk�x�������;pf�.G�ІƔ��]D@�{��	{�������X>���%����r����e���!�.�,9~=��z�Hs�y��b+���|�>�7��Wg+�D���V��\`�1�[�3tZ�9����V6"1�[�����7~>l�Ж!4)�փ�W��8��Mu�<��cϳc�x�����YЌ���{�醠��ܯ�6ߞ�g��z�������z	��\��w<o�諿�ew�ϯ-�@�Fz��T/���m���w�7��%�����~�N��a�n&�\>W'p;`KSZ�TF�:t��]�^�K�&���H������Q��m]Ͽn��>e^N8�g�9P�3$Zr
�TT�H�q��������x���/%�����l�x�w�@?9Oݴf���v���G?.���i���y_����Ѫ��%)J��HPw�G���iiy�������7��L�1;/ 6�({����]Ԓ��5;nj>�э˃��4޺y���Yye�I��J�4x?���Z�q����x����i�?�o��-7yg��#�W�lw��}U�>j��]�k��������x�������D�J��a�c�2Ft$�\J��9'�9"���8�^��C}����(�d�Ma;�Tחh�Z
��Gi�%��a�H�x�ॿ^���kK�8����D{���JN���^�C-��K��E�}�i�fG�Bã��y�J��("h�خ��!_�ң�cX9
��]cX���_��x��Qrc��7�YЂ�ѣ����@<e�[>�w�}�&�~t�ח�>��;oc�
h=^�B�+��͍�XiK��T��*���3�N��z�è	/�^n���]�6$v�D�<{8Ƴ���Pt���09x{^�j��1���g���\�.�Ggy{����y<����/~���~�^�th�=_�M��w<���k�%�]E�r'p���0+�/�",N�A���Q�w�8�~��G���_��{^P��w6`guVz=M}J��^%�$����b���k	��9�!E��3 ӊ�".魺�R�vR5�(M���^���
KF�֩��[�Yي�W�窮p�����V�P��[hJ<9�
r��ٔ���7�B+�^կ>��!��e�O	�d�$PY�a���QE�PP-ɨQ���C���O�ӆ9Z�W�,����N鴁��sg�
�׾�I�^����T����;�}M�ʪHX�nY��DȱnK:��T�o�I�_��lMd��)�PJJC�|�j��Z��pL�,���nԬ�MrV:�H�5O���P�(?-�3@AE?S}���:$���d�

��b6����|��UwB��ˠb�u�wQ�kf=��"M��v���6~F�@]S��୫�&���f
��.���j-#�oS_��q�� ݼ5���.$`��s���Xw����������a�<@�E�A���Z���cI,��4EW����Ѹ����B�h�VU��פ�y��{>M�g� í.0�#.���`�0�V�dk
j��U���r��.��Z5�ʚ1Z���g=�*�+R��QY
d��vZ�	�S��R����oBv���L��wP5���(ôK�Q_��Еָx�u�M��|��3
����'�N�b���옷�[�5�����% ��S��������'P�8�E�?�tCL��+�=�c��1����[�gO0vn$�+I���ԣ��ި]�CKgN�ue���
q�`�Cѕ1�P]m�����h��kIG��b���%xC}�z4%�,G=Yk�9���
^��tr�n[-OL��"N��(� �u}�w�@�Æ�߰|���K湡P6���m�4�
\O��Q�xV����"���
��$G��,�э�
j���N����'�|�p��X6'���h�h��E�����I�q^㫮���`��,Ǎ9��L�A�U09�JA��Ls�5���ī�NT�bpp%R��_!��\g���MŸ
Jo�;9�WKTUoz�I	�U`��x���"�pr��j�(9/��G5z`}3x�Pe��ߝ,M
yJ'�p4��E/�_�����Z'�\HDd�nǐ��
��8V�|ppe2�{EJ*.����c�Ҧ� @�,ܶyd
[�5����<UI'�'���r{�Cr5�z��$^�/n���?��+��]/H��"��)���1V�.�Up�]t��	Z��Ae�Z��'�U�db����;��F�*�Y�NDkX��s���`G6jhq�hM��V�����z�����x��h�o��N$��.�}LޥD�;ن�ɂ&H&��
��Ѕ�I�WL�B�������"H��k�D_s�Ⱦ�At�ʃ���&��dRR�Q(�xq;���o<�>G��q/��R��G��1g�4m!�h�y���xpWf^0��7�죟1�n��
���B��Yi�*�vYT���&S�7�[Ќ9i�(�|�L�pG0o��2y��*J{T��2�2�r+�q�)l+�M֖����.�:ț\��l�c��հ}����c��q�6ȹ����`��M,��Mu
��h�cø�e���ί��^D�4��t�һ��6si�w�:�QJ��J�
�2.�Zz%���4V�����J:�}pFTWg�r�a\W���n��u-U����;h�o7�DK�F����Rw}/&�;�U�W���~s3w1O�.~^x��v),��mЃ\7냡�O���`��c��˩|����ѳX�P;����8�$��J�����E��6O��U���Y��덲��&t��
�.^17��`P� ���H�3Nۭ��^3�F�
I؄FV:)ѹ���U��GٔF�%U�A�l� .2����kf2����¯���܉�j����Q�@�	b��<:s�f	�O)Q+
|�8'#��J��V��W�4�(����.�u<a�h5�OK��q������� !+奐��
�P�>�C���x�h-��I;a����֜A*�gN�ª�PѢ"9�Z��Ԅh�hE������r�4�Qx�n��1Q�G�0�*�M�*D��Z5���:����ͣ�V5
�Fu�Ve�g,n;���aFlf�>Uȵ��FZ���5&p�c0�~�˿,��: O�gg@2}��m�!���h����wr�f����ϸ���9�yZ��wy�,@���e�2�7������u�?�@�V����ētW6u�ѱ����G����z<+�e�]�%בd��Y�� ���	�z=8>����7MU�GeTg��U"�� �#��ڟ��v�s��X�� �Pq1�b�J)^��fm@�Ӻ���^����)���(܋+����7��{���;t饾ˢ�EY!U���-���	�}�2�Б�I#�6�,��yt��j��E�`]
}�;xY�*���9Gs�IZ7t�I�wP�U4�	��O�f<q�3'Ȥ$ٳ|�Y`�9��Ok�]���M_������:V�)V�!$vѷPp���Nh�yh�ʬ�_�x0N:�����ӻ�n��5�$��j�ś��y�r˹�c�K����$�eÎQ�S[_m��:�~u���9vyǪ}J6-Yx�i�K��-�it/���`�W�~!QL֍��M�t73o9cv�w+m�IKM'#@Q�pL��T��a�,�l��š����,�f벛�(D�"͕���0�������@<V]NKr�+�h�w��Q~h���H���,A����SHh��[W��ʲHm�+�^M�Ec���)�=��$4"���[`9�~ 7YE,�h�T>
���DQ�J�&F�-RƇ��Z/�Su�B�����ó��"(��}ۣ���"D��!˒�
z7�K��IK�i��ڱO���#kj`ک��w�~�ݣ�;���ك�7G�Em\X��F��%�����w�iR��g��ܕ�Ƽٶ�6[�}�ܵ��ɒ�+a�dl|�~��+����$/Un((�F�'��>�D�D�Z�a��#e�6-�]t�'R��X����b����~{�~�<>S�߉_�ڗ�w��!V�\QOW�a�XH觋�-���l��y<͗baT�קF�r�^˕�Ie�K�k��,�ee)�jB(���I'���K�ߚ>Rә�d��E`��'��=��=[���t�ɫ�G��o�?K�,��s<v3OS�M���1�wX��U7���׫W:�T�t�¸A!�y.~He��P.�`�e�K�S��fO����]y⧣떏@�	W�l�	�}l
�������<Q�D3�!r���$1
�}��-B�+�k�T��U(�h�[Fc��E�}a���u�X
4�V�F��Yt�� �򵬸0��Z��ڴ�����n9�24{P�����)�i!������������qȧ�~-���J��_�����s�n��h�2����qu8�-�K�f�m�|��W���g�[�����h�\b|�����#����̃,�Q*	��;�x��UH6-hB��Š��2�g��.�������r!��ܯ֦���������V���EE=u����t�"ڻ����{��M�:RWF�S�йzh�F�-�ñ/֤�C?�r�:��だ�Y%�5�CM�HVҳ�� !�5�p�
�X�=PƧo���ɢC���<TOx�%�5y�RoQ���E�t��{��́P�s��4�ʄX��
I���Yn�EI�ɀ��_��\.h�y��җ�X(Xi1�p<��sVM4�Ӥ,].�H	�O�9QI�M^G�����I�=��?T�W@�3j��q�����˕V����6$��0��.1@�|f�`�T��B����~*�*K�$P]�Y�k��g���*}�`�<id);��yG�,�M��J���=G;����27�ِ �z}���F�e�:l�I��Eś>OH�Jж�I�[�Y��"�X/N�6�-�!u
c}�I��k�B�a����)*b�z���,��a{�z���6'[u)��3�
�Ժ�W��<��S��MT<$Lև�I� �+W}�,��X��	0Qݼ���Z���E��ȞmB�ڽ�R�EB��JQ�=��CP9�~�%��Q�5l��
)qI��$iz��n�p��O�Xl�w�&����s���~3��],qc=b�}��|v����ā���[�ͳ��Qٚ;һ��`{�������*�{�-�V�L�\Q؝��q���]b���T�˖�y�s�����a�t+����	���]����	�������"HC� $��Ɖ��jk��.
�p��X�‰^�3h�OVBW�R�����v$C��jhA�[x��*�vJ{iѪD���&Ak��U�Z&�'п���}8�Pzڜ�y	j}��^<t�y�MM��|ȥ�:�\JG���^����Y���f��${a��:������g*��	�\�q�f�@�L���!
�X��B���K�6pA�c���_)����=C�}Z��sE�;���
�n�<� �s�lќe)�n�4RwQ��ך�,�lٞu�C�Gι�^a|�@��ex���i5'|k�^W�c���=c��~���`�/�W4����-�D�"T�O��+��C��ձ���x#;q���D��$�j�#2��P�$i�+*��k�s�@��>yR�����E��C�'!�‘����Y��e�Q��~Mb����fC�޸�x���yrc�r髈��(.C.�{��~�Խz�����uaZ�n�:��%V���]��Z�J��bb
l^��x�f���̭�Ň��,ƅ܍)��$7Uc��O�0�+�?��J�<I�2����rk�/M^,��dO
�h�̦����FL@��91��Hc)��T��¥Mًi�#�	��֝�/��XMn�R��
!�0�B�?,T�w��x�PpH���
�f���p}�EEL�Yk\��Y_.��\R�A.����x<��pPFR�[��Z�i�l3b��E���ϓi����,A&�C���Y�=��!Y���Bϯ�tW���f�|�_��i�g�&p�<K�[�������>N�'%|P�U����C!hU�~�G�qk��4�U��}����>�Z�Y�D�[��K����/[^��^g�y}EE���ԟ3zM#�+�`���
&�߸�&�
Ўu��bN���B;�<�[�ʮc�&�Asn�>��@�D/KU���B@P���u&�R�pk���E G�6���-*��s���*8�7-"�`Jf�I�m9��d�/��ݚt[����4MK�4��
��Dj��:U���<�\��$k���Ս���u<��zU���+p��jۦ�	���� ���uD������5r�+Y�������:�����}��;�B�tXi:!K��h��ؤDŤ6=�ul��8�M��>M�]a=���}��v�V�}d&�/�g b���nr\���aN4�(w�+{FOo�Z������}��0�>����X�W�”��)|�����0����y�L����>=�R�R^�vbd����a��gNXΜ���̡{RJ��(�����RM[A+"��C�:2����;	RU��2�U~��� �I�(M~Iz��Т(��v�K�
�h
R$t��\XR��K��#(w!�I2���I�̤W�,�y�C�,D��$�_���9�)���Q���ӛ�&U�!�����_�mIV�Gu?{��=�]�{7���c���twUJW��˷P�o��_�C|����_̊��X��ΑiI���jڶ�]�7E֙��]qȵ���d=�K��t-]YU�3���_�(e��APj�~B~�r����b�����UErn�,]3qt�\9���=Q�Wẇ卫��HЄ�V�fK|�2{2X����<wTzM�H��Ԕ�o��Hz�q�r�J揰�P�hU%�b�n����;��&��r@��cEq�{�5��\�CY�}�e���߿6��������[�߀��P�DT'?�&y�ҍRb��5�~��Um�R;����2 E���5�}�n(�Rn��[t`d�K�p�[�p��=4I$K���dԺ���Vb���Zi�٥��3��'^W�OS�jN}�����V��
]���ѣ�Vtb�`�׹���&���:g6�握c�	(�<�|��e�dԟ/�]���(��"�У��u4tr��S�>�>2˿��DА�$�tQ�w�&�z�;h��!��Eex��B������V�ð�WP�"�ϘV���"�I���F�+s�o���Mr�����M
n���ڤ�n�uT{d�üԾY��BǬG��vq��̒x:�����+;����,PU�<�eZ��L�yS*�Q�<4J�*C4){��v`s=3S��gZ��<��h9�ɑ
�C��5Y[�||3C�u|���f�}��(J�ҍ~��2oXS�u�SC��_��z� k��G����k�R\�k�q;J�|���"<нw����a��j��L�6�HE�ui���cj�}��Fs���j��^=���uo6�,��u(L߫��zn
��G���H���Y��9q��l%�N�j}�2����;�U몬�d��q���7y�s!2��%�1��N�|�H�Qqx0�}��\��B�m�b�8Z�dE�CuC�r�J�&�؁A����ɢ	7�1��.ߐ�g~��K&��~PE���6�[��m��U��J
�
/��!�p$����.�L/_E'��ў�T
뚚��_��e����5�t�)\S1�kl��E���J%Ye��k�8��UX�*؏�z�q��7�)M�����c����H�r�t���qE�?�=��<�U1�'2^�J
y����t�1��*ktG�Q�K�j]�}�� �C4��{����$�wƾ��k�x��)�!�C��ҵF3��ovt
����Uw�{)Ӳ�{�p�9�F�Ykgj��8��B���c
�
>I��6������F�L	�]�|���H�
�zqT�Փ����̙m̭ͩ5�T�vy)�2�K� �l�b0�Z���_���*�x�O	�ͩ���D=cm�q"͙���F
�-�}����mCIz�j��+���WP��^\6����5����@~{m۽v�F,.�E�x��0�N�n��f��^�63g�T\�z�T���
�i�:��T�e#����EŞXh��^���k��kҿ*�C�ڵ99U���ɍ�����T���{֙�v�h��*�ғ��XY�h��ͱ��Lև>��Drcc)ŲP��G���bT��w�cǺ�zb��Z��Nhy�-/��[�?e7�hN7�6ʸ��M�����g>hrwM�']p��D#��x`�T�p>6z�Y���YX�~n�
�ڞ&W���*���՟��:M*S���ܵP{�#~3�'̂R�m)	�\�<]!�}���^��4���_;[��B�����Ņ'e���i��%�!�|��ל�
�Ei���-�B����:x�ԓ9_�-���V�tlxF7�Wl��d9�v>�T ���>"��+b��ֽ�y)�U�P	��Rz�=E�ʞ��Z��=/Vj�}�o��2��f��Y�6{]ެbz=X���q�����1��ȹq����G}���I7�q�B?�z���i�ʚ��M��t�c��y��T��l#�^�+NQ��`�@i��c�q1��y�y��Mwы�{��,�����k���o�$�����G�A?RI�0~k��P'����������Ws��a�?��U��=Ge[�'�6����ٸ;
�A�=z�;����Y��"+�!��H�B�%ݑt۹��A:��9j�U�U����¦3];�E5���NE���}8��^+��p�����^�h����1����3�z&�6sz-\����%���8��,�
����5�>�E���Dq��Ўq����'U֮�Oa�Q���wP/}xU��W/��n������@�z)��>�5�s6��؁����t�q��+i�����,2�tw�D��U�;*�7!S�R���[���
�?<@��TLf1Ƚ �
	[;.���߿<h���&�	�^ |SRM��_�p�3�"��领S����ii�C���i���B�41��k�㦬�����������J7�Iq�K?T��s����E#�g~e�#����J#��b�!}U�]��U��%jwXQ�儭-4���Fk��`_S<�(2�#�66
�L���MR�2�)v�R�P���TJX=���FP��u�#�iebS_�u��ޣg*%��Bd�6�N:w���J	��q��k��#�2�ӎ�Ӎ�M{ż���=S)a����H5�$�Y�}�$�f��I8�B�Ƽ��j%�������_�^q�v��hnN��Փ�Z@4�R��	h*�jՕ�M{�P{�#R�U��v��Z"������Yk�$�w]Т+B8l�޼+�,������ ��m�]q��}����@��|�[k�
�j�)s�!���x=S�n�$�t]��=�H���Ҏ0�VX�0� ��L/Aٙ�)`.6�����~��
��Em~��fR�R�����Ki���	�M�nk�$YT>y�UY�]?���E	��+M��LE�� �|L�(�>�&ʍ6Z,��ˣ�=!�Le�As��6RҗM�I_&�J�e$�ʭ�K�+�BL��a1���g��sZ��lL�n����eӈRu�zݝ�κ;�*T��R>�^+}B�a��ۘq2܀���{j#��G��[O^:$���JWF~�(��;�,۟^�Ȃ"?�"���\T��Uec���\�\iQ�a2A��˨�P2�9DF�����&��c������,�o?�YL��S�F9Ul�p��x
�J�'0J4��U�շ����by��q-����:Ƹ����?]S���)2�3�1��-k�n4���Z=
�K�5�3��PLj��=�:�-#i�g�S�Q��I_�f��jQ�����,��q��vY-6�u�~��f���W�㌅zJ>� jX�t��:+]6.���l>=ۀ���?�,���Ve6�I�B��b^����k�y���B����{D��>��Qz�6b��l=�8gҜ��A:�8�k�=Q�xV}�n��k2�w�K=�a�d���ne��e���>�7/����G�^��qDGS��Գ�H���_|�6>��l����G�n�I�ǃSI]^��K]�Yx<�-s\	��k�c���n.�1�\�%5�]�uTJ���e�?w���~C��ͬ���Um�-5�՞<���o���^��G��T��~����{]T�kgz�B�Z�y�'�N�"���ܟ=ו�d��7ׂߕ��oʖ�F�������Fho�T���-#��cL|�:�5��莫�v����8'Q�V}D[�ޔ-,*5($#�Q_Niu����G��0�Qi��Ȉn��z��ȓSF��e`�̙n�������fls����0�3R�+�CI��#ƾ�>��JN*cs�G�J~���tH���}%�����������>�; �b���ٴ��k�*�l��r�ֲMk٦5ݦU/2'B��5#�kZ돱ݚ:��1%UkUlrl=�W巨�.��Ժ
3d���}D���+^�y�?�a�O�0p�m���ۖ^ݖޒLN<0�9""�������2@�6� :�IY�S�|��N�b)QgR�W@vT�Ы��h�W"�/���ɪ�(��e��L�i�+V�!���\������5K¤�,eڳ+KU��Xڮ�Uĭ����5I<���ke�¸ϒ��*��V�Ё��	����t�ni�����?��׌���J�CT�s�vJ.��Tj���W�?�s��ޠmoж7(�7P����6��!�
�{x��L������B�x_/op�[��;�̀�����(��XM��#$�P��I׳���e���RN\x>���jd~����<����G��-U$Mާ�OŷL�������p��B�I�P�cZ,�ʙ���zS]M?~�?^pMm+�Y�'➟#ڤ�(���3���h^,:����7�B\�9��'�V�I�Q4L��3��!���X�V���
�SϨݠ�m���9�Pz�BcJ��q�;��󱨮6j���c]�1�m�Ϊ���ʴ����T���Ǣ�ڨ-<��[���|Y�����1��	z���|<��@�r�=�:HX�-�S�[��k))��BQz��e�2�V�3I�@�%�+z��p8�O�K��m���>�<h�\��A�g�2�t�+��Jq-�Z�1-�G��z�����ښDF������F���ڙXtV��A?Ob�]�'��#گGtѽ�g�1*G�g�3�Y>]���Mr�n�Kd�_�[\��5�/������wO`y�;�ce;��'���w�©��NwYoVGυ��Ϧ;�����]^�2���g�/b��JvL�~n�K:��+�A���F�����\Ԭ�u�3�0rRS���)�Eό���/xl,|,����>�7{RwS+<)�����q��~?D����CV��^��h�X<�7j�}D�o��0|T%�Yrm^�Ib�z��=3Z@�5�Y66�w{�Z��ч�f �\7R򤨽YGA���eC�#��(��
�W@9�-�e#����Su=N�Nh
#��|a:&�L�,zfD���fY�آY6j�}�o�4ie-�R�?ؑ�u��~��)�Eόh��,K4��A�=z���/,d^1/\P��\D�u�6�׸3F,��,����X���mj�e�o6�JN"��W���
�WPza��
�S=S(���,�9bY6&օ�R{�#~���Lı6�)�>8U���3���R���,�n��>#�E=}�o�P��H�����<AU�b�~���"I�W'�h��Zوۙ��h�m@��b1)�k�z
�Ae�b�3�ş|���(�H�/�^�h�X�B�z(�6��3s1�IY3��Ԏb�5����>D"h����|��z;O��ɢ�>��~6MX���	����JW=
��z$�^i8���>��w�ٚ�P��8��u���}��Ku���Z�̍�<Q{�#~T:�ɿ[��{h�>ʟ
daSXH|�^�'�)c�)y�p�Q9����^�$mC��7D��k����2���*E���X����0z���z�g������N
��k�I1��D[�P�J*�NR/)ɤ�JN1�Ced=�_Ϥn��JjccQIm��_��
9i
m	JA2i���d�H%߫Rt�Q��}'�^;�Fj����GT�JUOP�I��iL]]#�,����qj���v�YW>��F�=ұL�)E��Hš�ԓ�dZS�`�x2�C�c"����Eo�a�G����$͡}����M&}TN]��Q��
�Qꑜ�Gٰ�_$��/R������L�%e莔De薔fe�G%OC�P�w�v=b�P.��%~PG�^���G�S堯,)]y��a\�%�,��Q�+��P%_F�ɆuW��@r}�E��z��)�8��%eY���x�2S�`�A�]]�1�+!�[d�i0yݯ��P�ܤ�w��<�.�I�>��g���vI����Bu?�:+���PH��PHmL,�m����4b�~�T*��v�#!u��^2'r�˓~h����H���Hml,�w��=�J
gw{
�����z��n�zTK��Z�URzf��Ds��6>�a����G���b�y^��C�g?���WD�J*1G�PI%/,.����"~m��_�����.��y\z���J>��|TI�gRI���@�\:���E�M̫8)��3i��Hw���v�|!����I�\�%���Rzfh�Dsh�>6��F���͞�b�����r�\�凮�"4P~�Y)�'�RJ�Rj�bSJ���_�p߼IF�]PW� ����K���~	�*)<si�@�_���E!��z�����B��(�kQ!����
�.s_��
)�
���u�Vj�e8W�%)��
l#�T
�;R�Rzf(�Ds(�6&�%�R{�#~�'IEU�G
��&�+��3)���PH��PHm|�[٨�Y!��I!e=^�E[$O��RH��M2R�Rz�+�Dr(�66��F�(�E:�$�mRHd8�R�Rz�+�Dqh�6.�{e���ڇ�f��Q��8�â�RϤ�J,�34R"94R+��e��)�L)�ȟ�i��J��]4�0�I%�G�JJ$�Njac�I���_�x"���'�\�:*MH�O��a���bך9����(�V66��F�������ڕ,��e��u�}�?�g��c�S�|��y1>c�
��1��v�y���o���L~�A���ҫ�'�&�g�K7��P���Bs�kNY�7�5Ud��),]:��:tJ�Y
��^%�+|ܥyN��<�ۀ��b��j&%��x�iĒK�4B�K����2�=�<f}Z���5_��������w$����W�6q�[�g.5���W4�1�e�T�X;�������H����$#�H�_]�4ͥx���cv��=x<���x�ڱ����Ǣ�ڨ���%g4�SML�驧����t���X�z�F��.~�؞�6�⻔Q��w)�F,9K=��ue���bRGxzLm���v�͍�E�P�]�#�.#2\S2/W�_)<=�<0���i|�#6�Q/����jW��PPM��ç���%��1c<�A� ��][=�̇��������⛷5R������hP��7��.�XBӽ?�|`�s6�)�m�;�Job9��s�Q�D����u\�Q^��;��U�'���G��p�]D<�h�rOywB�<:��x����z�遫uN�Yi@��,���9��ϊP����'�3L7�?�W�NY�����^�=G�!���ͬ�8��z�e=��<���J�����h��܀��9k��QHc�aA�'���j��{+�=�@�g�E\bB�f�� �V*Ұv�jl,Hc�Ʈa�ٌW��KO��rW`��X3�jX��j4Vl�C����F�f3��ne����St�a�f-3h��t+uNB�u&���w�p��)u@
�ʭ5���45�O��JS���W�,q^HcccA�v����G��{+\��N~���r�����f�Tm�Fuɝ�i�X���yo�
ӕ�l;�ri�����b�)�4���
0i]Y��:�;-@c&��<���콜�
Ю~��J�K��{%�4&1*��r��:ʭ����7�< ������_�����P�u�?#��W���PT�آ�v��M��9�p��[��y�zuk�{�o��"���ov�^�VФ��3N=3�[�c�^n��B+Y�p嵳1�vj�}�o�v�C~���tahg6O�;�p�02���X^��5OȽ�0��6Z�e�D��E�y:�
[ՄV�F�A;�@"�HQm_��r���4��7�<x�Z�&�O`d}e����$��i�m��IA�8�"�X5�-��;�W�����C��Ήm�
����(����qZ�[��6��ǰ:@a�5烙�#{0�諦�y��20[B!�:��2z���4>a���A�����luXh%M�47I@�p��Uat<8DVV���U��;h�^��!s!���q�|̦���k�Q�7y�]���I��q����aG`>qXډ	6���21۾6Z:�c���@SƏ��3+㤉AU��6u1
��G�pԈ�a����u
gj�o����UFgڥ��6U;K~r��#�R�(`�"n�A��8�&�e��zm�}���w{I���� �G�*L����ɴn���\K��f����u�<���H��k�,^"��/6�h���@��E"�Åנh������tJ�G��v�z+�U%1=���w��Y��̮S��7�J`;���"o�Hd� ���aSE� �E�Me���beۋax(��W���K{
�h�前�&^����E?h���lg�c��D��]�����ۊhh[x�|�hf�6TTc�N>�•���F�K��T+s�vP��J�"�h��N��k#������{������+?�c�h,󮁡Zg29���6���}�Rᝢ��_�!������"����(>\�.O�h�ݴ�
�Z��Ԙ��R:nm�y����mk��1��J�:嶴v���Eq#�1�[��X?u�:�..�|l����&q1
�Rzug3k��'��p&O��_��p?���>��Nqa�`SI-��_�p�+�)�P9$3��R[Z���Ԗ�!�O]�%
�W�Hy!�v.n����k�[�!Y�Z���)�<t���!r=�na�y뉯N�ZV���M3E_{��t%��ӌtCYJ�,%�9SáE��Y������ɉ@�k9	Բ,|l��,Y�ޣ']�-�"P�(G�[��Z)u�b��Zz�&��Iz�W.6��L�
�M�PV�d�aϦ̤�֦]Oj���(�
q�
��hSy6s�i�b�}@虒J�0��??��H�}��:H�ӊ�I)�kzf]�%��J���-+HF�Uտn��tS��7��f���0=��T�K�n	�G|t7�lm�����{d�8��,3��I��G���"�实r�Cک���F���M�S{c�֦~
�it|��x�q�H.����u�I�&
�3}(��
�W�v�ʛP�L��e�9�������k�a�,6j�PM#J�U�*!y�CG���B1�'�<^�#�Hp�30ل�&��uSR��2�����j�G��Ii&u��K�~�=�v���\&z���D<��8	� :1��r���[�J���L��Bq=ېm���mYk���������� 5hIy��DzB����,�R#I���o�v��
쿶��ʢO�	�N#�G*/H{!Se���P89n���Q����iC f�"�c�E'e��E�M�z��C�0<�y	��|��\v_P85/�>:� ���FP��࢏�9����i8�Y��F�+�
���EF�A�Tɠ��n�
^z>l�N4W.��{�v�Wf��K��'���^,*�����&���{ܘX7�L�u�Y�z��K�@�ZW&IW�/d�}����˙`�v���XϿ���?n!��T5�oڤ�j���,��G,��k�Nӽv>�{d�&�B0�KҭP�X��+ԹG{�p���u,4��1�.��#N�9��F�jҮ8?�ǻ���� �L�As�J�1]=�1�g�'�+�	i�y+��Pg��I*/(��-��Qjx�c�z���5s�Hnl,:*<����r3�E��)��ѷ�MՙI�=�.���Q�<��^8��W}��˩�����R�*t���W�~w��x��T�v�Pש
w	-�m��t%���&W��,n���}/w��&���y�)��#�Ό�HQ�a�����:�ah�:ͤ0�>j���'j�}D!t/t��n�ϑ��F/�z����t�i�����P�B��(���x�|��l8���u�t���9:E��e�K{�|l(����G�֑v%�E+lW�� ��F�Z:���}�{�z]�aG���ݖƈ�s�M�q&�-B�,�t�����E�(�:�K$�_;ܟ������ʌ�<qL�aV�uP��q�ØE~>�(��41,���Z�nKc��A{���SIdX��/�Ȍ��i��G«�av�=sgc�IJIb����,����cB�0��U7=V�w�#���PLQ쑘;�_������S7G�b��@�Pv�Z��.t
My�p��b�ܹ؀a�����h����6F���K똵����BS�c���[�p�"��"&��j�q� �c���Yl{OE�HR��N1����
�Z��W�7Ю����!�%��d��=#��H�*��C2��b07Z�}��ֻAY�&�U�X��jf����1��d��ܸ�����L�����%0���1�=,u�d�1��
Is��ke��������x"�;T��ӛ�Á�'�E`���	�̕��_��J�/�Ƚ}��C�^�(�$=�d7+�b`�,����{��B=>�f��5W���8�/]Kws�x�3И,���4�qD��S�,u�C�*W�C�x��>;7�ҋ�k��4T���X6�S(A��և�W��k�[�H��x�ͳt�&ct���|e>�1E�e�T�j�ᆬ����{�&h����ki���=
'st`G���y���I�Z/�צ�(�H���xf�Ds�կj�&{�4���N��$cr��Oцw�U�m�5��#U�4�O�TM4w>6�҅�kQ�&x��8����p>�ޥT�G���
��H�ll�1�̧e��C%�
Y�}�u�˺\�,&�=rQ=�˘	�e����Kj�}DY�s����#�=LJ�Y�H�7˿4]hn�̰�� ��\<Lj�}D�x�FE���s��b�<�!D��=rS���X�m
.���t��Sg1t;8]=,�Oa;��ȵ�U0o���#�@��a%�nFР����܈��'̞o���j�0@OT6�S�p��i�H���#4�
�,I�����R}Z\�	���f�q�}��3�_/O��ק½�1G~>C� I.���o�� ��I��^10(i3R�E[n��3�S��}r�|�/t�6-����"�׽_�9�D�D8M��ؽ$]=�_Տghh������t"�0�i@�W�Y���䚍,b2�����U�Yŝ������*�š:JG���"�F�<M���f�����1q����GsXW�z�����M�nβ���¶�0�)�Y�L@��ԛ<���h���]K�4�B��D�;F��e������Ld �ZOKW�I�.iߟ񯈔��i!$�F֨'
�pd�g�R�/=��cO��Oђ����9������
�#Kz~*$62iy��s�&�Y�Nsey7SJ���Z�$�;ks]m'���)9�z�$�	%�ІD3�(�AA�/�9(D���)�1s��gL=Kv��5�g�%ƛ�S�<��%�g2�k1;�4�]�H���Sb���Y��k��G��3����,(�X��п���}��k|_O�{�S�J��W�MկN��je�����yʀz�c�x���7��M�t���W6��2�����S�S�<΅m�"��o;�<�?�2r����cztP���|��\�L��?���Ȭ�/N5}깞���{4:^����KT�=�X���~n&n��JP�&���/�'�L��`*��b'�:�eo=�{B�{�X��C�}��u�?�hl[�x�r �5��ܴX{�X�{ϴ�P�|/�b��9zƧ+5�̾�Xi8�'�yѻO=ה��8)n=әm�p�o���
ę���Vv��s	�t��W��ǣg��W��j{g��1�8���8���㫩�xt��x�y\����<n��0��ZM���V��8�9;�y<�u���2+Ԝ�S�5�}��{���Y~��V1Z�O��3��x��3�V�]���f�y>G�x�$������̭g,�>�O���1A�]�!9I{j7.��s����B45��Iuc��7�f
Y�jY�3���ڪE��qD��`��q��CIO�/<��~�^�~���1C'�������?�\3mܧ��g:F/J}i^���1z�/П��LKә��C�	uͯ1z�"rG����3�Mw4��w�f-��ӽg:H�ىQ3�]��s��k���Ȇ;�x��g����&칞�b��s1��?�L��Y��� �}��DKQ	_נ=:�pW8�0�&L>W�;g��t��!+��A=��6|��{�7�\�{lY0!�7�<}Ꙟ��s�Уї�g��l!u����o�Z�i���+��5C�3��ϋ�k��{��FcZ�k��".odn6x�#0~��^�pC&n��5��G�4�+����H0E���
�VMʍA�Dtr&�'��s�tP��{O�I%EF��-gs`	��7˶�-�Ti�����ãJ��3g���8#k�Pi��*�j�r=���AK��Ɓj�3s��x�Zo��A�=�:i0.|虏�P�	�4:x��Щ�&4Xx�+(Z��r�"zL�+h���{�@q�Pb"�KB���|��d��huyi{M��\��o:eC�ǾGu\C��3��1 �bڍ� 
��c�T)gk:���(��i��s�,"}�1����kAl�rZ=
5Rg>.c�皩�Խg<uNLJP�OSn�V:z.4�X��SOG#�S����>���1#㩫�F�1��`��>�W[�q�L��{�};���,t�x��X0��q>3Si^-U��S��֭��{.t��
i��3�L��z�=����\�΁�3�ə^x׋���	ȕa�'"F
�ܜ�cX��mvV����47���јV���*$5�˖�8�Ѯ��=Vk7|�&"7�'�{*�ҕ��/Wf/+�gu�
3�-�dL�1!C=ߜ�ҲC���<�%�4�cE
��d�%�y���m�
�ҟ���F�n�י_h�n��l��/J��[a�ǭ�{J;dg�
�>�\[���v�w��s��J��3��߭��F��>����t�c}&�/4Ӻ�Fs�d����L��}jd��k���kjb�{ϵ�k�߇�kict��g>j���j�hQ��9��i�]�E�̭d���yAҢ�z��[���S���ܡ�����gx�-�˨�\k�?u]�U���G��E4�N�~hZ�B
ס�*�6]�fkŚqh6��~f�V8���=���3���y��g��΀=�s��L8D���DƉ2����|f6(NǙٳp�3s����;���g:3��?n3��z��{b��xiw����/��c������{��<�z�bb���g�{��4|Ǐ=}�^�zƩy����3q��85�\�_h�yj^�~j���,��ps���ӏ�P�#�im���(\���ňz���ʔ��k�O��֜~PH��1l�K�����4M�$�yW�
�Z��	W�7�բ\��=�g�{ڻ�u��=�*r�l>�LO%�z虎_>7�m>~Gϵ�S����	�=�Qo�}�t���<�������go_�kw[��c�ŽP�|蹖T��s}��O=c6���k��m3�õ�4O�&�y�ʶ�@�M6�c�m���|ɞ'U�c�)���yi�cϘ��ԭ��>������S��7?��+c${Nmɞ�g�ԽG�5�y!�k��y��8O��c��2w���?_>�W�+5K��x���ޒ��MZ�|�	Ф"��R ���a��{'L�lnpG��68��4Ȋ��I���_C�$?�B8N�U�	���_����h�>+1$�S��1[�c���A;;z�DS�˲;�v�<��SE(,B�Y�=J̞���F�*�ل�獍�?�=xP������3�����mdbHtY2Oj�@$I4�+�8{���A�KnD?���"A��	�؍�Im���r*��jg0sB~�3�R��/85t̄����sL\ud/I��4'p��u��cf�3��ʿ`&eZ������Đ�OR3\4c���T8����
1��N��Da����j�y�ɇ��8��@A���pJE�z�:フS��_�R��S�]VK���$���?�X�$[9E
n�s��/Xi,�E���I<�\��'a<}\4��C�ys7�+)鯱�qP�]^�]=��)Z9
�b��௿r�.f�g���d����W�_'CF�1(��쀦�l� c5/��G�%��MD�oOS����8OdI��J3*r�o�VR�_��R�]^�.��ۘG�DX�0��C
�k���>�`�F�3+��e���S�B����b.��Ld"��1��ә9�D�3,a��63��s$t�f/���q�$M��K07�sm�|�ɿd�I1E�w�����CE�ǣ���L�t�l�% Z�\Y�T��`d!��|���3T�$��S�Q}�O��x�e�����T��n�ڐw=R�U$q?۴��3X�yY��Ĥ�df!�kf���9;m*�<'x�q�W��
���q*l����d�.�;�+Y����"{���=
�*>*#B��e<��9ہ�\��X�暸��_�6S�Ml�c=6T1B��.�hFT����r-'��_02�t��.b�7�v ��فHⳭ�kڇ�����%3@TsR̵��Ξ�	%���$�*��?�N�e��I;��'���d鼠Qʌ��H,z��yr��q�ɭ�a/��/y�����\�&�$��b��|,���0�0��V�q`����X����_����~f�A�m�>�lG�����x�����#"��M-�r�O�贩fϥA����d���1-��a3�����/�ge�7��̵�݆�:��籂|�
��>��54��o������͓=��@@23�p��Y���6����B�L��ð�4���y�e�s����_�8����#�q��72�h��.���#�Ô>�/��o��������X��L!��Z�,���~�0������\�."z�ឭgdL���~4���{&y�8��3��
L#X�hN:�������«)&�q~tf��/��'M�Ջ�1��Y9?��It	G�>�/ �J�w��j�S�Yk 9e� $+|��t��8�W�x&�ߐ~Y
�e�a��_�ك">�8-V��s�:������m�s+�����DfC��~���a~!I�r��W���?j��1L���P��r0��TE���_I��J�/a�]�j~�5�'Z�eDAۙ>r��w�COs x9*K|x�M�y�8��@�S�9�T���^���Ikb&}� ħ�X�6r��7>������
�,�kk��/��0�/L�j����%��"U��A`��0TӯC�hY��q�Z���×���|$*e�s#�r0AsF�nm/=����<F���x��Y��T�0%��=r-� ������0]P�������!��%Q��
1��?�c�{��va�݆$1��̌���`�ږ�ǟ���R��M�3�1dK)b����2K���݃�p�i���9����50֕ƒ{V̳b~w�05�U(�醨�9v�E��;v��QC͐KIs�@���,�vsL��<�p�E��I�#�n��?�5#���%��&}��[j̗J��o��}I,����Δ@�l{��7��h�B3aLL�,
�>|���yV��$^gS.?�_�/d
��fΫ,�z���1�l���|G�X��h���L�ͳ'��lAUX̉���a�/�91��+j�|�+��U��ܡ���c5ۆȣ��-}\T9�"��h'/��g��gp@��������6�ؖ��zn�(�a��|�Ѓ�L�XRf'ȹ/�`�3�S�Q�C'L/�2�h�h��`��:�A��
�ej�[l-��L�ff8����h{~�`9f�o\��L���Pd�`!Yp+c��`�O������2�=�Z��`��4�n����8�`vk8�ڞm�w�������=Т#�2�	���-�{�l#<�l#�0AJ5��	��DUi��c�LJ�s���ݘpܵ1�z&�:{T�G��6�@'$(=ەE
226�=Q��'H>{
��Mu���s<��L�6sR������꺤w��겅W.�g��%��,��y����C��B�̯��
KX:���Y�F[*
ټC�a�)�,�����C�̖��C��zgO�ii�4�I$�`�IS&{�!H�,�����l�j��r��*S'{��mM�gDm�;����Ξ&��v�e�Iײv�}x�¼N�F�Q�p!�n�:x|Z���37H�����N=�z����Ǫ���y
��N;S
X�����g��j�j@�詭��/�<d���9Fc�ّQ��F��7�P�v�y�������G�2�*J.�ڴl���[��_�z>�>73l�d���6��
��y��Ip����v�[3�'�il���r�dR�#���U��=�X��H��8�,�[G~
:��f�`���mB���=L�bi�vE2�`~^��V�f��Rʄ)��8�t?*�x��ѐ}��@T����.Le_Q!�:r#e2>;2
m����*WE��f�/*_U��Q��Q�s��s[!�=��Z��bE����h=Gf�q YˮkF�L�}�bF�q8�$_�t�|/�u�4�C�.�������p�&�H�4蓍Dc[eZ�s���A(S���^5���yE��	�͂�Cx0�W�#���w�Ph���t�����xkڊoĥ�K�Hyy�:�I(q�
��g�y.��v�Z�U}�eEE�H7�t���]�r%�l0��'��A�1ӷ��_��Ԝ����&\%��E�/a����-���\t���1�����,=�Q���b��Y1��,�%�r��1C��'<[*���,�S��+�q
*��}3+AHj�P�������?��A��P��D�iڞ0*�S��bց�{��̟Ym*��u��V������̩̰B�,}a����RY���J���V�B@嵂o�B��Ç��\yϣ+�w���O���x�M���
������n��+T�Lq��� qK�v�i<l���g�>�p�7����?����@�����?�Ҵ1�f!�*����uh��Zprc��+��-YY�16��p[�yV�l5�z���I��û��@��'j�U�t�ʞ���>+�,�v�$Uq��1��ϩ�?����9���Q-��]�y�J��Me�+g��)�#�dS=��������@��?����OH
�	�6a�D�ڸ�����
���48��\�qΤ0 �sqv}zCEmǪk�ϩ�7:��
�4G䏥��`�'�:�7[�@��q;����C��_��	�# ���g��L�2>B�_����Q�${��ֶ��GEe�<g;���b���C�\`T����
����6^�܁�o�/�7��o��e����
���?θ�2Q�
�oȿ���o��~
��n��ݐ�!��!��!wC��Æ�݆��
�����7��n�?�ȿ��?mпޱٰY�?%���������7�_n�?m�l������������
������
��
��!
t�_n��m�n����������rC�uC�aC�����
���o�?�����������p��������
����+�/mC���
��
��
�����o�?o�?�������?�������������������;�wm�i�;�/;�+��7���
���w+�߰�a�x�q�u����
��
��
����7�a��b����O�w�7�#�z��C:п��C��o��l��m��݀�����
������~S_,��r�/;�Om�~�WT�]p��(�i.H��FaUJ��9�9$�� F����h�9i��q!O�BTm��c�)h�Ԩ���9,�v�=�y��N��*�/i�f��6�JUݦ��/��Naؿ8b����;&���GhBr�r�b+�٤�F;4)'m�miZ�F~bυ�v������?��������/�4�k��né�ǏL}�^2�}�\7�\+8O�_k�k�Q�ne��0?�M02S<zRp�U�����j��k!M�7�sL�����Fa�?1��ge��ъS�ƞ�~��m�O��.G�ˆnڳ�H����h�}��a���lph��YPY�|����o~>���7?����䛟O�����ϧ���'��>����WG��6O�r���7O�x��)7O��y������<}���'l�>q��)7O�����}����n�>������W'�;�XV����o^>�����o>>n��q���������O�||���}|���'�||6�������ǯ.>��}�򉛗O�y�����g7;�7?�������'�~>���6G��9�ԛ�O�9����'l�>���n�>iu�)m��7O�t������o�>����6G�9������9����'��>���o�>as��O�}�O��6W���ě�O������O������'�mԣؼ}�w�������'��}���g��)�����So�>�m�>eu������ק��>�Dg���O�|}6G�����|���'o~>a��7?�r������'�~>��>в��>~��O�y����O�=}���'��>v�-�>����o�>es����O������O�]}Tw���7o�t�I���[�}���'ݼ}���9�ě�O����'n�>LgD��*"�hm�I��up���o�G�#j�2
��q�+C:e	wH���
�u�t��Ig��x.O�G/��نk��D*?ޣ8� ���?���_�(�c�����V�OU<�㒱� �����}$�/�,���iȨ�S��P�@�:�)���/�οn:�r��M�7����M�_W��t����/7�[u�nS����?�J��)�ݦ�o7���w��|����?mZ��i��M�nZ��i��o7���i�æ�ϛ�?ܴ�������?nZ�x����?nj�.t������M�6����7�Y�~����?ߴ�~��U�nZ��i�aGY�yS��U�ߥ�K��nj�+wq����?���/��?����p)���O��?ݔ���/��߭Z�|����?nZ�i���7��'J�vS�Ǜ�?mJ��)��M�oJ��)���7���i�ݪ���?�����o7���e�/�D����w��߯��]�w�����o����zwS��M��V�]��E�K��6����7��i�������?�4�����?m��|����?����i�ݮ�w7�\u�]�+~Ү�O7����˦�w����T�qW��U�_6��i��M�_f�?N�Y��n����˦����t�e��M��7��ZI`����3g�4o���;�>]P�|�#�Y�_~��C��m�ؾ�|�>*��_K��9s�܀+�&ȋ�: �q`g���z�5���_~p{~��1��%�OfFQ�7���r�V�*5)k�wa3��"�Xl+�l�O?E��4������<�>������<�>������/���d"�� ѲaU�B��G@�*����u�!�?�����*":��b�#<Ή������=�M�@R�J�wkC%V��r�!ז:����;ZTϑY�b��?�a��5B���?0�b��)� �9e�'�[;��
F}�ʩc�ra~��/�d�y2�<�}��>Of�'�ϓ�����d�y2����>��tՙ`hNM©�9�y*��uǔ���QջLL�6:ve ��8����	L�����w�V��0�c���dF���O�0�;�}��L���(�+�(|=��o����-n�|�0pc�R�V��Z�V��%�
ݧ�?0����`������?0����4���/�Hiw����')�4��!b�b�mTp.��=�Yq
�C�:�:g(�pp��U����m9}��4�ފv��ʷ��`{ڨ+�o�UQ����ڕ��C�	�9��"P��<�:� \��5�ރ�8��������<.8�����<.8����/��d!��:�(�J���@%���@ȍ�`�͍�:,�eR���B���a�L�܋i)s&�	
�ҡ�`.O�O��LH�q���a8�8a8��OЭ�?��}�#�<"�y�0g�a�����,-�{�͟��vNS�C�ņֆ�O �H�a�'��	�}i�@�'��	�}i�@�?H;g$�o^��CV'��M�����@)���?΅��J����f~���a�T�_�!�Z�N��5i�#?���7
�r�7$/��^����'պJ�i��"���E�qd�Ìx`ݖ#l}
70���C��P�8�<5�C��P�8�<5�C��P�'j҄6���zA�,�J\�+}O��v�[��r`�|]���Y��b��Ҿ��C��%"VB�D}�)��A%��s�	>PAq�i���7
���	'���sd�IL�{��2��[�
��[ؔ��i�L��,�kk�6(��@��?���� ���@�?�;�L�"QO�
�xV�"��?G����Eᒣ�ItJey�}��d�8ѣ]`c�{�D�^)ql���US��֖g|Ms����X�Gѭ��6{ν3\CZ���
j�ve+��j��`������=i�I�%|��=)�����̉(�s*��;��h��Q�	`>L�P�&��އ��wncs�qL�oC��Y)�_��$�_�K9��xΉ>/:H9�lqX�;–y��Ӧ+��x�S���mw�l�4��l�H9���H9���H9���H9���H9�����S@�X�̲2y��RY�U��]���ay�G�J��,��7KB�S�z
E1PH2�m0žB�*�m)��`$C��dy<�m[w�ǐ)��t:x��/��{��kg&ޱo���]Å�3�KJ���$]�Zd^��������s�o<��,�^!��y�j;�rs,e�j�;
����,�l�e��������qOcTXo�(@X;1�Z5y{E���M��
�B
U�TJ�?�ܒ69���L{��K�#��n|T�Y��:S�!�2�^��=����������ˊb��e�+�zηV�k\>�BS�����	'r9/zs̷-v���~b�_O����l?1�O����l?1��c�'�ً�GQ'��UU*��I!o!�j�q�y.���
�� �#�D
��Z��e�����O�E�pr�n@���p�m�C[]��FY�\f�m*aB6���Qd��vy�	�AIrW��z/�ߍRB�vk�	Y[�a�"��O��̶��tE��S<c���i.�~��a�$�8̬-�h��B��q�C8�t��rQ&�'EY���ϫb��Ę�s cO���ё�_,�1(�S��|��k��MYajTb��
��P�"<�N�q�93���J�a���{�G@z�G@z�G@z�G@z�G@���@�p���hV�Ī
��?�6��'��}`r
��m
a�ĵU�׸�,P=ЮYh��R��+��Y*
a2P�^���&g�mq�9��e�̏Ц:$��r��N�ȝ���G��ȭ[XU�lEU�������*P۹��쐾�H�-�&��'�0��"�b��8TF��y�x���(�^��[�d*d��L<�4�P'0e�q�&q�&��<�`N4-�I	����G����vu؇�xt���#^�N�!yZ��!<���ү�)��]�dX"�Z%p4a�]�M<J�x�7��K<*�x�7���ģr��*�M<�7�(�ģ��G�m�Q��G~���*�	H�& 囀oR�	Ha��& ���nR���	H�& ��#��Gq���M>�ģM6�l�w�ȷ�p�7�h��n�Q��Fn��&��h�n�Q�D���F�&śh�IFy���M2�d(���Q܄�|�nY}���&�ģ��G~��.ջ|Գ�t�(n�Q��G�Lay���&��|�n�QZ�#z�_R�	H�& �M@��|���M>r�|�7����#���&�M>
7�(�䣰�G~���.APY$�˚$$�IH�&!ś�TnR�IHu����f,�*$Q&Z���IIu���.%����	Ie�6�ބ$�6)�lRRݤ���TV�h��t��&"m��&��x�n�Q�ģ��G�&��x�V�(���|�M@򛀴'	K7)�R�	H�& �U@�Kl���MB�T6	�nR�IH�&!�IB���*$՛��v!)mB�ۄ�|��MH�����H�&#�UF���Tv	��l#	�Rfy=�:AhU�P�#��tU�PLO|)ޑ�@���0i���*13��� ��<X���Z]ɇ�j�;��v�S�20j��͘K�#��P��m�V�S�@}��\���8{��1П8E�H�
$��.;�(���%��Q�j��6��c6��}	:���,�$H�����F`B�˹}���mN~�/���Nd�t~n�m�w)�k:S�o)��H���H���/���/���/���/���/��������]2y�5	��E3/�k�޶���()�XMʍ]`�9APl�^�韠�۪�~z��H�`�iG�v��j��a'���ڞ�	��=a8�wW@�ĸ�{
�}�S@aa��=����G��P�llĵ̾Y��`밃%��"|
)BX8�y-�??��,�sO��x�=�`�'��	�x�=�`�'��	�x�=�`�,	h��
D;RU1����(�s���4���>�r���H�do��E��B�c�xc��E����]S|�,��Un$�I+�N��j���#4�o����+;#"���.�Ԯ��x�'�+��V��g
0Yq���!�"���|"L���!�� ��Ӏo�ѷ�x�mw~+j�ΝB�g��o<s�<�Ϟ�gO��'�ٓ��I��?{ҟ=�Ϟ�g(��)�	4p
��ŀ�\G?���m����K�VN�#�l
���:LN`BUq��D��B�C
cX&�-�V7^ʂ�Q��C�tq�騲]�#�=�<\=d�\:������^%٩�>w}��A���/P�}��
!���Ӕ)���6�3���Dۇ��Y�s�96T�c�*�[���	�|�N���'mk�V�_7�o7��Z��ul�
<�o��ڿ���m�^#u���[߿*l
�IF�	��vo���7c�[�s_���Guڼnl����s��s�&m�(�@��mڽ�΃Q��N�7��&Umߠ��}�l���m�m۷���x)N7B��?KA�sn���^�	��cSa�@f
���q`4���bj'Q�P�=�5��n�X5�F����1т�p��7���F�#G�c y�K�A��G�V'��ئ�Qv�!��M������DrQڎ#�~����dH�FL��vM�#r?"�#r?"�#r?"�#r��"w�o�-)9,̙���p!4�|�Te\%��D������(�Yn�
M�dd5˴(���j�����2l?�؇ ���]"пB�7���'�te0�E�8�>p�)\��{-��Ј��."qډ����^jsד+�@q��+�G�?z�z4��M��r�6�MIזeH����q�X�9�c`8�L\��T��ThlPܧ�{�JO�#�%�<{P
�����cn�47��}�O����񴻁�����{<�O��iw�d�� V-�+B|N�]<���c�M�����&U%r��`:�ê�`u��5��"���ڎ��}��0����m���~ŭT�*�*]7�ɏލ��z[J�Y�{�%�#o�}��K����93��:U��಻	@�c��8b��đ�q��<ޯ����m��.�9��#˅�{�;��O�F�gr�G�����L�R�D{�1
qDZLq�MX��Ƿ�p_ˆ�"WQsd+�%ٍ���ɋ=X�ϧ{Z��{Z��{Z����b�@����--E�*�uQ���+����7�Y���o��%�V(%+W�`�i�D&g���VI�ۥ(W\9<�ߑ�>Ҏ�ڼƆG��D�9(�q)Z��n0d���
�DL�fתr�,�Poz��F�M�6�A�"�=�o�B��1m��.~���Z�(Vksd���GZ_�ý7�pӽ���`�\��a����f����a��ᇋ�q}�c�@�\\_��
bQ{���4�ȹD�aH�'����)����E�S �yYy�"��!N62�K��E
�xư��TOK��TOK��TOK��e�&�U��"���U�$(yާ^{����<P���4|0x��!��;-���Ez'ku%Z]�P:ڝ��Ns����
�4C0�>
���!��5��O�J�|4X"g�� y+M�IB��F��D�e�qz�8�I\�T�G�~\e��{��3�$sz���[1�x����4$OC�4$OC�4$�dP���'��vLj�7�,�^��H�
!=a<����-/��m�[�^he�ɬ�y��+��ѩ��E���‘�N
`�:��bA��U��TG�m|+L�au:s��$�Wq����N���Il����O�EX(�$M~�6��@7g��n^>�W�fs��B�q\����Eq���HsZ��yZ��yZ����Y�Yz�
�څ��0�,�.��W�D����.�`{\�ti�5h\�X�	�Ȍb��6]�_�v����4�
/&��M:]�)�
42��[1r�\��`����5���Х^��^������L���WwW�P���<��X��"2ɴ�����9�o����o��<O�-v�b�-v�b�-v�b�-f���\����3
����l*7�9� ���2%X���4���r��ꩊ��t�>2Z��k�j�)
�-�I@M*�8�q��${i���Х`��I�F�o�E0z�f��j�Q��h��1�'��FK���~������M�ː7���ރy+P_��$����(�,kc�ΊT�k�N�x��Dw*U�O�4�N��4�N��4�N���6�G�	Y�DnsJzDJ��H�e�H\�N�3_�R�(D�`��0�(�����+�x��_�_��Pd�S���jѝ�[ti���ک�dz����KÞ�#so���D�J�1�%�К�f+3F�l�T�	b
6���q�U���b�i����i����i��_�'���F9	8�y��j�#Q�WVd�$*�t2M����%�����5-�FK�+��3v�Y4'�@�.\�W��
r�x2���H��Z>��QK�8�=m���i�'���]���x��*��ԩN�m%x��=��Zx܅6q�6�"�T.�m���ւ���T�qK�3,f����q�$>�3����N�鴛N�鴛�l7q},�A\�!J!A:�jȑ�2)�]d�KIZ�ƛ5��|
l�,��
N'�-��u�Z�kЫc��:um�,����YF�M�0"]l9Y괋:���%������Ao��4��'�!Ԝ+qk"�-%�!4�s��1rg��uFM"vS�r�{$�P���(�>E5�lj��}���0:
��0:
��0:
��5��|W	����Ȭ��=�5W��^NTR�,x~������Ϣ4)�NV(�_�����a4�o[Q�5g�;�\����tL�=P�Ҋ���#7�f��X��zYtׂ�+�j�Ip.Dv19��{�i�B��h�@��'�*�"U�ğ��+����,
;fOTy6�q)�n�<BY�����gh�dNK�dNK�gnɨ�)9��Ih��a��q�R��r7�<W�,�EC� ����T�����=C�E]�BQd���N��&��P"U�]�+w��vW�
��y�"�4�l�DJ���D\f��Y9��b�d>�]�Jzr��٫�7�evS�>�]&ϯL����BE�����ۧ�q���q����53���RJ�i�,��&�t�,cK�7
��]]��\�����(w�Fo�L�ܿ�S���z��"Zl��@�a�1�Џ�{�j2=Y���H�=�r(Z�g��T�i��Ml��F��f�b�nd�w�ZC�r��5�y\��)w�Ԗ�t'sgcb�s%���5���oŶ���@�rR	_�s���"Q�����K|�`׀ʿ�}D����-/	�3>u���O��S�����Ю']�����7�1����d8��Grv;(9ԡ��e�G�����j'��X#�q:K�:˰_,�[�OЦ�ao����b8�3r~wQ�4���N�"c EH��Ţ�G�M��m$g���3A9!U�K�&�	���8�L�l�+V�D�L�Y+êxQ�ا">�OE|*�C�aBfU���>�k�t���k��0C���	7?���i��K�-�X��rR���S���+��S�����b��zN�z��o�iJQߦ����3�P��`nX-�9l�t$g�H�.�T8f���N7)�j'�"Y"��W��o=����A�Ĭ1%��#����5L�r��S���T��z}W�5g�-\�ˢ]fB�̛$B�)S<ʼn�>A�F��,��p�o%�����N�T��K����ԡSIē4#y�сT�f��rlcD���x�-�8�������(�ڬ�£z��b��6�O�$>*��؉�X0)M)3�����'����y(b;jDi!IA�m��_��zD�u�I��;+}�H	Kuݖ�p���<����0�$=�=�!�3S/�V`4��1'��*�B��bD��o!��|�68"��,�xh'��]���$2�@
������+�c�(D��C��_�V"Ȫ$�'���o@��jV�L=/"M=��Sw�� �N<uN)E�1gy]��‘$��:��12(+�Q4�� �J4�,w��E��u���L��֓��g�h��2s�*��)3'��A�4+u|+{�	���.�Jp�G80�¿A�����8�`}8�r�'�oMBe��7������-��K� MB3�taW9�'7�bd�%d�/#+m. �o?Ü

\	�<��)��o+�O�֭��P�{�x�	"��'��-�HQ��R�����R>11I�8[Ź��!Tj:%�>�zǂ<%]�F��&(��
�!�|J��D_
�@Tc���I��`2%!S٭}"�J�[@I���Yd����o��@�K�3t�F�� 1I�"��p<��,��B��f-�3�U�\	�HZS2�eIz�%RQ��I|d�R$��PYF�S$6�i��%;9.B�ļh)����P�kz�l/������0�<���f�	B�$�43�-R���8X�)�&����I���aDK[��B�".X��Q�d�]����S��Y�|H�
|��$j�MK�q"^|({	�W���;���RN�[1 ��c�����H��F�Q�|���j��	""58O���D*(`x�n
+���H�R��z�+��I09!70�S8I�d:Ś�O�3��7<	���s�R5L~%�/�|_�&�#5���6jWMб���M�2�ի;<Ӑ�8��K�����,1/�&�G���ɲ�h��-
|F����,�g�E��k�7AY*��~�s<-Od�JͤDKzA����t�y�Ɏ�er�.N68��G�i��]�R��@����L,2<7�m뙏X�,,4pc�*M�.�@�UQ,Z�v���q"+f$�Ff%��鷜SBK�t�΀"��6z�
�0I��ɴ�ıL-e�b43���hiّ�9~�����vC#���A�,�-�D���BWa�n|#��f���
�j�LoYk�P���$o[�XX��ފfT�#�.�R���
���d�/ZaE��x�\F����?�s�;�k��n�u?��8�PoxK�4�0�M)�t8�ӤN�Q�'y�s�B�Ɍ�|��v�)э7yU����k(�����>D�3�F��-?<�"WҴV%�e���'8�)e��p��DO}.��@\��Eg�(�p`�����C�K�h���2O�z�G*�c=�Q8�j�FgI�:��-qyиڎY6Ȱ8��{|����S&��(x�3_eorM�4L["�Ei��5j�P%gK�����p^�x�nQ�<��)U�PmhzLO�f�֯�W�_�ߜ2)��-���c�'�'p�m�/���A6>v��Ӌ��(����>F~��=Lj��!��ks����|2&*ܒS�I2�$�qj��,RW	�%��T �*�����0�unt�G�aHE0��"ɣդ .^S�~�XN�q�mk�(�WH����1�	�
E<Kx"|����Aq�h#*����d���l�o+�F̺�jHIuO�P��kRc@��n��;$�=�x����$�6W<�.�~�@A���(ܯ���
�$r�9#�"ٵ�8]�2<�OV,_k��]��%rݰjFVM{����ք/~N(A��w�	Hx���jr�RY**�$�
�|p��V,@w@`+E����cKԼog�Щ���Y>6F�w�w��Yt{���쨼�W���6�A�dy�W����q���Vij�k⪁���,%�.H\y̿(G�-Z-K�B<���O�|��"e�&��a��3����b�!��S��0���!��Q������.�(D?oڔn@\i�”�+|ii`�:4y��ȁ��”�+!��t��	�	Wd,>sl0Iċ{�ȁ����1���b�Q\�K0�ò`|�%X��xC�zY��
<Ka?L�b{;���Oh�%�3�]�?s�V
A�eh:5�\�m%C�/���a2�n8�&�Q��=B|��f��;�0+q0�O%r�h9�r��g�t[�R�3��s��st!�@N��W;>o��'
��ul�]�A"z�T��H=��h:�hrRg	����R��%�����a�*�\��kKև�4�q�aM�-d��,%|(b"E��ɽ��(m�c-� 1�'H�)����t�)��W��B��۪Ͷ�Jo
jK�rw���!@��DТ�$�?o<��8?���Z�q��,Q�RqLǡ�ĆWCs@��%���M�C�
�"7�Zߐ�m�噃W��F"y&��M;6�jX
�]�N�l^?�H�2;3�8����>7�v`U��#3��zv5)�Z
�Lj��BO�'v�a)V�JpӱZHԳנ���m�?�Q>�>�i.�2�
E~0^��NK�DF%���-�NԻF+>3�eJ�ttב��R�Y�X�8~�}`{Q+��_0u��,�U���p�d0���-�4(��\�M	D�-�#�ʪ�,-M}���TV�[����I�-����
�����A����~��
s�)�NeK��瞄�'y�6���p%ڼyp�"��l�|P7������~�Ev"�|�8�$l��P'��SB��Zq��xfa"@2�EΡ1��~"�%�P���'����4��Y(%�y�;4R�$/�a�Z�Gk��
m?'k&Q@�:M���8G>�X�cQ�E%,���,Ǎ����wV;�������������X�>��{"Z[xEY����.r*G�u~�B�5~*��G$�uƯf�ްr�K㰟Qq���a<��ᑿ#���}d��#3Pd JO���f���(�?�.j�C�d4m��� '�U ev'LV&5��|K��Gjޙ���y��+Mǀ�z�ɂ R��mޔ�GU�l>�F�i�<2���L冋��X�
,;��_�٘M����DM��\��z{̇aC����`vfr����/e�:�K���'z��8�6W���C_z���~��Bd9mG���kpisw.\([j��7�pX�(�#��:T�*S�A�~B����c8�N��q۝.��r;=f�������¤�X�!͇�R?�=�-�K���F�N��t��O�B{d]jf@p.+�xxϗ�(�;R�� ~���}n���U�D�
'!�#�-��CN�����`X�I��D�j^�bH:Q%
0��4���9���נ�m�װ��J��K����N�S�-��|c��,j4��Y3��d�Ă<��e�+\�3�K��F�5��ʽ#���*n��܍T`\�ag�6�jΞ��d*�w!����_�	����v�۰8�sue�
(���rUM���\gc���<2ZB��ؑ�Քk3&���i4S�2�2�)�����������??���_��Gg�љxt��ģ���L<�� g���Ӎr�@�ģ���t>��Gg�љxt&��Gg�љxt&��Gg�ѧ�;�vg��O��vz�>I�ٙx�9��ģO�ow&}r��3��L<�h�^?|N%��e��Jh�}���W��1�_SU$������7���������~���?�x���Q�Z"��/����_��±ˤ%OqF�燿����0�Qqy�⫇��g�+U���~~�ʫ�,��󃿚A�Я�x��db}�e�4
�esn��j��Y��i�2��}���òf�08Hfl4�"���t)3
Z@�c�˯G	�Ąß�#�	ZSa�m;��
�X� �fb��w�Wl޾����3?�}�.����P6��/�}E������̣h�P?�2��ۃv^}=���}��Mñ<�~��+���F��8j��v���*���$�8?������a&�q6H��΃<�2	�KpXeu8�cy�o��,�*���P&�/�o,���h�;��͔�XJz�M���TPO����v�V�~�}�m�<�|�_˃��QU
}͔[��
n{���4=V���4�?'�3���?l�z��ɨ�
eF�Ԩj��'���;�$$�W|�p1/�եN����mPy�_��L���*}���?Hs�����&ȟg*�D��!*[«��qZ�o��A��)͏��0p>"N�Y�E�&J���
#Q:���в9��cs�/2q��2�a�#����5�����43�͌�f~�W�*�m}����3E_����U�
>/�C,Z�"��à.�����
���g��	�!;:ţ6��a�S�&�^��H�Ij�4��YVH�T}�-��)�j���bnD܆�[5M�m���7՗����d��5zs�u�/J�Vپ���"d�k
����!,�nϙ���� mj�ꠝ�F��i�4�~S�*^��?\[�pe��u�f�l��o�0F�j��*S�u�N�a�����+��v�ҷ�`�i��L:��޵��7�R=-�M��y��ib�7by�G�������f>��a^�f��w>0���=�׵�F�W%WH�K��U��,����G�>Y:��b$��A�/�U������P^�?C�j����L�T�^7L
�oeF.fI�?~uFӄ����3�
���$�<�_���y14V���f� W�ᩙ�� �d�V2~��촋Ҷ)�b��=z���z󨩐:�I
.�r��,V���>� �h0 =�>8�C�m�0��0@ֈ��7�����ڪ#kk������X�y�Y�-ҷh�Ќ)uk[ ��.R�*�w^[C��:b��(V[�'\������r�y��m���7�
������[ �r#ھ^�
��rw���zSc��>��Ӽ�aB6X�-qMtו[����;p�R��r���in�����ԃ=�� m�婻M}t���O}^�y'~̫�
�̊�k�p�y�̼~B6`�Y4f^��x�3�@:�uB�ļ=5w����M��j�h������6ua�~�;���Ǽ�iv�����дnB6`ޙD�w����W 󢯰7=�VȽ����L��y�b6�S��Z�^ m�婻M��̴�ԛ�
�Rd����C:/ZqU�4zN��jůB~�{ᇞ�F���?ѽL֮��ʇ���Aք��-��]}�n���I���6��]�v��G!��%�`�n�����nk,~ޮ�4�	�����ꤑ@:i�̬�4��{I��R�5�#��ԫ�S/�6���ݦ^�Q7u7K�Y-ܔF�U
�&{
~��+O�?$���Bo'ǮI��]�4���ԧ�]�=z�g��|*��[���wD���Zz;�3o�b��u~�O��	~�Or/��Qs���|jS�ҨN�@���Sw�z�O���,���Z����פQ��B~�{�W�S�ެ9fUyS>!��å�O
���ԧ���x��8�w����CN�02G�цO|Ǘ}C�<q�'�d��0H'�t�f��Q��KuԼ�gjb�N���:�iS/O�m�EuS7wF�&z
~��+O��"�:�f�z�nmb�bWEOŮ@*.���aW�Q�޾��FK�0:�GrG��r@�?CԶ0�Qn�w�g���e�Q��KuԜ9`G��7�S&Z!u�{M��MF�Z�0��u�G�� ��ԝ�+¨Co����\ډ��]=�
)����]Fz�R����A��8�?_>�A���,4�Aa"�|xJ�
�N��"JH}�@�u'���u�M�}��#V2E�4d*�"S��2E�l"�^MVQ�B��� ��ԝ�+b�Co'd�vb�aW�HîB
.�{aW��U�>���L�'U9�7L��s~���yG�t�3�ռ�N����K�
��t�"�l.�N�*�*.�p)O�
�"��p��iv��M�&�
z��+O��"�v��|A
�*�*rRQ�O�
�"��a�ɜ��E���H&sD2��{w�74K�%3��3_�I�d<�<i��A�%���y4��ɘ�K�C�t��S�åH�-\�d���d��59T�+�=y�n��԰�Y��F�L�JFRb��@PL�Q)O5� ���o�o!�2#:���tY����<��Fݗ�@ZP�gW"�mNܾi�2���:I$�&t'�
�I�h��Dj�{I�Mj���m��!SPCF 2���)"i�;x�~UU�
��O��~E&]]��p�Ұ+"�a'T�a\�S
ro�����ҷ�J���!B����X�‫k�T@@!����y�K�EX%��뮬:�.�Z�9%�W+r�P�GR����
r�r���juL'.B� _�dA^
����`Upn��+z��~a	X0�B�`"�y�~�d���6�0��n;�2
�I�LRP�RT�1�g�^$�l[(��L� pK�4'(5((@C�<s�D(n��~-5�=�� >�K$�ɇ��>��1�4Ҩٖ�xu�RtP	%�R>%�'��2x=(�p`Вn
ll\䍹=�YGw&��.��7i�s7�dZ��A蟐���A	E%2�\�.���*�h4���@�+N�T<�Ơv��8&��J�c\A6`M��"/ry�
ȃ,��<e�� �p����-�U&sWZ3��1�R/���b��p�MkE;�^l*��&�K��(��=f��
�c�䤩�2�J�K[ɶ�1���A�-��my}�l��d[^$�� ٖ�ɶ�1���A�-�*��� ٖ�c�Q*�n0J׮�8q*��*r�ZZT!O�Y�s�S���Zʇ��*�ȥ��tO	D�i7�#o_��.����Fȥ�h�tO	�<��}�*6R-�:R ��0�{J 7�q���<PB|=R ��yTȍy\y�0T7��u�@.=�3�{J 7�q���y��+�?7��
�E;>� �)�C��P~6e��T!~�#Cų7 ��M�P��j�V���b����b$��Q:�rU<�Cb(�ـ���F(�,#�B
5�c6�;�{8�,�2B���MN��}�"�oV��h�e��ȟ?\�@�
��U��(p�QM���p5���QX�FU�1��ը��Ǎ�U�ʸyV�*��I��<�[�ѫ�rq��Դ(���RT;:t��%
��QҍBE���
�F�D	�ݨ
�F��zT�t�P�����Qҍ
� �FUH7
�cP�����n5�Y���6JSW���
ҍ���*�e,��n�*�U�����A`/̉	��ѧ\ �
�>-��[+dG(��O��U�����e��&\�ߴR$o'�n|~�Xco늼�|�5����"FXco�ф=�6A�5��oO�MP`����zD��k�mѠ��`���5H5�{��s�5�����ֱw��˨ֱw�m���;Y�����z'�=��APU_���r�q�Yt
m��y)��w�*�<��\*Ģ7	1}y�A��kyR��ʙ՘_�F�[j�W9o���i�ؽӤ#�g�hgv�v`��EX'͓5eaFX'�c�`e��yl�7�:v�*�Q#�cw�/�X��o�;\��}��=ؑ�+�el5Φc�`WlW�zT��*���e/���Wy=�:FA���t����,�rQ`�\�$���g��3J�`�42Jg�Q���?�)�M/�
=�R!��X��S
r�Q�)Eإ[-FZ-Z�g�����#L\&�X�ziz~���u���9"�QSX�)M]ktj8$�OAe}�*,��1�k>4*I$���g�b�
�(�jq�����l��d�����f���qo0zҡB7
N�ť7�d���\\Cc�y}�:Y5ޣ���,u�>+��<�𤣊y�Б�vk���y4����ڗ�y��[-%H���]���mJA��wG��`:�Ӊ/$g����.Vi��~�T?��^���Wd����}��_�����g�ó��n�3�6*��j��v�?p�@t�$|Y�g�,�_3��9n�y7�^	�����z~�;���{� +��b+��jŗ�ʳ���갲U(�4���Q_�U��LB/7��rH���H��+��zUcZ7�Z�����'A�5=u�ou�Ŗ��{2f��jx������`�/7>�M{6�z�Håo��u0"Q�*Y48O)L���s���R+M���`�c��Z\�Z�-
�R�í�6vJfO�ц�-�?�,�����ά�M�93�Z�̬��k}}��ll�մ���479�Y��+�Ȼ�S����t��[R���AhoW@��Qof�T��IU��޵!�
�/��
�l�[]K�W��A�ˠ��"�C1NKüV�W�H<�U_�}�'Y��͒���e��?C?M��k�h����y����7z����{Y�\��%zE�2�Zc�AzV�hB�y�C�E�l4�ȥ���{*��ۉ��W��$'ǩ:R �"��^ߘϕ���c�2�,�K�� ��s�+�|�’��u�@.=D���Sa?ܾ1�+_�c�q�@.=d�O��ϕ��q܎�)�K)����1�+_Y��!��҅��ړ�6��&Hy
�)�W8��B\ifў4Sc"O��mI�W���c�6�k�2c�{iU =��7tO�����Wd>"��X\��x��K����<�(���бB�t�lSS�BF�+���@>��k(�:���Q��FU%2��~T�_��w��QU��q5�
�Q\�FՍ>n�ը�i�mԏ�i߳�H��^<t�/��%��Bfє��F5H7
��ף*�eu��FUH7
���~T�t��=�~T�t��^���6�.���mT�t�4o�nT�t�*��
�
T3�d�FЬ@.
�6�kZ!c��k6ԯi~w��{L?�$˼fa�A�iG#�1H��GXc��I+6*�� ��Dh��� Va�Պ�
�1�E?��-��b��9�@.
�dZ0�<U!ǖ~�E����6mވ�c�gI�t,���M��,9�I'{�r�ê�֜�1~�cў�XǢ��a�.��`��"�#��a1U9�:V3�?�`�����LTe�0d�45�2�<U!/c�q6��a5?�l׼M�YA.b�E��r}~�Sx�-�}���������b2�\Lf����`�\�x�ur��a�u���.)�֋�r��V����u��ש_�h��������k#�[lc��X��-�l�����wq���H��ȄXEk)���Jx�ި�(q\]��������[���:2}d�%��K�^���ig�л�����,�S���F<8?�s�����O��?����ht���n���^q 8}���7�8��5�Ǧ�a��^l:��*��W��u�؍p���t��}=?w=:]b]t��j��7�.:}�]��N���m����N�P�ݚ��Z��O_���ag	EǤ�)�}yhۯ߶z��;��軳�=a�Xg��>���<�t4,�wի�t|��R�b�l,:�-[�q#HYC�K-$�}����Ę+�Ô]���p&���m�s�3	gt\A�#Am��7��ݖ,�Zt�Nb#�[	�H �܍@h�c�����و����@�c�p���U��z"�z�ѕ��HFs%�@�F�|��R�mN��Pof�5�[sa{p��5ʮ���=�7͇�#endstream
endobj
84 0 obj
93459
endobj
4 0 obj
<</Type/Page/MediaBox [0 0 612 792]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 41 0 R
/Font 42 0 R
>>
/Annots[13 0 R
14 0 R
15 0 R
16 0 R
17 0 R
18 0 R
19 0 R
20 0 R
21 0 R
22 0 R
23 0 R
24 0 R
25 0 R
26 0 R]/Contents 30 0 R
>>
endobj
7 0 obj
<</Type/Page/MediaBox [0 0 612 792]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /ImageC /Text]
/ExtGState 57 0 R
/Font 58 0 R
>>
/Annots[43 0 R]/Contents 47 0 R
>>
endobj
9 0 obj
<</Type/Page/MediaBox [0 0 612 792]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /ImageC /Text]
/ExtGState 68 0 R
/Font 69 0 R
>>
/Contents 62 0 R
>>
endobj
73 0 obj
<</Type/Page/MediaBox [0 0 612 792]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 78 0 R
/Font 79 0 R
>>
/Contents 74 0 R
>>
endobj
11 0 obj
<</Type/Page/MediaBox [0 0 612 792]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 87 0 R
/Font 88 0 R
>>
/Contents 83 0 R
>>
endobj
3 0 obj
<< /Type /Pages /Kids [
4 0 R
7 0 R
9 0 R
73 0 R
11 0 R
] /Count 5
/Rotate 0>>
endobj
5 0 obj
<< /Count 4 /First 6 0 R /Last 12 0 R >>
endobj
1 0 obj
<</Type /Catalog /Pages 3 0 R
/Outlines 5 0 R
/OpenAction [4 0 R /FitH]
/PageMode/UseOutlines
>>
endobj
6 0 obj
<< /Title(Introduction to the Pdf995 Suite)
/Dest [4 0 R /FitH]
/Parent 5 0 R
/Next 8 0 R
>>
endobj
10 0 obj
<< /Title(Hierarchical bookmark to Stamped Document)
/Dest [9 0 R /FitH]
/Parent 8 0 R
>>
endobj
8 0 obj
<< /Title(Sample Word document with links)
/Dest [7 0 R /FitH]
/Count 1 /Parent 5 0 R
/Prev 6 0 R
/Next 12 0 R
/First 10 0 R /Last 10 0 R
>>
endobj
13 0 obj
<</Type/Annot
/Rect [52 642 83 652]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
14 0 obj
<</Type/Annot
/Rect [159 642 191 652]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
15 0 obj
<</Type/Annot
/Rect [36 609 71 619]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
16 0 obj
<</Type/Annot
/Rect [177 587 208 597]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
17 0 obj
<</Type/Annot
/Rect [183 575 214 585]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
18 0 obj
<</Type/Annot
/Rect [495 575 525 585]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
19 0 obj
<</Type/Annot
/Rect [125 434 156 444]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
20 0 obj
<</Type/Annot
/Rect [289 120 377 134]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
21 0 obj
<</Type/Annot
/Rect [371 91 411 105]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
22 0 obj
<</Type/Annot
/Rect [259 642 316 652]
/Border [0 0 0]
/A<</URI(http://www.signature995.com)
/S/URI>>
/Subtype/Link>>endobj
23 0 obj
<</Type/Annot
/Rect [36 499 101 513]
/Border [0 0 0]
/A<</URI(http://www.signature995.com)
/S/URI>>
/Subtype/Link>>endobj
24 0 obj
<</Type/Annot
/Rect [256 120 377 134]
/Border [0 0 0]
/A<</URI(http://www.pdf995.com)
/S/URI>>
/Subtype/Link>>endobj
25 0 obj
<</Type/Annot
/Rect [193 642 241 652]
/Border [0 0 0]
/A<</URI(http://www.pdfedit995.com)
/S/URI>>
/Subtype/Link>>endobj
26 0 obj
<</Type/Annot
/Rect [36 543 88 553]
/Border [0 0 0]
/A<</URI(http://www.pdfedit995.com)
/S/URI>>
/Subtype/Link>>endobj
29 0 obj
<</Type/ExtGState/Name/R29/TR/Identity/BG 27 0 R/UCR 28 0 R/OPM 1/SM 0.02>>
endobj
41 0 obj
<</R29
29 0 R>>
endobj
42 0 obj
<</R34
34 0 R/R37
37 0 R/R40
40 0 R>>
endobj
28 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[-1
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�kh�D��
endstream
endobj
27 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[0
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�c`�
endstream
endobj
43 0 obj
<</Type/Annot
/Rect [201 76 324 90]
/Border [0 0 0]
/A<</URI(http://www.wired.com/)
/S/URI>>
/Subtype/Link>>endobj
46 0 obj
<</Type/ExtGState/Name/R46/TR/Identity/BG 44 0 R/UCR 45 0 R>>
endobj
57 0 obj
<</R46
46 0 R>>
endobj
58 0 obj
<</R56
56 0 R/R49
49 0 R/R53
53 0 R/R52
52 0 R>>
endobj
45 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[-1
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�kh�D��
endstream
endobj
44 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[0
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�c`�
endstream
endobj
61 0 obj
<</Type/ExtGState/Name/R61/TR/Identity/BG 59 0 R/UCR 60 0 R>>
endobj
68 0 obj
<</R61
61 0 R>>
endobj
69 0 obj
<</R64
64 0 R/R65
65 0 R/R67
67 0 R/R66
66 0 R>>
endobj
60 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[-1
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�kh�D��
endstream
endobj
59 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[0
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�c`�
endstream
endobj
72 0 obj
<</Type/ExtGState/Name/R72/TR/Identity/BG 70 0 R/UCR 71 0 R>>
endobj
78 0 obj
<</R72
72 0 R>>
endobj
79 0 obj
<</R76
76 0 R/R77
77 0 R>>
endobj
71 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[-1
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�kh�D��
endstream
endobj
70 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[0
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�c`�
endstream
endobj
82 0 obj
<</Type/ExtGState/Name/R82/TR/Identity/BG 80 0 R/UCR 81 0 R>>
endobj
87 0 obj
<</R82
82 0 R>>
endobj
88 0 obj
<</R85
85 0 R/R86
86 0 R>>
endobj
81 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[-1
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�kh�D��
endstream
endobj
80 0 obj
<</Filter/FlateDecode
/FunctionType 0
/Domain[0
1]
/Range[0
1]
/BitsPerSample 8
/Size[256]/Length 12>>stream
x�c`�
endstream
endobj
55 0 obj
<</Type/FontDescriptor/FontName/UKXNOE+Times-Italic/FontBBox[-169 -270 1010 924]/Flags 98
/Ascent 924
/CapHeight 668
/Descent -270
/ItalicAngle -17
/StemV 111
/MissingWidth 250
/XHeight 442
/CharSet(/hyphen/a/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v)
/FontFile3 54 0 R>>
endobj
54 0 obj
<</Subtype/Type1C/Filter/FlateDecode/Length 89 0 R>>stream
x��UyXSW�k;�TRۼ7�֪P���e�TE���h%���fBB�B6^r�HX�=�DW\P�:�Zꂊ�W���t:���>}�f�3�|�7��{�=���;lT��pƧ/�HZ�(.M��to,Ջ�8f"�y)�y9�}�mz�y<��2��~�hV�Ҙ9�M�����??��R���9�MNO];%..~�Zc��e�zr��ٳ�l�o	�H��29	�B�QR*}���H}.EJ�
�\�*y�Ҥ%��%I��JEi�
29?�F���P*5���������VI�z�Z�K ��H1��P9r�2�P�A<���J�N�Τ\Gʴb����z5)W�(�%#�ѽT�ғ�ɕH�L%�uz]�V�ѓ�cr��1�s��:9�j)Ҕ�s�G��Y��U:RO�#~�)R"�ib�Li��'!���*�/��I-%k%
J���*��G�W�b�Faz�V�D�g�r��RH����|��V�Ud�z6��L�d�
��|Z�U��l�_!1�r�
%��t�zy�A!V��a��D,[��`��%�j�,
[��c˰5�Zl%�K��b�Q'a��2�;�BΝ(�ц諣ڹӹ�x	����1�(�~�d�	�2����8�r���-&����&�����2���0���4�����ݚf���ط^}
Ut �n(y�,4��U�Ap��>O� �*��Y�xp����z^Sa7�ܛ�
b;�˿e͠-�/R��C-�{���2���۰�r4|�P��,�_�T��K�����h��[��M5N���)q.����Ʋ�5n9�a�*v*K�����'����vY��&Y�	[nF�af�iMf��3�H�{ᓝ����W�/SN�#�ڤ�6��i!]Ci��A���P�������w82k
��0���Wp�	|#���+�B�;+�Uw±]0�h���8��)�]c�����˜S�2���dlbg�:��j%g_`�a�٩��Y�v�0H�3�E@��4u������,xQ��[c2���-��4��u�� ~ᢨ�����;����6�������>�L4���*�bE�!c_�ec5���]*�F�-ˇ���&fCaE��n8<D4[�K�'��;8sxS_�̼9)D��
|~_@�s���>D��^��υ�Eo������Z)N�T�����q�n8�}�h<s���T�3���`4^���!G�0YaF��Jw��	Ԕwm[����k�p��e�*;���N�sr���>�HĪ�4�����x�ڬWe
%!ͥLo𱰃͉07:���>e�|�͐�ox3��OnN��YV����֐+�S��`6��ݚ�__���'��p!������4�
���yiQ��z�5�������Gڶ~�$�L��lT���xc!3��9���Ἲ��u
�uԁ(-)-./,���^W��a����"�"[��lα�bO@%X`ux؄�1;J���U�&�%�����n�w"p����q�T�0�;����?3E�ģ�'�i�7WR�٢g�{cm���"9�Tt�Znk�L^����>�w��e�omڶ���5M-U��E��j_��?��õt�&�����]�|_�WI�zn�Q#s�)9��n��ɎP]m���nW9z�Nf&
ztrm��r-�|9�����{�??O �АE��&���FS��
'	
ؙ�Z^ym��l�%a�W���ډ7Ϟ���pp���3w�V�+���)}�RT�����sZ�%��c)zY�-
�'.�� /��?�؛Q�T��ʼMi�}ߚE��Jl��f(Ĕ�Klv3������su�D��
C`ޫi�,K\ʾ� �c�4Oi�U�Z�����ա��,�C���w>;�
Ę�0�jW��o~܍��f-��%f"�ͱ�w)�M����z���+�j��~>����������\���M��n�$c�<���r;���Ƈx�6��G��C��N<?bn=��v���Z�~��lB��|�H�A��ͽ�����0=�W����<���^XXT�8�e�����e�r<�܁W�$c-��~8���'mvd��b�)n(���;��yZd`�4ze^�������]ߢ!FH�DF�G$v����`���ˊ,{WIh[����
�ϝ�Ke����C��g�M�9*k��J�.�'H��\�.�%f��
O�[�@=�Du�K�WbM�.90�zc��'a:��H�b`���z�ξ��w�#��f�EC�����u�69����zZ���lH��WY��E��Z΃�sK�2��j0�l�fQ���	��ƥlt�|E^����o*����I�<iŔ{��������8��前E&�b<e�ʂ�KÄ?�/�`s-�S�l�\�.����L�ܴ�`_����{��G(�+���n��'{�hf�����	3�L�b$0JPT��J��Ieݡ��~��>�>���`l�����U$�X6�]ξ�hO�'t�����V�C�����z����U�\xY��ۨ���u�3���4�B�s��O�yp�c��L_g/Z��h��ρ�^��܈~�U���,�K�2Ca���,�Z�A­���z�ֶʍ�"�h}^v�b6��Z�iЀw��I��8N��Xm3��*��cZ�\Ev�t�'��bk~�wά���?p��.D�e�#�}vk%F�sz���KG�l���b��k���!-1�b�����w�k脨��;ކi�8��X5ϲ�5��a&17�yM����b��(�0
endstream
endobj
89 0 obj
2844
endobj
51 0 obj
<</Type/FontDescriptor/FontName/MRYOOE+Times-Bold/FontBBox[-168 -341 1000 960]/Flags 34
/Ascent 960
/CapHeight 692
/Descent -341
/ItalicAngle 0
/StemV 169
/MissingWidth 250
/XHeight 473
/CharSet(/H/I/L/M/R/S/V/W/a/b/c/d/e/g/i/l/m/n/o/r/s/t/u/y)
/FontFile3 50 0 R>>
endobj
50 0 obj
<</Subtype/Type1C/Filter/FlateDecode/Length 90 0 R>>stream
x��V{Tg��d�j�69YI�d�V��j{��V�o@��V�<&0�3�3!<�~<�	��/E�j[��[��m��Y�=m���o����ힳ��3s�|������{E�q�H$�l���*2�6P��Mz��5��"⦎㦅����yO�B�a��>�)&a�S��.��"��o��/��S!j����wcfGF�Ya2g3tr��|}��Ť:����\I�t����?dRz��@-s��EZR(RG�)rEt�ֵQ�Ɉ�Q)#Ũ�dL�ZOk�
��2��lRgbH���1���6ٹ�XRE�fJC�?QV
esH3�h��I�%���BiI����}�V�י��̘x����GŘX�ah���#Ƭ|g쎖�E��Ҽ�4�xO�I�!d�͢��,i��!��"�4k֫����Qf��BK��>�d�d��S��*��G�W�*�Y�=��i������Q�A����&��HF��ȍ���0����r��0,|C�Q�Ѥ��d6�Bo^��V��7�0�Ul����b1�*�l3����c�b�7��X<�{l#�[�Ea+�E��'6���@�U��l�q�B�T��541�)�{q��j�	�Bh�S���dB,��L�0�܅&K���%3�S�d�S�Ժ��Kem�Qrz�nl�WE���ʮ=�`1bťN�����AHc�6ƕ!�y�O���©d(���/,��v8��(.|ܘuP#���@��<܏*Y���U�rT���M*8	�ώ�ٚ�frGQ��T�W*˝�NPE�g}�ΜN%v����_�Ңhi�u|gs/�7u��vTa���$����3P	P9Y�S�Kmf�Nj݅@E�>��;K���i���ᠪ���MH��׷N9�dެD�8��һxg��VփnV�w�?\�h��)¸��˜��G���5(��T�j@�wN�������R:<��m{,�ѽ�tp��h꬗�+H�0�p�\ǭʰ�+A`X=���ἐ�7��F\8؜o{��`�W|Ima�NpQ8����t�Er�h��m���ňo�x@1b�At�mI�_A_�6�[��C�ȣ�61_��n�p�Y�u8+Vq�FLGS��yN��'?�P��?!��\/�����Y	�b�NÙp垁A%�{���Vn�9��/0.�σ_�N4��Ճ5�xbeA�w����Rw1H$�z<��4n1�f(�A4�/�8�)�>����[A�%Ӟ�x�c(����.;X�Q)`F�ot����E�f�>;	h�qO��E�]W	��|�חv$�h�/�����4�"��C�����*�=]�@;hέ�;���-D���Q���|��BJW�Q`�&��%u@3�&u�}gO�f?Uek�܄��k�Źu�f�DZ���UJ_륃۷R�5�B��08�^ԟqtH����4��>�,�`\&7]v��~�yw�\�)h�µs��V�r/�\З��YC��ޓ����~k��He�/m�MC	|�ww6���X'�cVu��{�������'�^�z��;��}`j'���ˤ7�g��&ƥG�Ol=�R]�ު�Fb8�����;ך����CC�������;�EAQ�P�$��dpF^�WRj%��"יZg���ڍ�K�!Iy��΀4BkH߱*��^�„�u-�j7p��ݵ��lg��xtq��umOD�r�~St����}m�̽����l�N"lX�ϝL@r.�����;�;�lP�*l@��H�Ǵ����6o�% q�W��bi/��*m�+����.q�
��Ƃ[�p�A�*�t��z�[pUy*]�Z�3��'M_��M�T������'��]�u��h*C��"��%�8����������\����L]���	�&{S��}����Q�݆�$��<4S���
T����v�Պ��<Պ�x�����Vq��%���vS���&	-i
��a�I�PK����E��3ɠ�����Wf���ݞ梦����"��
pb��r�}�?$��ٶc馭�S��|8?�s�0"�_�
Ը��ԕ�-��9\��WPr;�J4��]pR>�}�Jo�UwHљ�5���ukx�vD_�+�B8O���m9���
�+ܹ
��Yq���^4n�����r�ViP	ԌZ�	��~�dOo�GؖW�J(����&��?��F]ҷr
��Գ�`�O
d=ե�j^�vV���C�����m �@�piojj��4E��;��_�?VT�f��ߟ𷁃�|?�ǔ{�O	�>�������c_�6���tZ��*�K���7J[�:Z�a�/:-�G=�H�bY�2o6�#��ɢ��ʞZ���A�}������%D���i�<q�Oe��eee�y~�۫�����Π0�l��j?s�����X�`�*�e.�"Zڽҡ��Q��8���-K�$2i>�����?��PQ�e����#�xҡ��2�>����u����-J�'�}��}��MB4#�^�)i �̖����p�������GZ=uG*����S�����E�8�y�&�V�K�`c�@�<l�ֳ���X���w
j���:۳���q��"v�E����67��Ͻ-M�MS�z,ѣ�]m/�	���U�"0����6�8�acF]Uv%�:�5��^/�dl
��,���)�
`H4S��"���q��"���њ,`ϊO�!F~��?;wB}(�ȡ|�'8*�>A!��r�:e��7���5h2R֭W�;N�A^��[��>�SZ8r#>[�)zP�;�4�GO���n9�{��++x}u	0_b�c�}�:�`d8��>A�8�Ի�F��_�6�>�.�u4m�)#߅��a�������}�������e�8�&��	��N���I�cؿh�*�
endstream
endobj
90 0 obj
2961
endobj
39 0 obj
<</Type/FontDescriptor/FontName/VSGOOE+Times-Roman/FontBBox[-168 -281 1000 924]/Flags 34
/Ascent 924
/CapHeight 676
/Descent -281
/ItalicAngle 0
/StemV 111
/MissingWidth 250
/XHeight 461
/CharSet(/space/exclam/quotedbl/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/three/four/five/nine/colon/semicolon/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/V/W/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z)
/FontFile3 38 0 R>>
endobj
38 0 obj
<</Subtype/Type1C/Filter/FlateDecode/Length 91 0 R>>stream
x��yyX���C�<Z�J��I�jݭ��b��kEQ�%�		$@�B�6 H$,�#�l�/��.�U����i�;-眷����7���=����+���of�ܿ�AxM 't��{�.N���K�����ϋi_=g�
�E�~����
�_˜B�'us^��m�>:���/3ZÌ�!A�.^�d�T�JK�OP�Z�z�0Z%��p�H��"|���2�(E�L�O$*D¸D�H�yo@��=ۅ��	n��Ң�€�hqb��?1F�"-�Iӄ�c�)���Di�|�p�\%��D1�x�H#�y�e�4I�\�������(V��
Sb�鱞���q��P�&��<�MH�
yLZ�L!�;l�⌊�(�g_y"J���XiL��6�SD%�ȅ
�R��'Z$�M���Q*�/6%KK?B�<1%��ݗ�D�Qi�b�|ܮ���'��[G�db�Z�ퟨ���q�$J����qN�{����� Q|�8*�?G~��A� 6�oT���ޤ����,�ݒ�5-~�<!h�"qߎ���!��P�$z�;W
�������{s��濽� �����b�:A[�7��D ��XN�#����[��>b1�&vo���b!J�"V����?�.F�&6��pb���#��$b&� �����ML#|���9�t›���Db#�d�/9�x��9�k���a�2�^�*a�Xy�����/�`��ZH�O�L�iRؤ�_���d��S�Oy25t�ik�L���ܗOM_<����9�3V̰py��s挙�f��t��|V�,Ŭ�Y�}^��\��|���2����<N�����,���7q�"�B�N�
V�j{���K@KHp��xTJ�P����lׂ��X�)[��M�'@Iw���&���8�a��n�h��{�b�%|���>�l;�߅��gE��ȴ�TY�v�0�ȂNv��*�5hy M�ZH)a99��6.$a�Pk*��R���ZJ�r����Q���Wh�7	�VD�2�#�*y��i,��(ZK6���Ր�
},9NIKxu<��FᯖhSӕZ`���R�U]��"3S�ԑ6p��%8��.���;*m��8��=�[3��׸e[Q%�Z*4��AmX��	N2�DS�)x�<u���P��;HD�:�3)�I(�W��T�?F^�xH�޵���4P%����{4��0���rn��xy�����x��n�!�&(K/�֪�����pi��U�2����`-�f>Z�'��ۻ�͍�涫��ߦר���|��a��K�ᎅ��O�[����t��J�p����ퟕa� Q�X1ʢ�Y耒�U�]6Qc�H0W��3�uz��D�~��$,;�r�����}��~ңty?��#�ArgQ��".ǩ$�V�F�O��:�_>�IR�?��ݺ�c���R��[%Ͳ�����l�uG|����?z���6�W�o��pn�/�,o��
B2bcɪ蜝�:����~/t����bsĐ����ȥ3h�g�1�w�/WUb7g��<�:1;P�φ��B��L�I�ZvŧN�5@A>���4�����^���A�wLh��p������
�
�����Yo��ftR�㫋�+�ux��ظƾ��\��O'o��{l���$l�)�|̄ύ\8���T�|@��T����u�q���E���r@�T�h9)�U�೓���f�N���>yL���/`2�Uf�1P~�_�i�u���ϟ>*�qlpg{�����C�8'h��Hp���;l����z%ٛ��sf���`7��#Ǹ����+ك���w��Mr��=�;�;v���>�s��q�
3XlsF�>d�ESv�:�� X
�Ļ���-hXֶ�lе~�@���/)U��-;%~������� ��;�'�y��e���;��R��'�HjԵ*(1v�S�y�yӟ���VЯp+���PǬƃ���7��
5�%9�k�
E�J�!�"����&���<���o�L�< ��!	�`5.�m��=���B�6�n�{B�6L�d7�^��돤�A�Hk�eU����:��sn[�:$݇�ppP%J<-�Vc����?ݿ
�>z�p+���F��
�����ʦ�A6�cԏ���9h.:��c��@��oc����s��Kʓ�k�۫�c�ê��ڗ��m�ܟ��NS(�B�!p�6�}�p�/c0��|�$u|�t�E�����f�fC�,N�� �6�u�q�+a	)���n^�<�I_�~1��+�o؜9J�"��x���^Y��fV�)�Ð��M�^����@�;�����ա��A�i�o=Y�gq4p�~�{�YR�-O_��0�����ŦSC�3�>�f>�i548�જr0@�?�M�k.���9��$���̖�Nn͸	>ƴ���ɍ�����)��;`T�k�7<�i��W\�ucJ-�:��X�WmCwd��ݡ�C���Ȝ��5����-6�d�o����\m1T������r�`}<������)��������	<l���:�������W�3�N�R|�6����l�ƶ�`U�q��E�_k�8��\:ë�jm��7�]��LmQ���B$�~Xѫ|���}����#r�:�d� ��d͵T�
���
8uv?�jlSt�Ơթ�9�q��4vKYY3��q��kjޢ����묱6����ȋ-J��|��n���L+=��TU�hEV�YHn2��c�LNr�E��)�Nv�i.��5V򫵕f;��5-��D�̷���ghz�.@����n8�(L:^��������I'�>����L��2���>2��4P�6n^��,�8I�T���ܤ]&�U���-�eI �
}���M��5��88�т�e>��i��;���+
���*�����lo�lqv�3�5�A�A!��ln���i@}ߩ�\�Xo�5X�g���ܫ-]��MjI5�6������$�u����\�7�h9��b^H��f
fd���R#s����3�}���	�q�YW��=
��y䗠FS�N�<c��M/s��
���,��	��̓sXvAA���0��Xl(�85���%��k��6��y!��ԕY#b^d�4,Ql�W�3�f7�.SYh��m��c�9��QЀr���9���GWw�� �#i��(h��_nK\�!�|/xD��o�g܁ᶚ�:s4~� �v�.�B������6#ȿG]x/ J��^&s-����}Y<Y+�,)��R@
���%cW5g��b'Xf����E�WO�>�:O�>���,���c(��ܲ�Uu6w4��I0��Im��5y����9�$���`��
��ن�/��=�����a6�΂+ٜ���)����N�rdixFT��(5���`��ѿ���s�h8����U����gv��лd��f�j>d�=?�|?t�?t�F�'�8�<�&���C5�s`<+�mV����,*�a������h>:��yå��m�Dpx
��.
F��j��J)5��ѓ;��E�qr~�q���~gK[���7e��MFQ𑈬<���`2�rg���KŹ}]`�j;r�to�N��2#MmL�8M�x��<���������r�)#�7F�Ż�n��7�Y�����E��8�>4$�l4l�$^���Y�c��I3�2�B*�W��6Է�(Rp�9��NwӨ?���j�řC���5���0��G�S�NG\\y���NJI���~�fh�
�':}TT�+�rjG��M+�/©�|�
%���WQ���3j�˄-iz�r�|!��~|���v%j\�.��81����';R�p�W_xz��ߌ�K#L(��CIp����v%��Ti���`Կ�	�v��{�]
F�Kh��xځ���B�� 7�^���}�1����7�}Ȁ�*|�V��N5y#���)�'�4W�5���z	�b��
85�zCK��wh�!
��kO�}�s����?8��#9�%g�ݕg<�2J96�5N2|w��?��7���TX�9��E6�k�P�P�F���i�L�Q��`���T
ڊ,�����}�p����k�/a��|\�3��F�u����]����	��Dk�5�.�@B6�W5�	T#�ױƮ��h���
.�e.j/�0l��
:��|l�6d��gޟ:�=r���|�W�`k��Z��z�����N#Pc�1ϸU�̃fG�T�N���e��p���-����ɨϧ�l1Yr�Te9e�X��8~��I���B�H�~N�}\oG�\.E�Ӧ��e`E����SouN2�(��.�'�����[�y�F��R��f=_��)Nv�E�:���P����n-�9K�X�;�-�xaeЂ�l�V����>��W,ҧ�f�$9��+��ߍ�1iHWq�HU�W6�FI>4W���X<�neId���p�QvR�a��O���wc�i���B7I����pd���8�q�b<ϝ/p��!��l&��� {����
�0����֓V�r���ɫ2�C�J��L�E�,��<[�
�x����X	��CC6��à/�ɧJR�-���^Մ�����+1���VT����/>��R7ނ�o�G��.�L����7~6-�VRI���bnNҿDo)�G��~�ȸM=��p9�
����.��������s58
L�!đ.�UӘ�}����+ܙ
�u���B�����X�����)!�=$Z�[�sD���MI'�(�Pݹ�|�}imF��1|��^<��ĒZ�����k���J�����
�Q����7ct��".�R�/���d�dz	�?��A��I��4'����PY�(”�����vp,�q�a}��Qe��7n�m'�τ��l1Ȭ�0��k8���V�Q�s����f�n�ק��s�z�.S���;pحmE��M��u�Ds}��DMI�<
��$��R{��iw�i�#a����<�2�%yJ�G�+����|�.�5��R�yJj�Ȋ�2��}���4'Z���)�E��r��z�a��PC�	X�Hp�b0y��Iij�
��m���À�\+��x����$��L-��j�q�&��k��RC��ˉ�! H�~��}�T�L4k<��&��?���0������QY�A/�#�ʊJ�P}�Q��jR�$��3'���?�� ��u�d���g�GS3b�����ۿ�y�>�d���l�@�9�(E��>��XP�]_h�eי]�46�.x�v+�˅��ck:W�Q�KO6���x��ֳ<�@I��u�z��c�XF��a9�O�����\e�y�x�s��>�v>\�Z���<:0��n��v�ch
��\3�F;>�"��3��s���)�m�~v���g�~p"�3➿=}*�~�>���愖
�;*׃��u��l��_�9p<��З1��;L������ՠ��b��'۪�0�f�@!(���w�t�|HƝ�
P��lx?Sm���6`)Z}����{�g��O�]��{���3�CA
hR.E�1������Y�#_�W��:O\ר3	�'��|N]r����ZTT��)�P�[^f�I�ƅ�	0ٿ�1�p��Y�8x�-�I�����Օ��{�<�"|��s%
�XR����P��&?*�؀�b�Z�<m\X�!�K�Ͱ��ћ�־��+��V^��V!W�Y΅5o�т����(4�^����y5���]���������Rp��p"⢗V��|��{�A��@u�y~4Z��B�$��W�(d�e���8]<��G܇/]��V�$�q�lԟN�Dk��-|��?s%i�┣i��MG[�S�<7k7@&,�L�CG�����h��=��&����F�lc}⑷�`!dzc�z�׎_1_��
^�_阯��ze�?�J��|�����]�iԻ��A�3�����(u\B�>"��M<��'�
8k���\��S(���f��S��O !Q�p���_a,L8�O/��y�]7c�)y�v,giɪ�ʒ��ZkM	u�d��A:)G������GyRa��\[�e�(���M���7��Ǚ�Eo�����Z��ű��7O��{<_�����7l}$�7�s.�_s�������ǃ�6jU�e���8��Vm��O@��HL���QS�I���+�8�u2�=�^Y��}��G{.�rץ7�#���|�L���י����u�D��&>-M �H5���?S�(��(l������N�q�9=���є~.���g͇�.�}�-���g�w�W�7Zn�u߻BM�tӡn�f�Mz�R[���Oj'O!��֒�
endstream
endobj
91 0 obj
6561
endobj
36 0 obj
<</Type/FontDescriptor/FontName/LOKPOE+Helvetica-Bold/FontBBox[-173 -307 1003 949]/Flags 32
/Ascent 949
/CapHeight 741
/Descent -307
/ItalicAngle 0
/StemV 150
/MissingWidth 278
/XHeight 549
/CharSet(/space/percent/comma/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/C/D/E/F/I/M/N/O/P/R/S/T/V/a/c/d/e/f/g/h/i/l/n/o/r/s/t/u/v/w/x/y)
/FontFile3 35 0 R>>
endobj
35 0 obj
<</Subtype/Type1C/Filter/FlateDecode/Length 92 0 R>>stream
x��Ww\S��ri�xQ��O:�v���RUEE]�I�h H+�2XVQXABW`Wa)��
��Ol�E�Y��|k۵a9���~������!��Ӿ�|ϙA@������9�"���(T�
�R?z�Z%�Oܹanx?���K��#T�@�.|b�I,����.�zVX�X
��쵵K�|-��e��(Www��4]�2)Yˎ���atl�	��(�RY'��T��i)�T�'�P��d��T)�s"���.���`E�"=^�Fd$��2v�R�H�(\�Du:���ԩr�V�N�x��6�դ)dJ��Ȓ)�6M����hȚUjؤ�T�B�jլ2U�ʐ���~�:U˦���y
9!�"��F��LӲ�cD@Po���x-�W�$Ǭ:�H�ղ͇3m�2U�jYZ�O���+5i�x�KL��+�!dh��I�{�銤�t�J�1����	�4�Ψ�6J}��j�D�peJB����'j�Y�����D���Q5�_�*S��g(�$F�'i��i���C3W��fM�8������l���q�)j$���CP�TH}F����1�#L����H*�r��S��xj5��@-�&RnT��
��S^�b��l�!����,���=5�F
��)�D�P��q���)5��F��	J�s췩���&�&wL%�a�;M����@g��-�l�VQ���X"�����~�Z��fc�df{���W�_1�����WK�e��C���IDz�k8������)�,O��Ib_�"���i �k�����gP'��Z���g ђp�658`s�A�=i�6\�m-Rȗdo�٫��o��Y����}e�-(,-��=6vV =�	�AX�v�Ms;�h�%?�D6]W�o\�Z6K����D`z��/I�#��x��H� � &\<b6���aH�'��g�'��	0��]`�؞��� q@ܕ�g�*��TUԣ�2� @l��3��=7��	���1\�
wUh�
n=)8S����%��?S�)�I4��Dm\�}���W�_����,��x�4���F8EN������L�-��PxD>�F[�<:W[`�c���mK�CD��^�K��GIk��)����d��V16�,�N�r�"80�/OuvJ�U�C-����Ͱ�ƍ�fRC
�CQ-�`^ؤ�s.��ھ�^����, ��`쌳�:��Τ|�`�&�J���3b�'?��0���l�.���`�\��/�{��pŐ��䡽hj��ݺ���.|�Mq(�:F���w�R,�W���!Z^��j�~kَ3�]O��{�.�լҫ�W~��;�ԲH����8'�}��qD^ʰ����������QW�ڃ�-{�ޠ{_��h���;ԍ�N|=�sV�o�H$��p��î�N�[N~E�}�X�
֜����@u�B
&������oT�@ D`�z1�c�ŠrlJБs7�+��
����'D�a��
�Ƙ���[�-�C׸
ƻ�>��UE^��y�����s���3&v�t�T�[�`���"���H[o&m�����L�g`
���8y�R|�HZ�1%���Nm�4����R�џK>>�6L@�x
�5�p�`m(�3�k$�RB��$X{��v���\/�����p�Ё�ۋ$0R�)g+چf����b�1�H�N��m/׍D_CM8b�[%�H��`wl�'c������]<+�.��$&parIC�;�9���S��/������'��r�D�KL1�g�;�.
�}���nH�cN~
O�������E`�3�.��-�����=�����z|v$�9L
�&IUE�Ң�gW��(�c�y�(C�L�rfR�<�d�-�%��l��0�F7х�������P+�Ln(Ɓg��y��qU���5Kr$&��c`!	�zO
C������Ue��<ݞ�(Y���$��;�X���9���b�<BzQ��/!��q���
�F_=�"|ڰs�tgҡl�'�(Y+im��C�f,�v���^M�E������˾�. 2�e�8Sb9TԄo;����t�D�ԫ֬^�rk^k��'����X�LG2��<;��I���w�/�<�ݱi�$N�x�N�A�$w�q]�<��Sbš�q�`A��� �m0ʄ{��a�5'�ꗴ�%}�g8��Xxa>����W�̪U���ᑉc�5��*!�+�y?	�	�"��!i��KxX��%l���=w�X׳V��^�qT�s~����)Rg�Ւ��f���I��*��$X6���NW^������+���p�P��%hV^��Q��kP��c���It���m�\���X`���_�\C����^!��F�B����ʗ�b�_M�W�4xaE?�����8�3�;ey��{��p0����͇�1���ߴ��	;M
��%0��w��p�U�tW��$�ڀPPv�;V5���|EyZ��Y��%t����޽!�<h<R_Yt�������y�S�����U��q��!r#la7�Xq��xC�ĵ�k�I.sP�@�={�/~���r!�я����WF-p�j{_�?�}�k�$�fP���c�e fp
ap^hL����[��ݼ�ڞŌa=� � �б��&$��i�D��E������l��$�moސ+�q�K<di�zU��\��B���'�h�1�P�cr��ln�X��H<3��s4͐����C�A������B��Bl���x�p���j�|Ut�t�M���ʿR_w5�2���+�d�6.�25z~ج�֛�O�]%�Quo&�����yH�A��qѓ0�[2*�3�t>h�i��b�D�d��pb�Ӄ�"���^)j�{�`eq}�W��D}��>�p��HK�M.�߹ќ-S�p�G+�P�L���!���������t��*x�c�nOp��'`�������wl��&�����oϵ5յKm�w�o���h��ؘ����O�\'�C��cb(� jR>�n,x<��#�Q�cm{�{�>@ݫ�-o��X?�L��n�؅ u�Aǿ9PP"��ݟ[Z!��!~K����%�rs�����F͚%;s�^����Or�d�a'c�? ې��Q��#���P�Z�pyO��T	�ӐУ�c#w��U�|'W�$3S���q	�� 쀰uḯ4�t(�.�^}�R}��1;��*�����&�����ѕ��_��B��o��
���)ZJD�U��Vm�������8Z�TUVOF��+�랃ߋ5�a�A�|��-�g��>��8�q�qv�����/��w��%u1=Y��4F��^��ki��;)�F�gd��hNJ��&){;�1�:����[U�A��W5�V���7rk�Z�x^�)�����Ӊ��jӑ*��0��[6��/��>\W�s�z�
�F(:�!v��'`�-hSN��K�ֶ\�\0%]��`	��I��s����.��<�; :��(wgٖ��P�8,6&<4��m<��#�������Im�����ZCe�U{0;���du�/�l�z����.�w8�������(#����i+m)W��)�/Ji03��`�ka#XXR��qK�
endstream
endobj
92 0 obj
3685
endobj
33 0 obj
<</Type/FontDescriptor/FontName/MSZOOE+Helvetica/FontBBox[-174 -285 1001 953]/Flags 32
/Ascent 953
/CapHeight 741
/Descent -285
/ItalicAngle 0
/StemV 104
/MissingWidth 278
/XHeight 539
/CharSet(/space/quotedbl/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/A/B/C/D/E/F/G/H/I/J/L/M/O/P/Q/R/S/T/U/V/W/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotesingle)
/FontFile3 32 0 R>>
endobj
32 0 obj
<</Subtype/Type1C/Filter/FlateDecode/Length 93 0 R>>stream
x��WyTS��1��+2(�M"XE@fg���L�`�#�&�0V�S9Z;��jEQqh��g���h���-A�
Ң�j�}��'��NB[۷���"�ܜ{ϰ���oW@�������p�(��P�Wf�-�޼��>�!ijp��e�ljFP�;��%vT�p���HG�0����JA��gJҼ���>���K�ʜ\�,`��ɲ%%�?���:e�F6�\*Ty�j�F�+KV(d�\�,[�R�f'$�E�G�<#�Sd�
�B+W������Xe�B�S��e�ie����<M�R����|e3u2�L���T�I��LE�冏,_�U+u:r-S�d9Z�F�Ȓ��dJM�� ˲=����e��<r_M�tz]�V�����"�Ϩϕ�-���,/�<���Y`��{z�R����z�>K�,�._%/!����J�
tJMΫ�}dZE�\��R��ZPy��oQ���U%ֹy֧��_��)Tپ�J���,YN��ʒ9*�������EQ�3K4�o��*�˚��H[���͙��M��+��
�΍.\�S������;�k�l�Ϥq�}��M�8�IQ�(w*�J�¨ɔ/�Aͧ�pj5�����ש$*�
�FS�TH���R�T�I�P1T05�J�ޠ�S^�<*��@ySoRq�,j"�F�S��IG�R�� ʅPC){ʕr���0ʑr�Sé!��K��ר�T$a4eCI�&;���1�`�Q�|0�0R�φ��o��O�1"�h��=��@�0��'��l6[�6
X8�v�"[7�P�<�j��A�A�]��Nf�Ү�~�������*�<�_;Nt�s|��#�<�����yȜ!�:
��|#2��
��L����S�iFl�L~��x�
��<�����f�Z��h��O-��n�<|b��
��ȁk���Ȝ��n�n���xQ 
���e�Vf��"׷Q�ƒM�f皝��AU���=;��ھg�q(39���OjͭpBm����7ɂ���8#����7^?�+����eLg���JS/��v1��6ާM�:��2xνwf՗Esb�B,�m��t���߁׶H'�e���7��s�n�X2k��
�)�D���rP �B'�:�u",��]x��V�z\����������K��:����Lj�18���L�"���x�!�"�vF�d�F'��=�=.���`�[Й]uǫk+΢�+�ѷ���=w{j,�WQM�N�k�{�
V@s\��x�gj����Tˋ�Śu��CQ�!���9��ڣc�/��?]�3徽�@_�S�Z�X$j�Z|�}�Yp����v�|h+60�-oO��'���)�}|5����0��caL�K��/��tC(��|(vƎsB�|��@N=R�"����u�v������^:�1��%��X����N,��ߝ��vRq������0��s����p�|���l���5Z�m����`?Fc�4UJB���m���v~�w�OD�gO�@
�M�M[�\�Q'�)C�ޯ�1�����T�wHZ�ݮښB jĚ
�m9|?[�t��{�a
w��'Rt͈�G ��6`�T�<%-ˊc�qo(
��܏����O��s��]VT� ����Xɡ��ZQ�|8��Xr����g�?��1`���nBd}Ă�(����;Qthݡ���f��ދW�#�x5r�z��|=�gן���{������
�}q1.�
�]�U�/J�oԃ� ��R��J&�@�/���0w��<H�GA���kA�+֥��9�bA(�Bl'�G�>7��3���DZ���Qҿ#���ҙ�LVS��$�H
�>tI���0�G��r����_\��l�Q���� �Z7;����9�H�����P�.IS�iՆRĆ.̘!
��i^�/�d���6[G�B�J���κ�'��G7X1�
���s}��w��͐�<j�?uj�@iU`�2+�
x��#��P����VͳhxH�Y\�n��/���z�tgWñ��w��
�F쿱l݆Un)hɲ�!�8�	c�&��ڄ�?�?��_y�`A�5�8t|e�WiҺ��˛�u��l>���,.�����H�E�y��{��@o�lKGd@7�9~���Y>���q\w�t삇�L�k-��G�K-��rn\[�G#`\	�g��p�K;�^��a9��&ߎ[\�tmr�~�^���^�E���J�'T��k����s���h.�$�f��֐~�;p�F~��	 �b�&ς�j������B�pMO_:k�b۞B����l��
�7a��90����מ2���'��+r�f�q=����՚�%�-��u��%�I4�O�A���eUU�YQ!�[�E��������E�7�%p���M�[���
�Z<%_Gw�dH�cТO2��]ATI��]�}o9�WO;b<����Ӵ�!���$��}/ -���ʢ}�ۖ�v|F��Ěx�U�mV��4���ɠ-����8�:3��~�d�YM'�f!��_�MW!yB/Ol�OE�h�>i���X����0�C���5�$�^���ч���W�����	�èIxTX�-��N�V_�����Mf�+��Bl��-5R��,��tB�'���^d�$��Z������~��Q͞{zxQ��S�<�v�i$��������Z)D�Qw<%���Bb�5EW%�i(eW��/�>��$��m3OG��!�D�*��_CWQw�u�*�F�Р������k
?{-�g��?c���H��>�m-�?Ex��Ծ��<���g��Eo������c��s�Й�=	�fd����cW%<3���_K�E"�܆�Z�YD��մ奠�ˢ�̼��7�GhC�$�ٲ���m�}�P{Kj�g@n3ɽ�����1
`)���8Xk4�L�u}n=�U��R	YǑcZJ�*C�u���n�8{�C��!�k�-�>b�H�:�ҩ-4_L߻�F�+���S�1�E2k�Vd��&��j��|�c�̌
K�S2��˕�(�AM,�ٗ�c��`&L��a���l�t�;����HZ�oaМw��jK�و
Ϫ ��y����0����$�O��% ��3�Z�0��"��uz��GF.�h�!q=���~���DV�Y�/���>��?��o��m�/}��Y�z������e�'�4��d�Jt�����鏿�=h@��yi����^�mW���le�V�E�>�~��Xy����sh'ڶ��c��!�CykK�z�j�[鈍Qnl�9�h�����7�ƾ�Ý�#��=i��܇��}�14l'>�U:O�^��#KB�pv�$�
���+DOhp����z����Lx���">��72��7]n�rT%�}�����Yі���q�ٱ����t��|o$b��h��E��m�~��v
�Y���
�X|���H���8�Y:�%��~3?1K
�ws=�^)�^�~ L+�!��A�a�Gx
���'���҃���/4L��4�S�U���]g��pB9��/��Ť��1'�|8��a-
Z�J��ДF�qO؃s�g�rb ���1��Υ��G�!�6qP:	��5d�4�_'y=��4�<�N5;���j8��	�O.Ÿ������n�4��tΖ��ˏ�|��K �x��@�O�\�^"=�"8Eh��o%��*���!�Y[��:"�t�՞+�g��u���HŇ`#�?�e$,�TK�.Ik)��[0�BP�B�QDN�!<����ck���#��04������SH7���O��+諬�"Y���܃�D����)���t��b��{��$�5����!��왊���t=�yJ֢J/�/8�K%�XY�`=�`n=�P
v�ԁ/n����n('���&/h��{�-vLl ���{s�[$�:%+31dv�)d ����̋��$�^��V�Ω����3�O�hn8q[*���麔<ibBr�������CX���!�5��
k����#<Kb�B�
��U0LB���G�d�+DH�����&p;1�}P�gݪ��Փ-�8b�K��_ͺw����5K��n_x�F�ަ���xf��h�ו5����3^����?!���K��I��D/��L �xaU���?����m�ǭ�
+�K���բ&V�V�����LZF�by����Ij�
K|5�B8@��F	���qz�YX{�����6������J�O' F5��I�7ѧ�Ǎ�]��Bj��'R+�@��S~#g��eJ�è��h^�ƒ�L٩WI8�7�Q'��F���əқ�����̳sC>w������&y��v��Q(E-�J�*Ve���v����৕�_}���w/%MO^:?6G�7{N\����*�_�n�9��#�-�e9��t�Q��	�sS�����R՛��d�\Vy3�����ǝ0�;��R��<}k8Li�n�cz�~_�Eo�j�ޭ{*�N�%a�_8#�D���T�Z�^\9�� �{BXE�6������c���� �H�i�5@HA�W�+ �"��6�>d����f;{��/&�W
endstream
endobj
93 0 obj
4690
endobj
85 0 obj
<</Subtype/Type1/BaseFont/LOKPOE+Helvetica-Bold/Type/Font/Name/R85/FontDescriptor 36 0 R/FirstChar 32/LastChar 251/Widths[
278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278
556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611
975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778
667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556
278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611
611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 333 556 556 167 556 556 556 556 238 500 556 333 333 611 611
278 556 556 556 278 278 556 350 278 500 500 556 1000 1000 278 611
278 333 333 333 333 333 333 333 333 278 333 333 278 333 333 333
1000 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 1000 278 370 278 278 278 278 611 778 1000 365 278 278 278 278
278 889 278 278 278 278 278 278 278 611 944 611]
>>
endobj
56 0 obj
<</Subtype/Type1/BaseFont/UKXNOE+Times-Italic/Type/Font/Name/R56/FontDescriptor 55 0 R/FirstChar 32/LastChar 251/Widths[
250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278
500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500
920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722
611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500
333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500
500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 389 500 500 167 500 500 500 500 214 556 500 333 333 500 500
250 500 500 500 250 250 523 350 333 556 556 500 889 1000 250 500
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
889 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 889 250 276 250 250 250 250 556 722 944 310 250 250 250 250
250 667 250 250 250 278 250 250 278 500 667 500]
>>
endobj
86 0 obj
<</Subtype/Type1/BaseFont/MSZOOE+Helvetica/Type/Font/Name/R86/FontDescriptor 33 0 R/FirstChar 32/LastChar 251/Widths[
278 278 355 556 556 889 667 221 333 333 389 584 278 333 278 278
556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556
1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778
667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556
222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556
556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 333 556 556 167 556 556 556 556 191 333 556 333 333 500 500
278 556 556 556 278 278 537 350 222 333 333 556 1000 1000 278 611
278 333 333 333 333 333 333 333 333 278 333 333 278 333 333 333
1000 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 1000 278 370 278 278 278 278 556 778 1000 365 278 278 278 278
278 889 278 278 278 278 278 278 222 611 944 611]
>>
endobj
76 0 obj
<</Subtype/Type1/BaseFont/LOKPOE+Helvetica-Bold/Type/Font/Name/R76/FontDescriptor 36 0 R/FirstChar 32/LastChar 251/Widths[
278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278
556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611
975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778
667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556
278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611
611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 333 556 556 167 556 556 556 556 238 500 556 333 333 611 611
278 556 556 556 278 278 556 350 278 500 500 556 1000 1000 278 611
278 333 333 333 333 333 333 333 333 278 333 333 278 333 333 333
1000 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 1000 278 370 278 278 278 278 611 778 1000 365 278 278 278 278
278 889 278 278 278 278 278 278 278 611 944 611]
>>
endobj
77 0 obj
<</Subtype/Type1/BaseFont/VSGOOE+Times-Roman/Type/Font/Name/R77/FontDescriptor 39 0 R/FirstChar 32/LastChar 251/Widths[
250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 500 500 167 500 500 500 500 180 444 500 333 333 556 556
250 500 500 500 250 250 453 350 333 444 444 500 1000 1000 250 444
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
1000 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 889 250 276 250 250 250 250 611 722 889 310 250 250 250 250
250 667 250 250 250 278 250 250 278 500 722 500]
>>
endobj
64 0 obj
<</Subtype/Type1/BaseFont/LOKPOE+Helvetica-Bold/Type/Font/Name/R64/FontDescriptor 36 0 R/FirstChar 32/LastChar 251/Widths[
278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278
556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611
975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778
667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556
278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611
611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 333 556 556 167 556 556 556 556 238 500 556 333 333 611 611
278 556 556 556 278 278 556 350 278 500 500 556 1000 1000 278 611
278 333 333 333 333 333 333 333 333 278 333 333 278 333 333 333
1000 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 1000 278 370 278 278 278 278 611 778 1000 365 278 278 278 278
278 889 278 278 278 278 278 278 278 611 944 611]
>>
endobj
65 0 obj
<</Subtype/Type1/BaseFont/VSGOOE+Times-Roman/Type/Font/Name/R65/FontDescriptor 39 0 R/FirstChar 32/LastChar 251/Widths[
250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 500 500 167 500 500 500 500 180 444 500 333 333 556 556
250 500 500 500 250 250 453 350 333 444 444 500 1000 1000 250 444
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
1000 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 889 250 276 250 250 250 250 611 722 889 310 250 250 250 250
250 667 250 250 250 278 250 250 278 500 722 500]
>>
endobj
34 0 obj
<</Subtype/Type1/BaseFont/MSZOOE+Helvetica/Type/Font/Name/R34/FontDescriptor 33 0 R/FirstChar 1/LastChar 255/Widths[ 333 333 333 278 500 500 167 333 556 222 584 333 333 611 500
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278
556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556
1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778
667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556
333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556
556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 278
556 278 222 556 333 1000 556 556 333 1000 667 333 1000 278 278 278
278 222 221 333 333 350 556 1000 333 1000 500 333 944 278 278 667
278 333 556 556 556 556 260 556 333 737 370 556 584 278 737 333
606 584 351 351 333 556 537 278 333 351 365 556 869 869 869 611
667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278
722 722 778 778 778 778 778 584 778 722 722 722 722 666 666 611
556 556 556 556 556 556 889 500 556 556 556 556 278 278 278 278
556 556 556 556 556 556 556 584 611 556 556 556 556 500 555 500]
/Encoding 94 0 R>>
endobj
94 0 obj
<</Type/Encoding/Differences[
39/quotesingle]>>
endobj
67 0 obj
<</Subtype/Type1/BaseFont/MRYOOE+Times-Bold/Type/Font/Name/R67/FontDescriptor 51 0 R/FirstChar 32/LastChar 251/Widths[
250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278
500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500
930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778
611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500
333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500
556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 500 500 167 500 500 500 500 278 500 500 333 333 556 556
250 500 500 500 250 250 540 350 333 500 500 500 1000 1000 250 500
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
1000 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 1000 250 300 250 250 250 250 667 778 1000 330 250 250 250 250
250 722 250 250 250 278 250 250 278 500 722 556]
>>
endobj
37 0 obj
<</Subtype/Type1/BaseFont/LOKPOE+Helvetica-Bold/Type/Font/Name/R37/FontDescriptor 36 0 R/FirstChar 1/LastChar 255/Widths[ 333 333 333 278 611 611 167 333 611 278 584 333 333 611 500
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278
556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611
975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778
667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556
333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611
611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 278
556 278 278 556 500 1000 556 556 333 1000 667 333 1000 278 278 278
278 278 278 500 500 350 556 1000 333 1000 556 333 944 278 278 667
278 333 556 556 556 556 280 556 333 737 370 556 584 278 737 333
606 584 351 351 333 611 556 278 333 351 365 556 869 869 869 611
722 722 722 722 722 722 1000 722 667 667 667 667 278 278 278 278
722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611
556 556 556 556 556 556 889 556 556 556 556 556 278 278 278 278
611 611 611 611 611 611 611 584 611 611 611 611 611 556 611 556]
>>
endobj
66 0 obj
<</Subtype/Type1/BaseFont/UKXNOE+Times-Italic/Type/Font/Name/R66/FontDescriptor 55 0 R/FirstChar 32/LastChar 251/Widths[
250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278
500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500
920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722
611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500
333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500
500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 389 500 500 167 500 500 500 500 214 556 500 333 333 500 500
250 500 500 500 250 250 523 350 333 556 556 500 889 1000 250 500
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
889 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 889 250 276 250 250 250 250 556 722 944 310 250 250 250 250
250 667 250 250 250 278 250 250 278 500 667 500]
>>
endobj
49 0 obj
<</Subtype/Type1/BaseFont/LOKPOE+Helvetica-Bold/Type/Font/Name/R49/FontDescriptor 36 0 R/FirstChar 32/LastChar 251/Widths[
278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278
556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611
975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778
667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556
278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611
611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 333 556 556 167 556 556 556 556 238 500 556 333 333 611 611
278 556 556 556 278 278 556 350 278 500 500 556 1000 1000 278 611
278 333 333 333 333 333 333 333 333 278 333 333 278 333 333 333
1000 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
278 1000 278 370 278 278 278 278 611 778 1000 365 278 278 278 278
278 889 278 278 278 278 278 278 278 611 944 611]
>>
endobj
40 0 obj
<</Subtype/Type1/BaseFont/VSGOOE+Times-Roman/Type/Font/Name/R40/FontDescriptor 39 0 R/FirstChar 1/LastChar 255/Widths[ 333 333 333 278 556 556 167 333 611 278 564 333 333 611 444
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 408 500 500 833 778 180 333 333 500 564 250 333 250 278
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 250
500 250 333 500 444 1000 500 500 333 1000 556 333 889 250 250 250
250 333 333 444 444 350 500 1000 333 980 389 333 722 250 250 722
250 333 500 500 500 500 200 500 333 760 276 500 564 250 760 333
400 564 300 300 333 500 453 250 333 300 310 500 750 750 750 444
722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333
722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500
444 444 444 444 444 444 667 444 444 444 444 444 278 278 278 278
500 500 500 500 500 500 500 564 500 500 500 500 500 500 500 500]
>>
endobj
53 0 obj
<</Subtype/Type1/BaseFont/VSGOOE+Times-Roman/Type/Font/Name/R53/FontDescriptor 39 0 R/FirstChar 32/LastChar 251/Widths[
250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 500 500 167 500 500 500 500 180 444 500 333 333 556 556
250 500 500 500 250 250 453 350 333 444 444 500 1000 1000 250 444
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
1000 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 889 250 276 250 250 250 250 611 722 889 310 250 250 250 250
250 667 250 250 250 278 250 250 278 500 722 500]
>>
endobj
52 0 obj
<</Subtype/Type1/BaseFont/MRYOOE+Times-Bold/Type/Font/Name/R52/FontDescriptor 51 0 R/FirstChar 32/LastChar 251/Widths[
250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278
500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500
930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778
611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500
333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500
556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 500 500 167 500 500 500 500 278 500 500 333 333 556 556
250 500 500 500 250 250 540 350 333 500 500 500 1000 1000 250 500
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
1000 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 1000 250 300 250 250 250 250 667 778 1000 330 250 250 250 250
250 722 250 250 250 278 250 250 278 500 722 556]
>>
endobj
12 0 obj
<< /Title(Excel Chart and Spreadsheet)
/Dest [11 0 R /FitH]
/Parent 5 0 R
/Prev 8 0 R
>>
endobj
2 0 obj
<</Producer(GNU Ghostscript 7.05)
/Title(PDF)
/Creator(Pdf995)
/CreationDate(12/12/2003 17:30:12)
/Author(Software 995)
/Subject(Create PDF with Pdf 995)
/Keywords(pdf, create pdf, software, acrobat, adobe)>>endobj
xref
0 95
0000000000 65535 f 
0000387952 00000 n 
0000431791 00000 n 
0000387802 00000 n 
0000386858 00000 n 
0000387896 00000 n 
0000388064 00000 n 
0000387125 00000 n 
0000388278 00000 n 
0000387309 00000 n 
0000388172 00000 n 
0000387640 00000 n 
0000431686 00000 n 
0000388434 00000 n 
0000388558 00000 n 
0000388684 00000 n 
0000388808 00000 n 
0000388934 00000 n 
0000389060 00000 n 
0000389186 00000 n 
0000389312 00000 n 
0000389438 00000 n 
0000389563 00000 n 
0000389695 00000 n 
0000389826 00000 n 
0000389952 00000 n 
0000390082 00000 n 
0000390537 00000 n 
0000390388 00000 n 
0000390210 00000 n 
0000000015 00000 n 
0000014509 00000 n 
0000411014 00000 n 
0000410537 00000 n 
0000422987 00000 n 
0000406745 00000 n 
0000406353 00000 n 
0000425257 00000 n 
0000399685 00000 n 
0000399233 00000 n 
0000428475 00000 n 
0000390302 00000 n 
0000390334 00000 n 
0000390685 00000 n 
0000391133 00000 n 
0000390984 00000 n 
0000390809 00000 n 
0000014531 00000 n 
0000109440 00000 n 
0000427447 00000 n 
0000396165 00000 n 
0000395884 00000 n 
0000430660 00000 n 
0000429637 00000 n 
0000392933 00000 n 
0000392653 00000 n 
0000416839 00000 n 
0000390887 00000 n 
0000390919 00000 n 
0000391605 00000 n 
0000391456 00000 n 
0000391281 00000 n 
0000109462 00000 n 
0000202820 00000 n 
0000420936 00000 n 
0000421964 00000 n 
0000426425 00000 n 
0000424231 00000 n 
0000391359 00000 n 
0000391391 00000 n 
0000392055 00000 n 
0000391906 00000 n 
0000391753 00000 n 
0000387478 00000 n 
0000202842 00000 n 
0000293283 00000 n 
0000418885 00000 n 
0000419913 00000 n 
0000391831 00000 n 
0000391863 00000 n 
0000392505 00000 n 
0000392356 00000 n 
0000392203 00000 n 
0000293305 00000 n 
0000386836 00000 n 
0000415811 00000 n 
0000417861 00000 n 
0000392281 00000 n 
0000392313 00000 n 
0000395863 00000 n 
0000399212 00000 n 
0000406332 00000 n 
0000410516 00000 n 
0000415790 00000 n 
0000424167 00000 n 
trailer
<< /Size 95 /Root 1 0 R /Info 2 0 R
>>
startxref
432014
%%EOF
PK{X	[*����files/sample_1.xlsxnu�[���PKz�H_rels/.rels���J1��}��{w�Dd���ЛH}���a7�0u}{�Z���I~��7C��f���G�Fo�Z+���{�����kW�#�VJ$cʪ��l� �n�0�\Q�X^:�`���d�d{�m]_�d����h��V�������F�w�^F9��W��-�(F/3�O�DSU�N�l/w�{N(�[��q��T����u<��r�?焮�s9�F����M��h��'h?PKf����;PKz�HdocProps/app.xml��MK1໿"�^7�vYJ�nQ�SA�x[b2�F6$�e��
�g��;<�3r���� e|Ko����CK_��jCIF博����!�]w#_R���B&E�Gĸ�<�#8�Y�}IƐ��2��h5<=;���h8,ހ��H��	����������>��z��_y�d��r|��	�4^��5l��[?/����\-��'h�pb�0��Tkɯ9�//�PK�i>�gPKz�HdocProps/core.xml���n�0��{�*�6M��ᰉ�&M4�[���I�$Px��6q��vl��j�=X'[]"��(-�J�D��<~D��\W�i5����]!��w��^��H;*L�����[P�%����i��>��Ɔ�/^��4�
<����f$��#��l3*���;L�/^V��	�r�T�
ܴ���}pr4v]�t���'x����KݏJbũ*,pU��Y��<�,�e)��t�OK�@ɔf�����i�u�cc��բ�\�Ƃ*�n#�S1�����[��4)�u8D��}PKpYoL/LPKz�Hxl/_rels/workbook.xml.rels��Mk�0��F��Ic�8��A����Q���6�ֵ�~.[
e�Г���H��4���C�����v������V͢��h%����؀I/Z��8Y.b;]��JN��ɺ��Q/��IӜ�S�[�n+P�s��c�
_�{�0�
	�r�3�R�b�+/2�m��=�?"�#ʯ��R6w	�_f�zo	ۭP~�$��E����|PKO�z�%PKz�Hxl/sharedStrings.xmle�A
�0E��"�ަ��H�.O��hɤf�RooE��{��4S�ꎅC&�����.���t\�@�x�|̄�и�a5��z�a�5�=&�U���K�2c�j
��{DIQ��z����#��
���m�Ç���8�I�g�ߎ}"��˯�Zϟ�PK���PKz�Hxl/worksheets/sheet1.xml�UKs�6��W`xȩI9�]�bƕ�&3����f�7�X���R�_����C�:P�����oL>�(9�6\�yO�����r?�>�����T2*��y�&�����~6�% �<(��n��d��LT5��%�x��T(�JN��2,)�A�p�C�9�`���i
�Z��2A�xMr.,�/�a�9PW�=l�~���>�
:u�&a{9MG��!����2v��G3z'G.�:n���YOeIL��+L�Լ��9��Pju�
�q��'�	+2V�Z���~��!-�mA�s`�{��
t�})wJ�rZ�B@wJw��2��[ ������H�l?#���*Un3*��8�F��T�x��/��|�Z�D;�����F�z>�{E]õQ���M4w��\%滯�]<��߻��|Ka�L ����M'�Aw��K���cA��8�[��%/���t���
���G�K�3[�,�̦��:���^�.|ȍ�xI-M��D{��6V�M8��.���.�V��V���Y"��s�Jm�^vuH�$<�[���-��s��[���Eob�]
**ͥ]W~�I��j��0L�����������.У��<;W���B���c�G.�\]_��9�ة~�ΦW�k�S��3M��|�����몮p*�[��]�'7��kc�x=���v��[�j�o�8ص��qkɧ���	������r����z����N��V�o��"%L��n�pF�t۸�"�C�N?�Ҳ�����ؕg�d���~�"W�>�x�c	���CH�x���a�4Q�57}G����?�}����Cp�?����a��\7JoO��m0�	�!:N��x�+	�y���PK�K
��PKz�H
xl/styles.xml�]O�0��+,ߏ���� `t�4!E�4��$Nb��v���s�iR��v+R�l�9��c[u�-GOT��B��LT�d>�������%2%\I:�5�,�[qzWPj������K�����UR	O2��0�y`JMIj\��0ǁ L�8�s1֠Dͥ��|�=q<���.U
V�]]_ݞ��A
 �2%W��B��D8@B.��~|��Nʈ`���F��-�ÝI�W�y[�!�B��Z����Ϫ*+a�=���Ct�I5u��}P:���]V/���\I���	�7��W�,�bq�Yk�����Z%���qS{rہ���ۧ?��ۇ]do���������Ì�%���A���F��Cz�9g�t-�F+K[�Z�#�D����ns*��uu�Ҳ�I�}1�tao�%���5)g �Ed2�'�g��L>�Ԕ���Lekq�<�ti�`)�v"�E�V�pU���uj|��+w+����po�3[������������m̌w�r4�)7��r3�%7���Lн���|�?����:�G��N4��| �e㎊ܧ�_�onީ�Üq�d3J�^��k���1�J���z��
1�W��E�{�����T&UK:�F��z�Nz�㿧�P��������}������h�WPK�����PKz�Hxl/workbook.xml�RMo�0��W�7�ӢH�(�Тh��ڵgZ�c-�dHL��׏V�v�I"�����K��c��+Y�J)��`��*���l!E"�\��+&y���B��!���Iɖ�_E�-v�f�G�Hb�a���&��Թb^��E��#�*~�#4��x�COG���է�In֍u�t4$��BDz��iYl�d�����\�d.!m����8'��jY^L%�P�Jn��1�dqH�1̌w!����sJRܟ��P����8�G�Ӕ|y�ބAI^������P��<_\L�;�ۖ�\T˹��qPJ.��R46&�M2��r�1bC�;Gyg�)|h~Y�R��7�9�b�`��+�+�@�7��8Ѱ]�󷄑��޳��d�/�0�gf;�o�9�7�X�,�L;�{�PK��sg��PKz�H[Content_Types].xml���K�0��+J�Ҧ� "�v<�y�����mދ���}�������P��ޗ�j>�]�$�]-�E)2p��ֵxY>�b>�T�mʸ�Q-�Ý���>�㝕�^E�ŵJ�j
�,o��.��yLbV=1��l�0>�j!_:�E���K���P!tV��ɍ3�h����c
56��7�x�@H�q��N���j`���%�4`���ql�N��gM�#�C����c��}���3��Q�9"�%:;j
�Py���H��:��2�p/����.�hzD�ÿ�!�Z�ʺR��}PKb�4WPKz�Hf����;_rels/.relsPKz�H�i>�gdocProps/app.xmlPKz�HpYoL/L9docProps/core.xmlPKz�HO�z�%�xl/_rels/workbook.xml.relsPKz�H����xl/sharedStrings.xmlPKz�H�K
���xl/worksheets/sheet1.xmlPKz�H�����
v	xl/styles.xmlPKz�H��sg��Gxl/workbook.xmlPKz�Hb�4W[Content_Types].xmlPK		?�PK|X	[׼ɾ��files/response_xml.3.xmlnu�[���<response>

  <result name="response" numFound="3" start="0">
    <doc>
      <str name="id">parent_1</str>
      <arr name="title">
        <str>Solr adds block join support</str>
      </arr>
      <doc>
        <str name="id">CHILD_1_1</str>
        <arr name="comment_t">
          <str>SolrCloud supports it too!</str>
        </arr>
      </doc>
    </doc>
    <doc>
      <str name="id">parent_2</str>
      <doc>
        <str name="id">CHILD_2_1</str>
        <arr name="comment_t">
          <str>Cool features</str>
        </arr>
      </doc>
      <doc>
        <str name="id">CHILD_2_2</str>
        <arr name="comment_t">
          <str>Cool features</str>
        </arr>
      </doc>
    </doc>
    <doc>
      <str name="id">parent_3</str>
      <doc>
        <str name="id">CHILD_3_1</str>
        <arr name="comment_t">
          <str>Cool features</str>
        </arr>
      </doc>
    </doc>
  </result>
</response>PK|X	[-�pfiles/bug67394.jsonnu�[���{
  "responseHeader": {
    "status": 0,
    "QTime": 5,
    "params": {
      "fl": "date",
      "indent": "true",
      "start": "0",
      "stats": "true",
      "stats.field": "date",
      "q": "bahruz",
      "_": "1402067668264",
      "wt": "json",
      "rows": "1"
    }
  },
  "response": {
    "numFound": 1039,
    "start": 0,
    "docs": [
      {
        "date": "2012-10-10T15:05:18Z"
      }
    ]
  },
  "stats": {
    "stats_fields": {
      "date": {
        "min": "2011-10-20T11:16:34Z",
        "max": "2014-06-04T13:41:45Z",
        "count": 1039,
        "missing": 0,
        "sum": "47085-11-30T17:59:27.999Z",
        "mean": "2013-06-03T17:17:43.684Z",
        "sumOfSquares": -234260129500201700000,
        "stddev": "NaN",
        "facets": {}
      }
    }
  }
}
PK|X	[t!n�&*&*files/response_xml.1.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">72</int></lst><lst name="system"><lst name="threadCount"><int name="current">15</int><int name="peak">15</int><int name="daemon">13</int></lst><lst name="threadDump"><lst name="thread"><long name="id">21</long><str name="name">http-8983-3</str><str name="state">WAITING</str><str name="lock">org.apache.tomcat.util.net.JIoEndpoint$Worker@1bf68a9</str><str name="cpuTime">60.0000ms</str><str name="userTime">40.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>java.lang.Object.wait(Object.java:474)</str><str>org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)</str><str>org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:442)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">20</long><str name="name">http-8983-2</str><str name="state">WAITING</str><str name="lock">org.apache.tomcat.util.net.JIoEndpoint$Worker@1706eb7</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>java.lang.Object.wait(Object.java:474)</str><str>org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)</str><str>org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:442)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">19</long><str name="name">http-8983-1</str><str name="state">RUNNABLE</str><str name="cpuTime">160.0000ms</str><str name="userTime">160.0000ms</str><arr name="stackTrace"><str>sun.management.ThreadImpl.getThreadInfo0(Native Method)</str><str>sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:142)</str><str>org.apache.solr.handler.admin.ThreadDumpHandler.handleRequestBody(ThreadDumpHandler.java:73)</str><str>org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)</str><str>org.apache.solr.core.SolrCore.execute(SolrCore.java:1299)</str><str>org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338)</str><str>org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)</str><str>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)</str><str>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)</str><str>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)</str><str>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)</str><str>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)</str><str>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)</str><str>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)</str><str>org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)</str><str>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)</str><str>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)</str><str>org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">17</long><str name="name">TP-Monitor</str><str name="state">TIMED_WAITING</str><str name="lock">org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable@74db2c</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run(ThreadPool.java:565)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">16</long><str name="name">TP-Processor4</str><str name="state">RUNNABLE</str><bool name="native">true</bool><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.net.PlainSocketImpl.socketAccept(Native Method)</str><str>java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)</str><str>java.net.ServerSocket.implAccept(ServerSocket.java:450)</str><str>java.net.ServerSocket.accept(ServerSocket.java:421)</str><str>org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)</str><str>org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)</str><str>org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)</str><str>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">15</long><str name="name">TP-Processor3</str><str name="state">WAITING</str><str name="lock">org.apache.tomcat.util.threads.ThreadPool$ControlRunnable@1e16483</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>java.lang.Object.wait(Object.java:474)</str><str>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:662)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">14</long><str name="name">TP-Processor2</str><str name="state">WAITING</str><str name="lock">org.apache.tomcat.util.threads.ThreadPool$ControlRunnable@8ddb93</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>java.lang.Object.wait(Object.java:474)</str><str>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:662)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">13</long><str name="name">TP-Processor1</str><str name="state">WAITING</str><str name="lock">org.apache.tomcat.util.threads.ThreadPool$ControlRunnable@14ab51b</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>java.lang.Object.wait(Object.java:474)</str><str>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:662)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">12</long><str name="name">http-8983-Acceptor-0</str><str name="state">RUNNABLE</str><bool name="native">true</bool><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.net.PlainSocketImpl.socketAccept(Native Method)</str><str>java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)</str><str>java.net.ServerSocket.implAccept(ServerSocket.java:450)</str><str>java.net.ServerSocket.accept(ServerSocket.java:421)</str><str>org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)</str><str>org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:310)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">11</long><str name="name">ContainerBackgroundProcessor[StandardEngine[Catalina]]</str><str name="state">TIMED_WAITING</str><str name="cpuTime">1400.0000ms</str><str name="userTime">920.0000ms</str><arr name="stackTrace"><str>java.lang.Thread.sleep(Native Method)</str><str>org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1579)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">10</long><str name="name">pool-1-thread-1</str><str name="state">WAITING</str><str name="cpuTime">100.0000ms</str><str name="userTime">100.0000ms</str><arr name="stackTrace"><str>sun.misc.Unsafe.park(Native Method)</str><str>java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)</str><str>java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841)</str><str>java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)</str><str>java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)</str><str>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)</str><str>java.lang.Thread.run(Thread.java:595)</str></arr></lst><lst name="thread"><long name="id">4</long><str name="name">Signal Dispatcher</str><str name="state">RUNNABLE</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"/></lst><lst name="thread"><long name="id">3</long><str name="name">Finalizer</str><str name="state">WAITING</str><str name="lock">java.lang.ref.ReferenceQueue$Lock@1b82d69</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)</str><str>java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)</str><str>java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)</str></arr></lst><lst name="thread"><long name="id">2</long><str name="name">Reference Handler</str><str name="state">WAITING</str><str name="lock">java.lang.ref.Reference$Lock@ad6513</str><str name="cpuTime">0.0000ms</str><str name="userTime">0.0000ms</str><arr name="stackTrace"><str>java.lang.Object.wait(Native Method)</str><str>java.lang.Object.wait(Object.java:474)</str><str>java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)</str></arr></lst><lst name="thread"><long name="id">1</long><str name="name">main</str><str name="state">RUNNABLE</str><bool name="native">true</bool><str name="cpuTime">3340.0000ms</str><str name="userTime">3180.0000ms</str><arr name="stackTrace"><str>java.net.PlainSocketImpl.socketAccept(Native Method)</str><str>java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)</str><str>java.net.ServerSocket.implAccept(ServerSocket.java:450)</str><str>java.net.ServerSocket.accept(ServerSocket.java:421)</str><str>org.apache.catalina.core.StandardServer.await(StandardServer.java:389)</str><str>org.apache.catalina.startup.Catalina.await(Catalina.java:642)</str><str>org.apache.catalina.startup.Catalina.start(Catalina.java:602)</str><str>sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</str><str>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)</str><str>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</str><str>java.lang.reflect.Method.invoke(Method.java:585)</str><str>org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)</str><str>org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)</str></arr></lst></lst></lst>

</response>PK|X	[%���files/response_xml.4.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?>
<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">0</int>
    <lst name="params">
      <str name="q">*:*</str>
      <str name="start">0</str>
      <str name="rows">2</str>
      <str name="wt">xml</str>
    </lst>
  </lst>
  <result name="response" numFound="40" start="0">
    <doc>
      <str name="id">GB18030TEST</str>
      <arr name="name">
        <str>Test with some GB18030 encoded characters</str>
      </arr>
      <arr name="features">
        <str>No accents here</str>
        <str>这是一个功能</str>
        <str>This is a feature (translated)</str>
        <str>这份文件是很有光泽</str>
        <str>This document is very shiny (translated)</str>
      </arr>
      <arr name="price">
        <double>0.0</double>
      </arr>
      <arr name="inStock">
        <bool>true</bool>
      </arr>
      <long name="_version_">1513324811722424320</long>
    </doc>
    <doc>
      <str name="id">SP2514N</str>
      <arr name="name">
        <str>Samsung SpinPoint P120 SP2514N - hard drive - 250 GB -
          ATA-133</str>
      </arr>
      <arr name="manu">
        <str>Samsung Electronics Co. Ltd.</str>
      </arr>
      <str name="manu_id_s">samsung</str>
      <arr name="cat">
        <str>electronics</str>
        <str>hard drive</str>
      </arr>
      <arr name="features">
        <str>7200RPM, 8MB cache, IDE Ultra ATA-133</str>
        <str>NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing
          (FDB) motor</str>
      </arr>
      <arr name="price">
        <double>92.0</double>
      </arr>
      <arr name="popularity">
        <long>6</long>
      </arr>
      <arr name="inStock">
        <bool>true</bool>
      </arr>
      <date name="manufacturedate_dt">2006-02-13T15:26:37Z</date>
      <arr name="store">
        <str>35.0752,-97.032</str>
      </arr>
      <long name="_version_">1513324812366249984</long>
    </doc>
  </result>
</response>PK|X	[�EtY<R<Rfiles/solr-word.pdfnu�[���%PDF-1.3
%���������
4 0 obj
<< /Length 5 0 R /Filter /FlateDecode >>
stream
x�R�N�@��+渑`�N�h�<z�b��(�DMz��gwmWEB�&g�����-,���A�-ښUS��[[`���ˉ�Op�P�lQ��0x8�N���Ք�\x�U"J�̖d~����s��Ѐy�8ID�*�Y�D��)�0��KŠ$8�.�5�Vs��+I,��m���ō���DYtO��S
�w�z�Կ�b�`K�f�M��J��L���`�E��f�Rꡒ_"͵�d-l��@J�i�W���F��E��A"�0m�P,�op�Î�����[Z��m��C�iK���4^�����T�L
endstream
endobj
5 0 obj
322
endobj
2 0 obj
<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]
>>
endobj
6 0 obj
<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /F1.0 8 0 R
>> >>
endobj
9 0 obj
<< /Length 10 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
stream
x��MHa����ї��$T&R�+S�e�L	b�}w�g���-E"��u�.VD��N�C�:D�u���E^"��;��cT�03�y���|��U�R�cE4`�λ�ޘvztL�U�F\)�s:�����k�-iYj���6|�v�P4*wd>,y<��/�<5g$�4�!7�C�N�-��l��C��T�S�3�q";�-E#+c> �vڴ��=�S԰��79ڸ�@�`Ӌ�m��v�Ul�5��`�P�=��G���j��)�k�P*}�6�~^/�~�.�~�a���2
n�ײ0�%��f������|U��9�l��7?���j`���l7���"�t�i��N�f]?�u�h��gM
Zʲ4��i��[�&LY��_�x�
{x�O��$��̥߬S]�%��֧���&7��g̞>r=���g8`候�
8rʶ�<������d�WT'��<�eL�~.u"A��=9�뗚]��>31�3��X3����-$e�}��u,��gm�g�6�64$ы�EzL*LZ�_�j���_��]�X��y�[�?�Xs
���N��/��]��|m���sϚƫk_Wf��ȸA�2��)�o��z-di�������2�|m٣��j|5ԥej�8�ɮe�E��7��[���Q�|�IM%ײ�xf)�|6\
k���`Ҳ��䍐.<k��U�}j��
M=���mjߎ��Ü����e�)�`c���IWf����/���^a�44�M���i	��6p����_�
�
endstream
endobj
10 0 obj
792
endobj
7 0 obj
[ /ICCBased 9 0 R ]
endobj
3 0 obj
<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>
endobj
11 0 obj
<< /Type /Catalog /Pages 3 0 R >>
endobj
12 0 obj
<< /Length 13 0 R /Length1 24324 /Filter /FlateDecode >>
stream
x��	|\U�?~νw��Κ̞ٗ��L2I�IC�I��%�.$��t�
M���YJ���B����iJK
(A+�Z����/P}���XyUH�=wR(��~���?w�~�Y��<�y�s��=!<��\�j���>����x�����߸�z?!�/Z��/8�%B4��(�]�q��7��%�x���֭Z�τ�@ȅ=x�i"�I�·#�p���V}^ف0�c��MkV{�8!�6���U�
)���"���5��^Wn�KoD�fhӖ��F~�hY14�n�t��D�!&+�(��%�.� Y9#G���?�HV�Y�r���eW�?��"N�6�>�<f�b%��v� Ur,!N�BEw�,&//�R�
�i�w��?R\E��W�O��ߚ1�D�}d?��3��|�L�E��FzȽd>y�D�;�O�@¤�<F�4@82�TQy��N.%��w�I�.����N2������"���!����o�g�F��d�_��i
5�+O����k}
�)"�=1�8�E���^I~\�퍐��Qz}��� �Ch���"���K���C��و��A��D����wJ֡�ϑ���12��������\HV!���uj�u�T���@��}.ŽȫЎYH���C�W�i�w����k�	<?�V���u�m�z2��?�w�$�h�㪸*�VI��H�GF���I�E��}�X��.�me{��2�!�h�~��8Ksȃ�j~���*�nBג�����h�[����<��n�v�/)?V�ڢ&�L.o"�ɵ�������CN��/?P\�8S�c#s�n�^���,��q<���fD/���b����q�:}�Sr!n3�G�����I�(��$��0��l�܈Ѿ�}����D�4F3�ѫx�n6ׁ����[���>�#�mӧ��4�ay/Q��c���1
��!I��[����S���0�ȷ��>�v�^�G�τa�	�
�B�*��U��L���U�cA�����4i �?���B�����Md/��r79@�@��'/�_�7�{�BCh���j@ݭ�.<�'���%��{�j<	��+r��<n=w+�{��ܫ�;��_���G�<��_� eE=��;�*�J��V����T�T��[�d�=���_��CyEy�%R���F+>��q@�Q�"p�䶾O9��;iАƬ�|��z��x.�+񬢫�<������B?O�(?��o��G�<M���K�6�=�#}�s<�9�Ź,W@O۹�\7w1���&<C�0�3�(w�;ƽ�[�(��W��o���_�)pBZ�
��
a�p���s�5�CE@ѩؠxP�=�G٠\��Ry����G*��G�Zu��UY�!�}s��/�|�nQ؄븷�.���b7]�Sr���]��+.�g� }����*�����DWp��j>�h�/'w�2}��
w���`�˸wiB�}��ķs2�V�B�7+�!��i�v�	������Ń�mŃ��IP8�Y��Xջ9P;�3�
��+4(>$W`�Mq�{w;��_$������z��	�H�p�q�0���I���/�>Kߤ���G�bN��*q:$����Z�dž��8;���p��'�FJ�%��\Oy��M�k����i��&����_�?;��؊�w����b�#��OH������H=y0x;�q���#t-��O���+I��-�ж]���pU�����]���Z�ʚ 	���)t3
�ށg-�G��n��/H7u����\���MZѾ��!!�V��7㍯N/ ���O(Gv��s��{������D��Z�����%Ҏ���|s�2P~�|)YO����^#Md���[�H	
��/��G��wo/ oE���Ϸ�9�g�^�W�����_�&'H5Fh5��ir5�3�m?A��r���!P���E�G��%��y�#��=#įx�K��˗I�9��n)4�jjl���岵�t�&��Ǣ�pu(���Y�Y-f�d4�uZ�Z�T<GI�3<o0X�
��Xx���W!b�y�� ��}:O)��[��O唐��S��>�I�`+iͤ���`�DG88NW^���;�}�Ҥ�_"�Ge��P/;�:�%:�,�۾ao�`G&M���u�L�����W�
�Us���:[qDm@K�pGg�ƫ(��v�Z[깨���
�e�%ھ&��D�sK������Ք��%�\M�zC�JO�s\$�S��ᵫ.�-�PFgɜB����O;?	�pK{���S=��N�A�y���ҁ�z�{�b%��7�w*��Ե4���[�zK�VTd�`}��n]���^,i�s��^9��q�-��w���n�X�qw�.�
�JEO�oU�����x�a�t}:%�>$�+�z�h���
�{�a�+i�O��|]<���(��$��ђ�0��̬u�d�f?~}o��b>�(i���-��EZRD�pp��	�?<�ާcV��(���	KdP�1��@�f���J�jj���1�h�9ܘIo�J�!1�Gz0���Z��P�M��Y�@i��J8HV{ƈ�M���A�2q.ž����K����0�)y�`/�c�M��ڹ��D���u��ᮋV�;��lײO�*�l@1nH���ʋ�-)����W��쯈�w^1�K
m,Y�{y�����rQ��KW�+�z��,!����J
�chp^I\P�������4^>�ޒ�O^��s�%5ӫJK�?�T��{��e�N\ײ�{�j?�6xo��y�༽�{W��GV��bx�1����;�	�U����3wxJ���CW6�9G��ؾ�w�I��Ql�	p*��)�OE����w�[���LjB�O�*�9B�K�T<�t��4I4�*zq��Z�Z/϶.�j%E�ŏ`��B�9
��j~�'>��Cp���k���^�G�E,��}\_�q��t�t�JT�`R[�Q���	-&{�>b���F�L&��r~���j�_2�?I���-j�T�r��n�66���c�j�2\klh��;�6�5�7kT*]�b�k�j��~����}=V�Ʀi����2�����}�|�n�֑��%�R�K��Q#4t�栆�ܪ��z��ékC].*�R�����V[��=ٮ�J`��� ���:H��R�Σ��&~Q����.n���>`���Q�4[l>?������\B�xH�Z�B᪐+�0
�+�p����B�E�-9�dQX��o5�喅���4��(�i0L��§�|8T��Z��Uz���,kK/��r��t�H�ի��#�J�0Ų-��������ۭ�$3�B!��˵n��.Fm1�ɻ���|�
걺V�T����M7���t�s�1_n��&+�

��R��|=1�ί�8��%y.�}�/<���_�Z����ٙ�[��B[���������b�w�}e���î�E;|����b��9�ȎS�4+��I#h��,�ԋ��_����~(|��)���T��#��>�>�Z���p��^?Nc�A�Q���P�2�q,&��(��#�<�P8�Nh�zA�q4���ʐp�$���~!E���R�S�'I��d.)%��BrT��h��>���qzD�%Fy���|�I2V�}�$��H�<I�k��I:�9j?��<us��s�8�j)d�8͖�X/�2*N�Gĩsn]�l��SԜ�o��7�k�p�l�rT9�y{��L����o���nC4J��e�ӹ��gr�bN�6��j�;�]��Եi��{Qtz����F���+��W�l�Tc�R��I�뎑Z��=-���mέ���C�_�v8��<������7"JW\�M�
�B|v"W�2~E|�v�V�"�no������c	����UoD^����SD�¾��UӀG
�{(L|�t�/Qw��u��+�ΩU@HnѝsK�!�½�vf]�Z*Ֆj����'k��4�'���C�I��&�<i33)O��L�8��p�M]�³���_��{��̻ٙ�L�$�-�?i)�ͬ�H���&bɪX�F��⮚<�z�����e;$�_
�g��l��P�UlM��Mts?�<L�	�9��Z���1�w`�������Ɩ4L=�_�y�T�_����T7��x�o×ܲ,��}vz�H �6����k�GN�k���~��"�)�FP@���]"�,_LS5q:���I*Rݴ�Ә[��<�dSs����׀{��TFR3�"l�m5l5n7
��C١��m�݆��[L�S�	��E�!oh04��_c�f����d&?�٢�s�@.tA��j��V.W$W�|�<�@��i�s�k������
�6^ڴr����V�'�[f's-Öa�������N$^�y15�r��v���C6q���e9vQJ�!�|�dh�r������XL��˶�^�Ѧ�S���Ȏ2L�Q&�p¦ឤ�����@���iX������w���6��qn�Ӂ'�)QC5,C`-}��/�e�4�Q�}��kse��9:��J� ���6����j�.de�W�d��W&����)�N񸓈n9;)����~�>4Er*k"�Kk�$ib�j���!����D�O��"��dL�D-`uV��cPeK&"�"�����J�5��
��5)���8�
t?�=�NSAș
y��2J�V�N�s24�+Uas��U�:��*|V!�D���nO�y��wt���
��]>U4��=�q�f�ħ�y��S�ڸ����*��N�>pٮ���v^~��}�m����ҟ���[V�_�����E�+��Щ9�{%�Uj�X�[�[鿊^�]�ʯΆ�����/yS<�Qq��w<b�Z�Ba�3L�hR�ƹ	ɪ�$Z�2-&���2�%$�Z#c'���42v�TW9)?CgF������KG�=IǸ���(�ppm?�{R���c�_��5��t�q��*s
,]�I�s.�2�je��%�%Ʊ�X�162�9�0c2�t��e�{b�٩r`
�1�hX�������[i���ٝ��h�!8,�֍�R(��<�ߨvb\���X�ڜ����o%���W��:�S�l�h.ũ��M�l]�#�4J�J��jTZmNYPY�NkA�A��5
pG��+�O��1�H�'�j�(cʔ:�K�ք;�I�뚔wCn��Cե[�Y��U������^wonY�ʵ���
�
���ۅ������t���}�g�������۳���ݭz@w����=�&���7���q���ݏy������a�a���q�S�����#�?��6d��6���͞��M�k2�:�:�
ߥYX���
}�K��U�z��TD�udk��@����R��|�2�œ�x��2��Z��:u!n�0ݭ�Vq��7�*
���x�j�F����DI=��y��lғ���K���u͞�xy�G�
��7I��Z��t���^�F��^��/"�Y�Z]���r�l�R�b)�\�uVK<��$�N�c������:�٘�gb�Ev�X&א���������3u�w��\��q���M�%�$}�����?�2{���p誽���O�v�����Ypc�=S��ˆ0Glݭ�M�6�<�y�G=�Pi*d
T:��U��U�G%���%5�����	���gV0+�������Q;��Rq;��rlف�*�lk�p.�2�`�jg�\�-5}[b�'�'"�Wg����gcs��~�����eMrb��!Cʥ}�����XC�����|�5���b�h4W�qJ���L}�j����J�wM�?ݐ��q"��'�=�A�O/�VV�,Jl�R�����Q�F�:�<*c�(��Q�t�<�`Y~�)���9+��n(/��T�������<��t�A/iP�^�mF�~����g��za��:�X���)F��ִ@���I�g?�7@C�Dv
�\��	�E�E�&&�L������˥Ri�λ7�Y�6QK0P)>�9��-)�N�3�CwG��gq��ő���.V,Vv;��H�=>�֨
�ꅴK�P���kV{��.ѭ�ݪ�E{�δ�q���ܠ:OZk���g��D_�8�)���5!�[E�7ǀ|P�eg�^з:�˯II]��9�����]N�yc@��ǹV��C��2#.ӈq��IfAW;����(���G���t=NC��Fc�Dё�hT��g��H�FE�)�,�Q�K5P�D`��du*�X�`eDŋ*zFE{��j��~M�u�<<�Z�#��ۻ�:�,@� �8;u�_��\�o�2X�T*[Aoc����>�v��y�����a�uVsS3�Ԩ�jN�Vs�F]!H�>��X����K�ó/iV7ic�����X
�E��e	��	�TMM�M�j�qR�lx�ޱ��-��~�=D�e稱0+������3甤��A]�
�������Y0ڄ���Ff�ԝ����Q�Y�1��i�7���*���(l'h7��?�i��卛�������4]0�Y�'�]���q�X4[�����m�I��[�.�k�_Jww�h^|��f��l��nEd�������̊�d`n���n�mSZ��븇���҃��4}^�4�k?D�>���Ϲ?%W��5iT���8a�>��z}�j������x,P,�T�$V$�q�CY���&�@���*�%
�k]&,U,U.S�zz�����2z�����)�;�f�*W8�{ƒ�A�v�w��.�y��&w0|'�?T���������ԩ�Y.���#8>V���9���0L7�a�0Oʉ!:	q$$������h�@����
�	B���ƶ野�F��6f+0Gj��I]�=����s����0���x��p�~�hXG������~7u�S�d9�ĩ��*sJI�P�W��P�o^2�?�yjs����L�J''7cϰy��e�I�.���m���6�a577���~�9��x��x�3G��((��"��Cb\i���n�J��@*��p5�G"�����k7�J����l�Y�Y{�E�Y}�z��S�ۯQ�%�l̾=�_���o~�^��|�л�<g���e%F)�J�,S3b1n$�shY�C����D�Ԃrn�C���>����E��0^T�J#��j#QL]:��8Y|35���A�MЇ	<A#<3�{�o����٫�!�|�>�С�A��!0�ژL&�K	��I9��9�W+��L̐:��T{"������?Q�d�Q�Ld�ϟߐe�bn��a0{�p�b�0�=��Ȫ��H�#YG�=�\�\�,u�
�4�����]��_x��@V5�=��A=x��u����/�n^�O�WS�X����q}��o��6����k:!m�G-���t���.��Q�z�bt�8:��c�9���Q����
�}z~����}׌�s���p?Dd�fmr]6WĿO~D�N*�Lܱ���Gc�d��X	U4Hk� �0T�� .C8d����3ve��������ģ�tZ�7�!O;���G�w����m
:�)5gL!�'��>S�l]���Li�g�ϻ�����_�o_[��C���|�9��%�Z�P�{Ï~�+�g.�Kг��;g`:�v��DoH�����9�� �G������/�G2���Ot��YET��S�d�6�ax��W�7���l=u:��b\�T��LMdOL0t;�����@I<k�D�J#*5�Y%R���
�J*^��P	����cϪR�kl-���l?�ɼ�-������ƀ���&*����b�z��h)xH����A2h{�W��^Zo�!y�*m��u��	<�H4��Kkj<J���z�c�j��3n�5J�F�W�*�pw*w�����=�<b}�{��x��o���C�����Ψ@�T�[8^�V�+eQ�f7_�X�-Ӭ������oj��Wє�?��ҟ���'U8[9��63���(���`#9����j)X���o�����bO���yg�ʜפ��K=����jG�S09�&�.�>�8k���iN=��r�}�ռ���艺�>�V�7������,9�d�1��(�F���YK4Kc�����6��-�ڌ}d��~8���DFl�DA�����[�d���I�6��@���̤��O)	��}2{ǘ��:FT�M.�L��F�c�38K�y*!O%m&�����4�����]t\As�##��}����*+R��*l�GC�` a�7�ڵ�Wޚ	�|�����/�8��>�]k������֭k���
�����~�xKo�Y�	<Q7��W�IR�zfuG32��H�Te䝑R����I�f�Z0��,l�-,fFH�dJ��UG�~h����q��(!#)NN����d�,�(M�����	}�Y�LjI~�4ɗTFP�:�����T�V ��B��񚤓W��f��4K23�sD�35��O��7�4���b|ߡ_ຕ�U���@��]�Q�j�z��A�As)���S5)Ϋ6>�W�]M���y������s~s$ZES=ؾ�j��?"|�^|x�,��c�&5NEɐHR��,�m2��Ã�
���Rq�Ŋ��]��
5�)��q�xҨ4����JhcVv)lϑ�>�+�NZ���,/km�n-Nao�)S K4nsĢ�Xԑ�-��L*
bC`�(�'�Ǒ�9ܘ��3#Ɨ�&���>��Y:�f21�56�{d��-
����@ V+y��O=2R��D���Z�|w[G�����j�[����/7�����7��f�\Ԛ�2�i�v��Dl ��NxNIz�9��kr�TXD,���А�׃q��e����x�_O�Xx>x��.<g���yO2��3ry
~�M���Da0q�D����66��ٗ���8	! 8.@�{�a�7�y�q��X�㿰A+����m�0�m�m�o@��Hs\+��Vm��Z�唣�r���<������C��y��蟒u��b�d�gͬyq�����(�	D14��	�f��Q�<�d��b#ͣ�B�y��d3�RҞ��!%5Ӡڙ�CBj��ՙ�?��Z��¡�?6���pc������A��&"���l�.gD3��%-5i����/kH�#E3$�
dz2����0��p�%13�9�2���-97����='4�93N�eN�
��ln�"O̫py�J�V��2`{i����f�=���}e�Z�ݫ|��$�=W��2�Xl؁4�Tţtɦϵ]8��9iz�]���\ݕ��y�-�mNS�m��Eq����;W\*=>��%A�7���i�}�e�����"��yA�Oc��VX*���fdX�H����b�����!'[)!��׌���[&��We���gG�kXSg�\�V��Vٹ��y��ƣ�;�)�+ć�7a
*�R�2̪QV+�����_;�/�Ya���*8�%����x%���6+穮.l+�����\�f)�Kl[y@ɱJ	�j��u���V�F	�`���zVY�| �#��3>o
��h��'�'N2��K�5�����h�@�LD��D8�Y����d����B,��Qٕj]�,�jC�o����ڂ�P�ޥ���+B��*�E;�Ӷ�"���#����Uz��e�8�T
�����a�I{�t�9�up�q*�c�o�ˁ5Ttn���A�*��*bu����X?�k�e��u�f�욚��7��ڦ��k=���M�MqKh���=�
�(�ݭ��/��.Sd{	�og���*x��¤�Pk�+�j���&<��!i
a�2<��Go�SLx^��u���W|Z
�"V���j��4v+*6�����������y�8n�a�&ov�x
_���2@Qy��U%x�P2Qn��*�y��Z�=/���G�&��T�UV���+�f7Ъ1�ڦ�**U�T
V
U�V@F�>�W-��I�2��
mV��MR)��F�R.����qvè����~H?�?�?�W���C)[gp!���2��g��3~�}��0�X�uNw�L͊�>l[��g���2�����A���<��^�(��L��dۨ69 ��T��H�I�e\��g\-ϸ�!����CY�8G����c� >�e�\�O.—�)}R&�I��Xu��<�Ͽ$-+%I�\���J�:�	W��
��0�0���&b�ԫ�i��b6+z�}>�Ǧ��0��q�:���.�:�bC�\^'���U�7E�2�R�0�����!]r�b$ee��>9�''��22/{X�4{%�ll���+��oi�W72ʟk�iljmTd*��J��R��F��HG'y�ڑ�*L@2�,�V'��Ea_��0u񚶜���K�yyD#��d�V9"�Q5-��	����Ղ�1�d��	${��L�i$9�,%y���6!il���`C�`��������B��Wy�B�T�ϱ��j�}
4
���@��|�5���Ӯ����tuus�g[��Vh[r�v���kz�m^8o�Dm)n�{]+Zo��qI�%�S7�v���M��>O$2-]��7â�<�֙��8��J�y2�˲B�	pz�a���x����y$+��lBN��(#�UD���@E��Y>7{��`�-�d���E�,R��qBƼ�����`�kPx,�,�d[�Nˈ�>�8�C���5J��t���q��Vz�f��u�* �7
�@d��h��I�P}�5T7!�p�
P�If��0*���DϺ���q�Dzv�Ø�TW)����+�����;�"L�<�[_{�s���C��׿+��9/"�*y/	��&�D�1.�i�ʘ�du�C�S�� ���e�U�K�a�
f>(R�����A2o�)��^o��r�c�s�W
��v��+�H^��UT���g�ƙJSU5;]��@Vj�����򮗯_��K����s�n�b>��?����w|��^�V|�M�u�g��.�sz�`-N
\��%g˧����㱭	l��E�|�*�`kP>$��_2��G2ޅ�d`��)�`T�����j��Y56�)Uq
����
�+ \Y@�R�& 6�#t�
~�ԗ?:��^�`rt�r�vvZ'íUƑV���H�%�0$"WBi��2�1:��6�E��%b�������|�G�Q;���
�B�3��p[��Ngw�?���|ez�z�yG��êw��r�{�}
i6ͪ�D�b
&��۪�I�3&�Pw�O:8K*��be-�p,mԹ����vT�
jG����OA��$֞`��:���q�S9�Q�[�Q��f��=b�-����	�S)�(2�?
fUu�!��墍�� �`�5M�
RW<'�f`˶K����y�91�J��9�"�8o�� Ll�Ω[s����{拏oz|QS����5t͊[�b������k�\t�ԛ�F���;Vm��ɯ첛2��^��C�ԡ�[˯��9����n���c���B�eF�=
XN�#3����!Y�2�e"�P��f9l��	3d��<��?Kf�)dF�Aa	�!@E��p=�vB󷒱;�)�+��*����	0������O�l_Ę�O@:�(.�w7ivA�8�h��f�x���-6�rx�(3��#K����'$���'N��Ň�@���z��I��	*������js�_u[8�����՘mA�
��E�T��C���()�e����%�H ґ�h�#A1X
N�SL>���z���8��eU���d?����̡��Iz�3\Q#eg�P]vnw��{��4D—�-�L�j�;g:5�ڥU@�8�R;�g?kOǛ:m�˦.���Fb��C���+oV(Y[>��R'4�K</�Kg��r�ʻk*ﮩ��Vǡ[�-��Ll��`��R=�S�J7�KJAw(�FUD�����Z?]�h�M�"̹-8�(U.�~vl��36�'^9!�R�wo��C��Z�q�-�
��NU)�e�RЫ�Up�h���O��BX��(k�$i��&S�ޭ62�:9�ry<����R��{��'/�����E�рF1��Ԥ]i�b��t�4t��>���W�{#
�
���P~$�4��iP�
��O��#ǣ�
�y=�{���G�M�,�t�����>���Ǐ�G�#��̾Z�����ҫM�������;l���Jz�h�~%xO���Β2$ҋ����u��ҷ̿�ޫO���;��h���45F�Ej�d�q�]���7�ALKt}��-Ht�).;
?�!�����s��F��Ɏ�m�,X�J-/���B�q�&�Lt�4d5�7I���UPSuz�Ƈ�#q>�Ź�34H�i�P������ʲ�)v>Q�|���Y�X���N0N#����O��L�An:b���9�ھ�nm��k��R99{�6�14�T�����d (B=#`y�2��b	��D�Px�F-�蛀Cfz��>?0��-�m���O�s����/F��QϨ���/��g�`bRPS��l�l8�#���WҊ�>tN2'���&�*PI[�`��䘶�sBri��J��F��R4�B���q"�'l3ٹ6��@- =�u9f��N*A�&��w�@x�l�/P����H�1 ��,�O�Ȭ�Ɔ��0�aY@(+���eU��S���oF9�)s��ص��[���l[�1d�2�B�Ww^�j��L�+�mZ�7�=p�G�\�(ӜH��_���n:�λ.*t^6�R�d�U&�{r[��\���Щ�I�m>��G����z��*���*2�9�:<ge�3A�U�N�6��ߊ'�N��N��v�	�h�mvω�]U�.�!���w�(��8�q�#�X��@Mj��Fڨ\�PD�:U�,�B��*d*�@�&_���T��K��Y�>�'�/%���N��O�B����aZ��`@��:�qE��\�۟w���q����7T`�
��ߝ�/ڝq'�;]n�2��9@y{�
Z���-�R���x���h�l���8}OJA<k��.�U� ("�+�Rb�%����Ui�>��zɞ���&qV	)��i�!�8����X����%�̆e)v�i���Kc�:P�j�E��j>�c��G:j{k�0kK�*)�0��yS�L�^�X�m9�X[G�n4d=��*��3p��i�
1!C��t�S��5�s�d�f%�,2�	��'d���3
��ҩ�����̻c�^սZ�F����T�ݔ.��n��^�m�5�lj���X47NJ�BC�e��[�6��/�-Nt5H-+\+�=-�T�t��]�]�]U_T���u>�&�d6�b�H'�ɪl�VlY�Y���"̨D���0bَ�<jc
N�@jY��>_����i�e��eG%E��Y�d����1���@���Q����N耫\�|����sd!Hk�:��ltSx���aW����ϼ�L��=흍�Q�PE]*U�1jkl���x.����z��85��|<��5gcN-�oP5����Ldk�4���l����
8���>->J�<��A��qj<tQ��	,�F�Ur�r�q	,����z�k"y�A׏5��ǩ�0������+ ��x2���gS��c�Y9}�g������0Kl�g��7F�dEf�"3uZ
;����l�O�m��e?bD9(��|*��jlݍ=���Ǚs\}\G�X1|$�G,�d�t�΀��מ�@�4�w���I�5
�!W�0̕���A��*����|-���&&Vڙ��B4h*`��ژ�蟂S�	9�},���\?
��^�V%�l�8fف|� b�0U L�h*�:<{���1{bO��C�	8��g$��Ф�9[!	cV;
-y��d���A�U�v��!s�<���ӷ���	PCA�B��z�!�����pTUN°���:u,̐�,v�������ֵ�:F��"u�w�^��0ݓqY�����d���VN|{�E�F�U�z�zÆ5n�/��ÏN���#�������Ϙ�q.Q�|ז?�8K�M��y�Y��%6�&UÓ��4�(mNƛ�j2�^�A�QN�r�[/{��=���dj2��b����/;fp�_�">����w�X� �׳:L6[����9,���q|"c��r%�������g�b�ȴ��<�fL}1�Yjk�nVܪ�4�E�R�5)�;��X"�$k�M�F�|������k<�שwhw��uo�\�ޣ�㺟ܯ����Գ�d��a�F�J�kj�T
f���$]��5�-1u��v�j�6dH�R�چ��+5n��U��
�k��V8]���$#Zφ>SCU��� y�i���3LD1��D;��ǹ���T�H�ԫ� 5�c߹o M��b�K��
�b\|ֈ��O�o>=u��^ع�_A,�:�� 6��VW�"q���C.��T"�ԡr�#`���*�"*�̠YV=�=�žm���O�3���'�*uu��DN�k�����^<+*$������M!�X��}���z��d¢��{W�2?����;�5y�iN�~�p�6�q�lҪ?���s�S��1� �mo>}΅Tn�L�
gD#�g	xO��$����-��T�s+��<���50_P����-$S
3"�'���<��'a�	�t�]�=N��7p�
s�z�N����4�#koC����
�|�����0��_ ��V]��T{����M	q��jmߵ��J۰�/�_`7Ȱ���h�&��-�~��j�w����a���r�����]q��-����MW���g�e��r�W�&����F$��=q�ukX-�okn�Z��t�pC�	�b�g����|���ʟe�	�7�;;�q��Z�K$돱�1���;�o�'Q,���c�����ܹ3����pM��m(��E���o�o���-��֟i3 ��7B�B���&)�pD��8�����)�̿�>��^3��Q���1Nܲud&��a����m�tR2�$�)�30��?Jv��9#�L����O�O���}�,�&�}0Y�?�����?�_�O���@�v�w���7��:�q9����?�
\���v |���%�{�a�~q&���&��u�=�o��6?҃09�{�Cw/B6ŵU��[����ȝc��<G;W��`Hwb�wb�vb�v�S��syn����7 �
�s�܀Q��[P���E� �q߂qg�%�0'axr�Q�,�_�qL�U{�+������,n�(���._��OB-��k�3���]'�]wX�g���}��j3�k�ga8p�!���_3���/$W��d��v�]
!�A-��P�h)��iE�d`����iF4��	jrIӣQl�w�x>�g�"���
Ʒ�Z�n�W��Gut%݄�NQRN(O*O)�(��z���!�rz���
�t#:^�u9����)p�[���&�-��������`0��O`�D��🂫@Ȅ|&�3!քXb	l��33�R�t��ar0�`�(a�H5"�H8��"�2 �I�#�P�����S�j`�K�ͤ�U�~�U�,M�ṏ�U�$-%�$MR���V/UÂ��@x :�xX��ݔ����v'���b��(>,@�&��p H�->����//oZ�k1?Swx,���:��#c.w�,S�l� �3{?��0<>.>H�0E�M0wv��b���o�n���7�f�,���QȾ���>�Σ�O���������0,w�wP�/�>%�w�f���V>��;�
�J���"������_BކAɰ0C0a~%�K�K�o�y�{*ʆ:{���TjV�m"��c�}�l��lG$�"���]d�m�!>�n���vHҵ�j3t��m�VEB �v�V2��I�/��d�2�-d�k��as�pA�����5p6��1W�1{�l�p]��ŀᒀaV��f�R��̕m�l{�M�S�a"�g� ����&��Zkm����p��Z���{���~�4��X�t��N�҅��4@�6�.�%p\	�����i�Q��k����2�_'�j��C�ގ��q�#����{_K�F�_K�@�_�� ,ח�ҧ{�Xz��������^9�Zh3�O
9�w
�r�%�gj\��7"<��r�X���*��c�:8q���h������r'}$,7:r�=$*�Fj�oƪT��oB)ʧ����,�8�5�=���п��.{"��cl��/��i�h�g�g?���c���	ϧ�9z$p�\B^�
L�|+,�>F*�zk&���Q��7��c� W��+�ܗ�X�D`�H�ZQ��
���D7�Ӆ���E�YSr(㉣���MY>����mRZ�7X�P]���ʫ2�����lj�ZT�J^�������D�/0NI)��ٔ��[
�m\	%�E�F��l�E��vJV���Z:��,]�k��ҬT׸�|q��������>�J���,��eu�7fA>@i���C�G�
�~�ۮ��ҵ:X�`)���heI��$��Eg�2�\���?X�r�`�y�ilf�9}���������ꙧ���*�g���-��:;�qC���=F��6w^���}g������ò&�,����l����՝��a�LߣY&���L��L��ͬ�� �'���g���L��'�$f��0/�t(E}iX}��fE��Pt����'�a9��#,�1\��'�C�z*E$*y3y85�7������(�^�k�t��p�:����78K#���Ck��%K|lp��
�]����u����U�{�-y
K^�8D�t.�=�FZ�1�JZ�^��w��]�]��k��u�����
kgu="�����bɏ���X]]��G�G人.�K�zz��\v�"��q��à'�7�!͑���F�3���@=�4��u�i˴�$�N�dD�i&�y�����L��hsx.Ig���lٲ��m�R��nc��`ц��3�ZK���O��O�Cm����J��/�r�Zw��k��z�U�m�v$���/Ws՛�wU��_}�Z�.�=*��K5�
�D���ɪB�p�g���И-[*��J��R�pV�VMրۥ��3�,��\0y��0
�}ؿ��O����f��|�0���\E�j�C��pGo��\c=��W]^q�����V�ֶz1֏��6oJ���c�7`��/_��˅���׷�l�1ݶmLf��Y[R[q�zΆ{��3��`'z��"<�#t�6�����A&9~{
u��s?�v{U
endstream
endobj
13 0 obj
17764
endobj
14 0 obj
<< /Type /FontDescriptor /Ascent 891 /CapHeight 670 /Descent -216 /Flags 32
/FontBBox [-568 -307 2029 1006] /FontName /NHHCFL+TimesNewRomanPSMT /ItalicAngle
0 /StemV 0 /Leading 42 /MaxWidth 2000 /XHeight 454 /FontFile2 12 0 R >>
endobj
15 0 obj
[ 250 0 0 0 0 0 0 0 0 0 0 0 250 0 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 722 0 556 0 0 0 0 0 0 0 0 0 556 0 0 556 611 0 0 944 0 0 0 0 0 0 0 0
0 444 0 444 500 444 333 0 500 278 0 0 278 0 500 500 500 0 333 389 278 0 0
0 500 500 ]
endobj
8 0 obj
<< /Type /Font /Subtype /TrueType /BaseFont /NHHCFL+TimesNewRomanPSMT /FontDescriptor
14 0 R /Widths 15 0 R /FirstChar 32 /LastChar 121 /Encoding /MacRomanEncoding
>>
endobj
1 0 obj
<< /Title (solr-word) /Author (Grant Ingersoll) /Subject (solr word) /AAPL:Keywords
[ (solr, word, pdf) ] /Keywords (solr, word, pdf) /Creator (Microsoft Word)
/Producer (Mac OS X 10.5.5 Quartz PDFContext) /CreationDate (D:20081113133551Z00'00')
/ModDate (D:20081113133551Z00'00') >>
endobj
xref
0 16
0000000000 65535 f 
0000020275 00000 n 
0000000437 00000 n 
0000001588 00000 n 
0000000022 00000 n 
0000000418 00000 n 
0000000541 00000 n 
0000001553 00000 n 
0000020093 00000 n 
0000000639 00000 n 
0000001533 00000 n 
0000001671 00000 n 
0000001721 00000 n 
0000019576 00000 n 
0000019598 00000 n 
0000019843 00000 n 
trailer
<< /Size 16 /Root 11 0 R /Info 1 0 R /ID [ <6b8708c3178614e61c264756c0036b1a>
<6b8708c3178614e61c264756c0036b1a> ] >>
startxref
20574
%%EOF
PK|X	[��|��files/bug67394.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?>
<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">72</int>
  </lst>
  <lst name="response">
    <lst name="stats">
      <lst name="stats_fields">
        <lst name="currentPrice">
          <null name="min" />
          <null name="max" />
          <long name="count">0</long>
          <long name="missing">0</long>
          <double name="sum">0.0</double>
          <double name="sumOfSquares">0.0</double>
          <double name="mean">NaN</double>
          <double name="stddev">0.0</double>
        </lst>
      </lst>
    </lst>
  </lst>
</response>PK|X	[R� ���files/response_xml.2.xmlnu�[���<response>

  <result name="response" numFound="3" start="0">
    <doc>
      <str name="id">parent_1</str>
      <doc>
        <str name="id">CHILD_1_1</str>
      </doc>
    </doc>
    <doc>
      <str name="id">parent_2</str>
      <doc>
        <str name="id">CHILD_2_1</str>
      </doc>
      <doc>
        <str name="id">CHILD_2_2</str>
      </doc>
    </doc>
    <doc>
      <str name="id">not_a_parent_1</str>
    </doc>
  </result>
</response>PK|X	[\W�Pcc&114.solrdismaxquery_trigramfields.phptnu�[���--TEST--
SolrDisMaxQuery - TrigramFields and slop (addTrigramPhraseField, removeTrigramPhraseField, setTrigramPhraseFields)
--FILE--
<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
->addTrigramPhraseField('cat', 2, 5.1)
->addTrigramPhraseField('feature', 4.5)
;
echo $dismaxQuery.PHP_EOL;
// reverse
$dismaxQuery
->removeTrigramPhraseField('cat');
echo $dismaxQuery.PHP_EOL;

$dismaxQuery->setTrigramPhraseFields('cat~5.1^2 feature^4.5');
echo $dismaxQuery.PHP_EOL;

$dismaxQuery->setTrigramPhraseSlop(2);
echo $dismaxQuery.PHP_EOL;
?>
--EXPECTF--
q=lucene&defType=%s&pf3=cat~5.1^2 feature^4.5
q=lucene&defType=%s&pf3=feature^4.5

Notice: SolrDisMaxQuery::setTrigramPhraseFields(): Parameter pf3 value(s) was overwritten by this call in %s on line %d
q=lucene&defType=%s&pf3=cat~5.1^2 feature^4.5
q=lucene&defType=%s&pf3=cat~5.1^2 feature^4.5&ps3=2
PK|X	[�⻂��#059.solrinputdocument_getfield.phptnu�[���--TEST--
SolrInputDocument::getField
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();

$doc->addField('id', 123);
$doc->addField('cat', 'Software');

var_dump($doc->getField('id'));
var_dump($doc->getField('non_existing_field'));
?>
--EXPECT--
object(SolrDocumentField)#2 (3) {
  ["name"]=>
  string(2) "id"
  ["boost"]=>
  float(0)
  ["values"]=>
  array(1) {
    [0]=>
    string(3) "123"
  }
}
bool(false)
PK|X	[+�tTMM100.solrresponse_json.phptnu�[���--TEST--
SolrResponse::getResponse - JSON response writer
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
		'wt' => 'json'
);

$client = new SolrClient ( $options );
$query = new SolrQuery ( "lucene" );

$response = $client->query ( $query );

$x = $response->getResponse();
var_dump($x instanceof SolrObject);
?>
--EXPECTF--
bool(true)PK|X	[Np,AAbug_68181.phptnu�[���--TEST--
Solr Bug #68181 - Conflict occurs when using SolrDisMax::addBoostQuery and setBoostQuery
--FILE--
<?php
$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery->setBoostQuery("failing:val^3")
->addBoostQuery('category','software',2)
->setBoostQuery("end:result^4");

echo $dismaxQuery.PHP_EOL;
?>
--EXPECTF--
Notice: SolrDisMaxQuery::addBoostQuery(): Parameter bq value(s) was overwritten by this call in %s on line %d

Notice: SolrDisMaxQuery::setBoostQuery(): Parameter bq value(s) was overwritten by this call in %s on line %d
q=lucene&defType=%s&bq=end:result^4PK|X	[�!��� 057.solrinputdocument_clone.phptnu�[���--TEST--
SolrInputDocument - clone
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();
$doc->setBoost(4);
$doc->addField('id', 334455);
$doc->addField('cat', 'Software', 4);
$doc->addField('cat', 'Lucene');

$doc2 = clone $doc;
$doc2->deleteField('id');
$doc2->addField('id', '88', 8);

print_r($doc->toArray());
print_r($doc2->toArray());
?>
--EXPECTF--
Array
(
    [document_boost] => 4
    [field_count] => 2
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 334455
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 4
                    [values] => Array
                        (
                            [0] => Software
                            [1] => Lucene
                        )

                )

        )

)
Array
(
    [document_boost] => 4
    [field_count] => 2
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 4
                    [values] => Array
                        (
                            [0] => Software
                            [1] => Lucene
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 8
                    [values] => Array
                        (
                            [0] => 88
                        )

                )

        )

)
PK|X	[g�4�uu192.solrparams_getparam.phptnu�[���--TEST--
SolrParams::getParam()
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->set('q', 'lucene')
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

var_dump($params->get('fq'));
var_dump($params->get('q'));
?>
--EXPECT--
array(2) {
  [0]=>
  string(20) "popularity:[10 TO *]"
  [1]=>
  string(9) "section:0"
}
string(6) "lucene"PK|X	[��a&��009.solrclient_optimize.phptnu�[���--TEST--
SolrClient::optimize() - Testing optimize
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$updateResponse = $client->optimize();
print $updateResponse->getRawRequest();
$updateResponse = $client->optimize(4,true,false);
print $updateResponse->getRawRequest();
$updateResponse = $client->optimize('5',true,false);
print $updateResponse->getRawRequest();
?>
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="1" softCommit="false" waitSearcher="true"/>
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="4" softCommit="true" waitSearcher="false"/>
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="5" softCommit="true" waitSearcher="false"/>
PK|X	[a�ʣ�� 059.solrinputdocument_clear.phptnu�[���--TEST--
SolrInputDocument::clear - Clear document fields
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();


$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');
$doc->addField('z1', 'z1val');

$doc->clear();

var_dump($doc->toArray());
?>
--EXPECT--
array(3) {
  ["document_boost"]=>
  float(0)
  ["field_count"]=>
  int(0)
  ["fields"]=>
  array(0) {
  }
}
PK|X	[����		bug_72740.phptnu�[���--TEST--
Solr Bug #72740 - addPhraseField return wrong query
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH
);

$client = new SolrClient( $options );

$dismaxQuery = new SolrDisMaxQuery( '*:*' );
$dismaxQuery->addPhraseField( "phraseField1", 10, 5 );
$dismaxQuery->addPhraseField( "phraseField2", 5, 1 );
$dismaxQuery->addSortField('score', SolrQuery::ORDER_DESC);
$dismaxQuery->addSortField('manufacturedate_dt', SolrQuery::ORDER_DESC);

// Scenario 1: DisMax Query Parser - Adds Phrase Fields with both boost and slop.
// Expect:
// - pf parameter should list each phrase field with ~ and ^ prefix for slop and boost value respectively.
$queryResponse = $client->query( $dismaxQuery );

print_r($queryResponse->getResponse()->responseHeader->params);

// Scenario 2: Same as Scenario 1, now including explicit query fields too.
// Expect:
// - pf parameter should list each phrase field with ~ and ^ prefix for slop and boost value respectively.
// - qf parameter should list each query field with a trailing ^ (no boost here).
$dismaxQuery->addQueryField('score');
$dismaxQuery->addQueryField('manufacturedate_dt');

$queryResponse = $client->query( $dismaxQuery );

print_r($queryResponse->getResponse()->responseHeader->params);

// Scenario 3: Same as Scenario 2, now including explicit boost value for the query fields.
// Expect:
// - pf parameter should list each phrase field with ~ and ^ prefix for slop and boost value respectively.
// - qf parameter should list each query field with a ^ prefix for boost value.
$dismaxQuery->removeQueryField('score');
$dismaxQuery->removeQueryField('manufacturedate_dt');
$dismaxQuery->addQueryField('score', 3);
$dismaxQuery->addQueryField('manufacturedate_dt', 7);

$queryResponse = $client->query( $dismaxQuery );

print_r($queryResponse->getResponse()->responseHeader->params);
?>
--EXPECTF--
SolrObject Object
(
    [q] => *:*
    [defType] => edismax
    [indent] => on
    [pf] => phraseField1~5^10 phraseField2~1^5
    [sort] => score desc,manufacturedate_dt desc
    [version] => 2.2
    [wt] => xml
)
SolrObject Object
(
    [q] => *:*
    [defType] => edismax
    [indent] => on
    [qf] => score^ manufacturedate_dt^
    [pf] => phraseField1~5^10 phraseField2~1^5
    [sort] => score desc,manufacturedate_dt desc
    [version] => 2.2
    [wt] => xml
)
SolrObject Object
(
    [q] => *:*
    [defType] => edismax
    [indent] => on
    [qf] => score^3 manufacturedate_dt^7
    [pf] => phraseField1~5^10 phraseField2~1^5
    [sort] => score desc,manufacturedate_dt desc
    [version] => 2.2
    [wt] => xml
)PK|X	[}���#059.solrinputdocument_getboost.phptnu�[���--TEST--
SolrInputDocument::getBoost - Test document fieldnames
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();
$doc->setBoost(4);
var_dump($doc->getBoost());
?>
--EXPECT--
float(4)PK|X	[k
���� 047.solrobject_offsetExists.phptnu�[���--TEST--
SolrObject::offsetExists
--FILE--
<?php

require_once "bootstrap.inc";

$constructedSolrObject = new SolrObject();
var_dump(isset($constructedSolrObject['responseHeader']));

$xml_reponse = file_get_contents(EXAMPLE_RESPONSE_XML_1);
$solrObject = SolrUtils::digestXMLResponse($xml_reponse);

var_dump(isset($solrObject['responseHeader']));
var_dump(isset($solrObject['nonexisting']));

?>
--EXPECT--
bool(false)
bool(true)
bool(false)PK|X	[����))4050.solrinputdocument_addchilddocument_02_error.phptnu�[���--TEST--
SolrInputDocument::addChildDocument()/SolrInputDocument::addChildDocuments() - Expected SolrIllegalArgumentException
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$child1 = new SolrInputDocument();
$child2 = new SolrInputDocument();

$doc->addField('id', 1123);
$doc->addField('features', "PHP Client Side");
$doc->addField('features', "Fast development cycles");
$doc->cat   = 'Information Technology';
try {
	$doc->addChildDocument($child1);
} catch (SolrIllegalArgumentException $e) {
	echo $e->getMessage(). PHP_EOL;
}

$children = array($child1, $child2);
try {
	$doc->addChildDocuments($children);
} catch (SolrIllegalArgumentException $e) {
	echo $e->getMessage(). PHP_EOL;
}
?>
--EXPECT--
Child document has no fields
SolrInputDocument number 1 has no fieldsPK|X	[~� x��(105.solrresponse_child_doc_response.phptnu�[���--TEST--
Response - Response with child documents
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml);
print_r($response);
?>
--EXPECT--
SolrObject Object
(
    [response] => SolrObject Object
        (
            [numFound] => 3
            [start] => 0
            [docs] => Array
                (
                    [0] => SolrObject Object
                        (
                            [id] => parent_1
                            [_childDocuments_] => Array
                                (
                                    [0] => SolrObject Object
                                        (
                                            [id] => CHILD_1_1
                                        )

                                )

                        )

                    [1] => SolrObject Object
                        (
                            [id] => parent_2
                            [_childDocuments_] => Array
                                (
                                    [0] => SolrObject Object
                                        (
                                            [id] => CHILD_2_1
                                        )

                                    [1] => SolrObject Object
                                        (
                                            [id] => CHILD_2_2
                                        )

                                )

                        )

                    [2] => SolrObject Object
                        (
                            [id] => not_a_parent_1
                        )

                )

        )

)
PK|X	[��W�##018.solrclient_setservlet.phptnu�[���--TEST--
SolrClient::setServlet() - set different servlet for a certain request type
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$response = $client->ping();
echo $response->getRequestUrl().PHP_EOL;

$client->setServlet(SolrClient::PING_SERVLET_TYPE, 'select');
$response = $client->ping();
echo $response->getRequestUrl().PHP_EOL;

?>
--EXPECTF--
http://%s/solr/collection1/admin/ping/?version=2.2&indent=on&wt=xml
http://%s/solr/collection1/select/?version=2.2&indent=on&wt=xml
PK|X	[S/

"004.solrclient_query_response.phptnu�[���--TEST--
SolrClient::query() - Sending a chained query request
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);


$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

$response = $query_response->getResponse();

var_dump(get_class($response->responseHeader->params) == 'SolrObject');
var_dump(property_exists($response->responseHeader->params, 'q'));
var_dump(property_exists($response->responseHeader->params, 'wt'));
var_dump(property_exists($response->responseHeader->params, 'version'));
?>
--EXPECTF--
bool(true)
bool(true)
bool(true)
bool(true)PK|X	[������-003.solrclient_addDocuments_commitwithin.phptnu�[���--TEST--
SolrClient::addDocuments() - sending multiple documents to the Solr server
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$doc2 = new SolrInputDocument();

$doc2->addField('id', 12345);
$doc->addField('cat', 'Category1');
$doc->addField('cat', 'Category2');

$docs = array($doc, $doc2);

$updateResponse = $client->addDocuments($docs, true, 500);
print_r($updateResponse->getResponse());

?>
--EXPECTF--
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => %d
        )

)
PK|X	[�����006.solrclient_system.phptnu�[���--TEST--
SolrClient::system() - Retrieve Solr Server/System Info
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$genericResponse = $client->system();
var_dump(get_class($genericResponse->getResponse())) . PHP_EOL;
var_dump(get_class($genericResponse->getResponse()->system));
?>
--EXPECTF--
string(10) "SolrObject"
string(10) "SolrObject"
PK|X	[��E;��!034.solrdocument_deletefield.phptnu�[���--TEST--
SolrDocument::deleteField
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrDocument();

$doc->check = 1;

var_dump($doc->getFieldCount());
$doc->deleteField('check');
var_dump($doc->getFieldCount());
?>
--EXPECTF--
int(1)
int(0)PK|X	[��~kDD#017.solrclient_deletebyqueries.phptnu�[���--TEST--
SolrClient::deleteByQueries() - delete by multiple queries
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$serverOutput = $client->deleteByQueries([
	'id:3675',
	'id:2548'
]);

$response = $serverOutput->getResponse();

print_r($serverOutput->getRawRequest());
print_r($response);

try {
	$client->deleteByQueries(array(0,''));
} catch (SolrIllegalArgumentException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage());
}
?>
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<delete>
  <query>id:3675</query>
  <query>id:2548</query>
</delete>
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

)
Exception 4000: Query number 1 is not a valid query string

PK|X	[*��ff037.solrdocument_getfield.phptnu�[���--TEST--
SolrDocument::getField
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);


$doc = new SolrDocument();

$doc->check = 1;

var_dump($doc->getField('check') instanceof SolrDocumentField);
?>
--EXPECT--
bool(true)PK|X	[,}����#202.solrdocument_new_serialize.phptnu�[���--TEST--
SolrDocument - new serialize api
--SKIPIF--
<?php if (PHP_VERSION_ID < 80100) die("skip PHP 8.1+ only"); ?>
--FILE--
<?php
$xml_contents = '<?xml version="1.0" encoding="UTF-8"?><solr_document><fields><field name="id"><field_value>parent_2</field_value></field></fields></solr_document>';
$xml_length = strlen($xml_contents);
$old = sprintf('C:12:"SolrDocument":%d:{%s}', $xml_length, $xml_contents);
$new = sprintf('O:12:"SolrDocument":1:{s:3:"xml";s:%d:"%s";}', $xml_length, $xml_contents);

/** @var SolrDocument $docOld */
$docOld = unserialize($old);
/** @var SolrDocument $docNew */
$docNew = unserialize($new);
var_dump(
	json_encode($docOld->toArray()) === json_encode($docNew->toArray())
);
var_dump($docNew->__serialize());
?>
--EXPECT--
bool(true)
array(1) {
  ["xml"]=>
  string(172) "<?xml version="1.0" encoding="UTF-8"?>
<solr_document>
  <fields>
    <field name="id">
      <field_value>parent_2</field_value>
    </field>
  </fields>
</solr_document>
"
}
PK|X	[�uM		 045.solrobject_array_access.phptnu�[���--TEST--
SolrObject - checking dimension access on properties.
--FILE--
<?php

require_once "bootstrap.inc";

$xml_reponse = file_get_contents(EXAMPLE_RESPONSE_XML_1);

$solrObject = SolrUtils::digestXMLResponse($xml_reponse);

$header = $solrObject['responseHeader'];

$system = $solrObject['system'];

print_r($header);

print_r($system);

?>
--EXPECT--
SolrObject Object
(
    [status] => 0
    [QTime] => 72
)
SolrObject Object
(
    [threadCount] => SolrObject Object
        (
            [current] => 15
            [peak] => 15
            [daemon] => 13
        )

    [threadDump] => SolrObject Object
        (
            [thread] => SolrObject Object
                (
                    [id] => 1
                    [name] => main
                    [state] => RUNNABLE
                    [native] => 1
                    [cpuTime] => 3340.0000ms
                    [userTime] => 3180.0000ms
                    [stackTrace] => Array
                        (
                            [0] => java.net.PlainSocketImpl.socketAccept(Native Method)
                            [1] => java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
                            [2] => java.net.ServerSocket.implAccept(ServerSocket.java:450)
                            [3] => java.net.ServerSocket.accept(ServerSocket.java:421)
                            [4] => org.apache.catalina.core.StandardServer.await(StandardServer.java:389)
                            [5] => org.apache.catalina.startup.Catalina.await(Catalina.java:642)
                            [6] => org.apache.catalina.startup.Catalina.start(Catalina.java:602)
                            [7] => sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                            [8] => sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                            [9] => sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                            [10] => java.lang.reflect.Method.invoke(Method.java:585)
                            [11] => org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
                            [12] => org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
                        )

                )

        )

)
PK|X	[��YB��$043.solrobject_magic_properties.phptnu�[���--TEST--
SolrObject - test property access
--FILE--
<?php

require_once "bootstrap.inc";

$xml_reponse = file_get_contents(EXAMPLE_RESPONSE_XML_1);

$solrObject = SolrUtils::digestXMLResponse($xml_reponse);

$header = $solrObject->responseHeader;

$system = $solrObject->system;

var_dump(isset($solrObject['system']));
var_dump(property_exists($solrObject, 'system'));
?>
--EXPECT--
bool(true)
bool(true)PK|X	[I--)gg(059.solrinputdocument_getfieldnames.phptnu�[���--TEST--
SolrInputDocument::getFieldNames - Test document fieldnames
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('manu_id_s', 'apache');
$doc->addField('cat', 'Software');

print_r($doc->getFieldNames());
?>
--EXPECT--
Array
(
    [0] => id
    [1] => manu_id_s
    [2] => cat
)
PK|X	[z��B!024.solrdocument_child_fetch.phptnu�[���--TEST--
SolrClient::query() - Query child documents SolrObject (Integ)
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_STORE_PATH,
		'wt' => 'xml'
);

$client = new SolrClient ( $options );

$query = new SolrQuery ();

$query->setQuery ( 'id:1 AND {!parent which=$parentFilter}' );
$query->setParam ( 'parentFilter', 'content_type_s:product' );
$query->addFilterQuery('{!parent which=$parentFilter}');

$query->addField ( '*' );
$query->addField ( '[child parentFilter=$parentFilter]' );

$query->setStart ( 0 );

$query->setRows ( 50 );
$queryResponse = $client->query ( $query );

$response = $queryResponse->getResponse ();
echo "----XML----" . PHP_EOL;
var_dump($response->response->docs[0]->_childDocuments_[0]->id);

echo "----JSON----" . PHP_EOL;
$options['wt'] = 'json';
$client = new SolrClient ( $options );
$queryResponse = $client->query($query);
$response = $queryResponse->getResponse ();
var_dump($response->response->docs[0]->_childDocuments_[0]->id);
?>
--EXPECT--
----XML----
string(9) "IMM-HOW-S"
----JSON----
string(9) "IMM-HOW-S"PK|X	[}3�\77070.solrquery_collapse.phptnu�[���--TEST--
SolrQuery::collapse - Collapse Using a SolrCollapseFunction
--FILE--
<?php

$query = new SolrQuery('lucene');
$collapseFunction = new SolrCollapseFunction('ISBN');
$collapseFunction->setMax(5);

$query->collapse($collapseFunction);

echo $query;
?>
--EXPECTF--
q=lucene&fq={!collapse field=ISBN max=5}
PK|X	[k���#109.solrresponse_gethttpstatus.phptnu�[���--TEST--
SolrResponse::getHttpStatus() - getHttpStatusMessage()
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);


$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

var_dump($query_response->getHttpStatus());
var_dump($query_response->getHttpStatusMessage());
?>
--EXPECTF--
int(200)
string(1) " "PK|X	[���072.solrquery_expand.phptnu�[���--TEST--
SolrQuery - Expand Component
--FILE--
<?php

$query = new SolrQuery('lucene');

$query->setExpand(true);
$query->setExpandRows(50);
$query->setExpandQuery('text:product');
$query->addExpandFilterQuery('manu:apple')->addExpandFilterQuery('inStock:true');
$query->addExpandSortField('score', SolrQuery::ORDER_DESC)->addExpandSortField('title', SolrQuery::ORDER_ASC);

// removal test
$query->addExpandFilterQuery('extra')->removeExpandFilterQuery('extra');
$query->addExpandSortField('extra', SolrQuery::ORDER_ASC)->removeExpandSortField('extra');

echo $query.PHP_EOL;
var_dump($query->getExpand()).PHP_EOL;
var_dump($query->getExpandRows()).PHP_EOL;
var_dump($query->getExpandQuery()).PHP_EOL;
var_dump($query->getExpandFilterQueries()).PHP_EOL;
var_dump($query->getExpandSortFields()).PHP_EOL;
?>
--EXPECTF--
q=lucene&expand=true&expand.rows=50&expand.q=text:product&expand.fq=manu:apple&expand.fq=inStock:true&expand.sort=score desc,title asc
bool(true)
int(50)
string(12) "text:product"
array(2) {
  [0]=>
  string(10) "manu:apple"
  [1]=>
  string(12) "inStock:true"
}
array(2) {
  [0]=>
  string(5) "score"
  [1]=>
  string(5) "title"
}
PK|X	[c�8W��190.solrparams_setparam.phptnu�[���--TEST--
SolrParams::setParam()
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->setParam('q', 'lucene')
	->setParam('start', 0)
	->setParam('rows', 10)
;

echo $params;
?>
--EXPECTF--
q=lucene&start=0&rows=10
PK|X	[[)bug_61836_error.phptnu�[���--TEST--
Solr bug #61836 - Extending SolrDocument
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php
class Model_SolrDocument extends SolrDocument
{
	public function addField($fieldName, $fieldValue,$boost=0)
	{
		if (is_bool($fieldValue))
			$fieldValue = ($fieldValue ? '1' : '0');
		return parent::addField($fieldName, $fieldValue);
	}
}

$doc = new Model_SolrDocument();
//$doc->addField('testname', true);
?>
--EXPECTF--
Fatal error: Class Model_SolrDocument %s final class %s
PK|X	[�7���/027.solrdocument_getinputdocument_children.phptnu�[���--TEST--
SolrDocument::getInputDocument() - Where document has child docs
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);

foreach($response->response->docs as $doc)
{
	$childrenOfTheInput = $doc->getInputDocument()->getChildDocuments();

	if ($childrenOfTheInput)
	{
		$firstChild = $childrenOfTheInput[0];
		var_dump(get_class($firstChild));
		var_dump(current($childrenOfTheInput)->toArray());
	}
}

?>
--EXPECT--
string(17) "SolrInputDocument"
array(3) {
  ["document_boost"]=>
  float(0)
  ["field_count"]=>
  int(1)
  ["fields"]=>
  array(1) {
    [0]=>
    object(SolrDocumentField)#9 (3) {
      ["name"]=>
      string(2) "id"
      ["boost"]=>
      float(0)
      ["values"]=>
      array(1) {
        [0]=>
        string(9) "CHILD_1_1"
      }
    }
  }
}
string(17) "SolrInputDocument"
array(3) {
  ["document_boost"]=>
  float(0)
  ["field_count"]=>
  int(1)
  ["fields"]=>
  array(1) {
    [0]=>
    object(SolrDocumentField)#10 (3) {
      ["name"]=>
      string(2) "id"
      ["boost"]=>
      float(0)
      ["values"]=>
      array(1) {
        [0]=>
        string(9) "CHILD_2_1"
      }
    }
  }
}
PK|X	[�E*��001.solrclient_addDocument.phptnu�[���--TEST--
SolrClient::addDocument() - sending document to the Solr server
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$doc2 = new SolrInputDocument();

$doc2->addField('id', 12345);
$doc->addField('cat', 'Category1');
$doc->addField('cat', 'Category2');

$updateResponse = $client->addDocument($doc, true, 500);
$updateResponse = $client->addDocument($doc2, true, 500);

print_r($updateResponse->getResponse());

?>
--EXPECTF--
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => %d
        )

)
PK|X	[�$�//!066.solrquery_TermsComponent.phptnu�[���--TEST--
SolrQuery - testing TermsComponent
--FILE--
<?php

$query = new SolrQuery();

$dumpVars = function () use ($query) {
	var_dump(
		$query->getTerms(),
		$query->getTermsField(),
		$query->getTermsLowerBound(),
		$query->getTermsUpperBound(),
		$query->getTermsIncludeLowerBound(),
		$query->getTermsIncludeUpperBound(),
		$query->getTermsMinCount(),
		$query->getTermsMaxCount(),
		$query->getTermsPrefix(),
		$query->getTermsLimit(),
		$query->getTermsReturnRaw(),
		$query->getTermsSort()
	);
};

ob_start();
$dumpVars();
$nullOutput = ob_get_clean();

$query->setTerms(true);

$query->setTermsField('israel');

$query->setTermsLowerBound('june');

$query->setTermsUpperBound('joshua');

$query->setTermsIncludeLowerBound(false);

$query->setTermsIncludeUpperBound(0);

$query->setTermsMinCount(50);

$query->setTermsMaxCount(200);

$query->setTermsPrefix('A');

$query->setTermsLimit(45);

$query->setTermsReturnRaw(false);

$query->setTermsSort(SolrQuery::TERMS_SORT_INDEX);

echo $query . PHP_EOL . PHP_EOL;

$dumpVars();


$query->setTermsSort(SolrQuery::TERMS_SORT_COUNT);
echo PHP_EOL . $query . PHP_EOL . PHP_EOL;

var_dump(
	$query->getTermsSort()
);

echo $nullOutput;
?>
--EXPECTF--
terms=true&terms.fl=israel&terms.lower=june&terms.upper=joshua&terms.lower.incl=false&terms.upper.incl=false&terms.mincount=50&terms.maxcount=200&terms.prefix=A&terms.limit=45&terms.raw=false&terms.sort=index

bool(true)
string(6) "israel"
string(4) "june"
string(6) "joshua"
bool(false)
bool(false)
int(50)
int(200)
string(1) "A"
int(45)
bool(false)
int(0)

terms=true&terms.fl=israel&terms.lower=june&terms.upper=joshua&terms.lower.incl=false&terms.upper.incl=false&terms.mincount=50&terms.maxcount=200&terms.prefix=A&terms.limit=45&terms.raw=false&terms.sort=count

int(1)
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
PK|X	[X�Z(DD,052.solrinputdocument_haschilddocuments.phptnu�[���--TEST--
SolrInputDocument::hasChildDocuments() - test
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$secondDoc = new SolrInputDocument();

$doc->addField('id', 1123);
$doc->addField('features', "PHP Client Side");
$doc->addField('features', "Fast development cycles");
$doc->cat   = 'Information Technology';

$secondDoc->addField('cat', 'Lucene Search');
$secondDoc->cat = 'Custom Search';

$doc->addChildDocument($secondDoc);

var_dump($doc->hasChildDocuments());
var_dump($secondDoc->hasChildDocuments());
?>
--EXPECT--
bool(true)
bool(false)PK|X	[.�@622&058.solrinputdocument_deletefield.phptnu�[���--TEST--
SolrInputDocument::deleteField - Delete a field from SolrInputDocument
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');
$doc->addField('deleteme', 'Lucene');
$doc->deleteField('deleteme');

print_r($doc->toArray());
?>
--EXPECT--
Array
(
    [document_boost] => 0
    [field_count] => 2
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 334455
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Software
                            [1] => Lucene
                        )

                )

        )

)
PK|X	[�"y�..!017.solrclient_deletebyquery.phptnu�[���--TEST--
SolrClient::deleteByQuery() - delete by query
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$serverOutput = $client->deleteByQuery('id:3675');

$response = $serverOutput->getResponse();

print_r($serverOutput->getRawRequest());
print_r($response);
?>
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<delete>
  <query>id:3675</query>
</delete>
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

)
PK|X	[�_R�xx012.solrclient_getById.phptnu�[���--TEST--
SolrClient::getById() - Testing Real Time Get by id
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$response = $client->getById('GB18030TEST');
var_dump(isset($response->getArrayResponse()['doc'])).PHP_EOL;
var_dump($response->getResponse()->doc->id) . PHP_EOL;
?>
--EXPECTF--
bool(true)
string(11) "GB18030TEST"PK|X	[�2��!200.solrextractrequest_clone.phptnu�[���--TEST--
SolrExtractRequest - clone [exception]
--FILE--
<?php

$params = new SolrModifiableParams();

$request = SolrExtractRequest::createFromFile('test', $params);

try {
	$request2 = clone $request;
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()).PHP_EOL;
}

?>
--EXPECTF--
Exception 4001: Cloning of SolrExtractRequest objects is currently not supported
PK|X	[�T��bug_unknown.phptnu�[���--TEST--
Solr Bug #70496 - Failed to parse 500 error response when Solr it lacks msg PHPS RW
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";
$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => SOLR_SERVER_PATH,
		'wt'	   => 'phps'
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$func = new SolrCollapseFunction('manu_id_s');

$func->setMax('sum(cscore(),field(manu_id_s))');  
$func->setNullPolicy(SolrCollapseFunction::NULLPOLICY_EXPAND);

$query->collapse($func);
try {
	$queryResponse = $client->query($query);
} catch (SolrServerException $e) {
	printf("Exception code %d", $e->getCode());
	assert(strlen($e->getMessage()) > 0, 'Exception message is empty');
}

?>

OK
--EXPECTF--
Exception code 500
OKPK|X	[L��!��(061.solrquery_simpleFacetParameters.phptnu�[���--TEST--
SolrQuery - testing SimpleFacetParameters
--FILE--
<?php

$query = new SolrQuery();

$query->setFacet(0);

$query->addFacetField('israel')->addFacetField('israel2');

$query->addFacetQuery('silk')->addFacetQuery('name:june');

$query->setFacetPrefix('A')->setFacetPrefix('C', 'june');

$query->setFacetSort(1)->setFacetSort(0, 'june');

$query->setFacetLimit(98)->setFacetLimit(44, 'june');

$query->setFacetOffset(110)->setFacetOffset(12, 'june');

$query->setFacetMinCount(4)->setFacetMinCount(30, 'june');

$query->setFacetMissing(1)->setFacetMissing(0, 'june');

$query->setFacetMethod('enum')->setFacetMethod('fc', 'june');

$query->setFacetEnumCacheMinDefaultFrequency(25);

echo $query . PHP_EOL . PHP_EOL;

var_dump(
	$query->getFacet(),
	$query->getFacetFields(),
	$query->getFacetQueries(),
	$query->getFacetPrefix(),
	$query->getFacetPrefix('june'),
	$query->getFacetSort(),
	$query->getFacetSort('june'),
	$query->getFacetLimit(),
	$query->getFacetLimit('june'),
	$query->getFacetOffset(),
	$query->getFacetOffset('june'),
	$query->getFacetMinCount(),
	$query->getFacetMinCount('june'),
	$query->getFacetMissing(),
	$query->getFacetMissing('june'),
	$query->getFacetMethod(),
	$query->getFacetMethod('june')
);
?>
--EXPECTF--
facet=false&facet.field=israel&facet.field=israel2&facet.query=silk&facet.query=name:june&facet.prefix=A&f.june.facet.prefix=C&facet.sort=count&f.june.facet.sort=index&facet.limit=98&f.june.facet.limit=44&facet.offset=110&f.june.facet.offset=12&facet.mincount=4&f.june.facet.mincount=30&facet.missing=true&f.june.facet.missing=false&facet.method=enum&f.june.facet.method=fc&facet.enum.cache.minDf=25

bool(false)
array(2) {
  [0]=>
  string(6) "israel"
  [1]=>
  string(7) "israel2"
}
array(2) {
  [0]=>
  string(4) "silk"
  [1]=>
  string(9) "name:june"
}
string(1) "A"
string(1) "C"
int(1)
int(0)
int(98)
int(44)
int(110)
int(12)
int(4)
int(30)
bool(true)
bool(false)
string(4) "enum"
string(2) "fc"
PK|X	[0�%>>(059.solrinputdocument_getfieldcount.phptnu�[���--TEST--
SolrInputDocument::getFieldCount
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();

$doc->addField('id', 123);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Search Server');
$doc->addField('features', 'Software');

var_dump($doc->getFieldCount());

?>
--EXPECT--
int(3)PK|X	[t|���013.solrclient_getByIds.phptnu�[���--TEST--
SolrClient::getByIds() - Testing Real Time Get by ids
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$response = $client->getByIds(['GB18030TEST', '6H500F0']);
var_dump(isset($response->getArrayResponse()['response']['docs'])) . PHP_EOL;
var_dump($response->getResponse()->response->start) . PHP_EOL;
try {
	$response = $client->getByIds(['GB18030TEST', '']);
} catch (Exception $e) {
	printf("Exception %d: %s", $e->getCode(), $e->getMessage());
}
echo PHP_EOL.PHP_EOL;
// make sure request was reset
$response = $client->getByIds(['GB18030TEST']);
$headers = explode(PHP_EOL, trim($response->getRawRequestHeaders()));

$headers = array_filter($headers, function($header) {
    return strstr($header, 'collection1') !== false;
});

print_r(implode(PHP_EOL, $headers).PHP_EOL);

echo PHP_EOL;
try {
	$response = $client->getByIds([]);
} catch (Exception $e) {
	printf("Exception %d: %s", $e->getCode(), $e->getMessage());
}
?>
--EXPECTF--
bool(true)
int(0)
Exception 4000: Invalid id at position 1

GET /solr/collection1/get/?version=2.2&indent=on&wt=xml&ids=GB18030TEST HTTP/1.1

Exception 4000: Invalid parameter: at least 1 ID is required. Passed an empty array.
PK|X	[
�{���!082.solrutils_getsolrversion.phptnu�[���--TEST--
SolrUtils::getSolrVersion() - Returns solr dotted version
--FILE--
<?php

$version = SolrUtils::getSolrVersion();
echo $version . PHP_EOL;

echo solr_get_version() . PHP_EOL;
?>
--EXPECTF--
%d.%d.%d
%d.%d.%dPK|X	[���]��!032.solrdocument_fieldexists.phptnu�[���--TEST--
SolrDocument::fieldExists
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);


$doc = new SolrDocument();

$doc->check = 1;

var_dump($doc->fieldExists('check'));
var_dump($doc->fieldExists('nonExistingField'));
?>
--EXPECT--
bool(true)
bool(false)PK|X	[sU~��000.solr_int_arg.phptnu�[���--TEST--
Solr - Accept int (non-strict mode
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

case_title(1, 'No arguments passed');
$client = new SolrClient($options);
$updateResponse = $client->optimize();
print $updateResponse->getRawRequest();

case_title(2, 'int argument passed');
$updateResponse = $client->optimize(4, true, false);
print $updateResponse->getRawRequest();

case_title(3, 'string argument passed');
$updateResponse = $client->optimize('5', true, false);
print $updateResponse->getRawRequest();

case_title(4, 'object argument passed');
try {
	$updateResponse = $client->optimize(new StdClass());
} catch (SolrIllegalArgumentException $e) {
	echo $e->getMessage() . PHP_EOL;
}
--EXPECTF--

case #1: No arguments passed
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="1" softCommit="false" waitSearcher="true"/>

case #2: int argument passed
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="4" softCommit="true" waitSearcher="false"/>

case #3: string argument passed
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="5" softCommit="true" waitSearcher="false"/>

case #4: object argument passed
maxSegments must be of type int.PK|X	[m��+003.solrclient_options.phptnu�[���--TEST--
SolrClient::__construct() - Test options
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'port'     => SOLR_SERVER_PORT,
    'password' => SOLR_SERVER_PASSWORD,
    'path'     => SOLR_SERVER_PATH,
	'timeout'  => 400
);

$client = new SolrClient($options);
$pingResponse = $client->ping();
print_r($pingResponse->getRawResponse());

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
	'port'     => strval(SOLR_SERVER_PORT),
    'password' => SOLR_SERVER_PASSWORD,
    'path'     => '/'.SOLR_SERVER_PATH,
	'timeout'  => '400'
);

$client = new SolrClient($options);
$pingResponse = $client->ping();
print_r($pingResponse->getRawResponse());

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'port' => SOLR_SERVER_PORT,
		'password' => SOLR_SERVER_PASSWORD,
		'path' => SOLR_SERVER_PATH,
		'proxy_host' => 'localhost',
		'proxy_login' => 'test',
		'proxy_password' => 'password',
		'proxy_port' => 8181,
		'query_string_delimiter' => '&'
);

$client = new SolrClient($options);
try {
	$pingResponse = $client->ping();
} catch (SolrClientException $e) {
	print_exception($e);
}

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'port' => SOLR_SERVER_PORT,
		'password' => SOLR_SERVER_PASSWORD,
		'path' => SOLR_SERVER_PATH,
		'proxy_host' => 'localhost',
		'proxy_login' => 'test',
		'proxy_password' => 'password',
		'proxy_port' => '8181',
		'query_string_delimiter' => '&'
);

$client = new SolrClient($options);
try {
	$pingResponse = $client->ping();
} catch (SolrClientException $e) {
	print_exception($e);
}

try {
	$client = new SolrClient(array());
} catch (SolrIllegalArgumentException $e) {
	print_exception($e);
}

$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'port'     => SOLR_SERVER_PORT,
		'password' => SOLR_SERVER_PASSWORD,
		'path'     => SOLR_SERVER_PATH,
		'ssl_cert' => '/tmp/unavailable.crt',
		'ssl_key'  => 'test',
		'ssl_keypassword' => 'test',
		'ssl_cainfo' => 'test',
		'ssl_capath' => '/tmp/'
);

$client = new SolrClient($options);
try {
	$pingResponse = $client->ping();
} catch (SolrClientException $e) {
	print_exception($e);
}

?>
--EXPECTF--
HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Content-Length: 0

SolrClientException 1004: Solr HTTP Error 7: 'Couldn't connect to server' 
SolrClientException 1004: Solr HTTP Error 7: 'Couldn't connect to server' 
SolrIllegalArgumentException 4000: The SolrClient options cannot be an empty array


PK|X	[c��		#109.solrresponse_getrequesturl.phptnu�[���--TEST--
SolrResponse::getRequestUrl() - Get Raw Response Headers
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);


$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

echo $query_response->getRequestUrl();
?>
--EXPECTF--
http://%s:%s/solr/collection1/select/?version=2.2&indent=on&wt=xmlPK|X	[���UUbug_68179.phptnu�[���--TEST--
Solr Bug #68179 - Solr Params (Argument list) separator disappears
--FILE--
<?php
$dismaxQuery = new SolrDisMaxQuery('score');
$dismaxQuery->addSortField('price', SolrQuery::ORDER_ASC);
$dismaxQuery->addSortField('score', SolrQuery::ORDER_DESC);
echo $dismaxQuery.PHP_EOL;
?>
--EXPECTF--
q=score&defType=%s&sort=price asc,score descPK|X	[�V?i+104.solrresponse_get_response_maxscore.phptnu�[���--TEST--
SolrResponse::getResponse() - maxScore
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
		'wt'=> 'xml'
);

$client = new SolrClient ( $options );

$q = new SolrQuery("lucene");
$q->addField('score');
$response = $client->query ( $q );
$arrayResponse = $response->getArrayResponse();
var_dump($arrayResponse['response']['maxScore']);
var_dump($response->getResponse()->response->maxScore);
var_dump($response->getResponse()->response->start);
var_dump($response->getResponse()->response->numFound);
var_dump(is_array($response->getResponse()->response->docs));
echo "------ W/O maxScore ------".PHP_EOL;
$q->removeField('score');
$response = $client->query ( $q );
var_dump($response->getResponse()->response->start);
var_dump($response->getResponse()->response->numFound);
var_dump(is_array($response->getResponse()->response->docs));
var_dump(property_exists($response->getResponse()->response, 'maxScore'));
?>
--EXPECTF--
float(%f)
float(%f)
int(%d)
int(%d)
bool(true)
------ W/O maxScore ------
int(0)
int(1)
bool(true)
bool(false)PK|X	[�C����$046.solrobject_getpropertynames.phptnu�[���--TEST--
SolrObject - SolrObject::getPropertyNames()
--FILE--
<?php

$solrObject = new SolrObject();

var_dump($solrObject->getPropertyNames());

require_once "bootstrap.inc";

$xml_reponse = file_get_contents(EXAMPLE_RESPONSE_XML_1);

$solrObject = SolrUtils::digestXMLResponse($xml_reponse);

var_dump($solrObject->getPropertyNames());
?>
--EXPECT--
array(0) {
}
array(2) {
  [0]=>
  string(14) "responseHeader"
  [1]=>
  string(6) "system"
}
PK|X	[������)182.solrdocumentfield_unset_property.phptnu�[���--TEST--
SolrDocumentField - exception - on unset property
--FILE--
<?php

require_once "bootstrap.inc";

$field = new SolrDocumentField();

try {
	unset($field->name);
} catch (SolrIllegalOperationException $e) {
	printf("Exception %d: %s", $e->getCode(), $e->getMessage());
}

?>
--EXPECT--
Exception 1007: SolrDocumentField instances are read-only. Properties cannot be updated or removed.PK|X	[�����101.solrresponse_parseMode.phptnu�[���--TEST--
SolrResponse - ParseMode
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
		'wt' => 'xml'
);

$client = new SolrClient ( $options );
$query = new SolrQuery ( "lucene" );

$response = $client->query ( $query );

$response->setParseMode(SolrResponse::PARSE_SOLR_DOC);
$x = $response->getResponse();
var_dump($x->response->docs[0] instanceof SolrDocument);
?>
--EXPECTF--
bool(true)PK|X	[�����)063.solrquery_HighlightingParameters.phptnu�[���--TEST--
SolrQuery - testing HighlightingParameters
--FILE--
<?php

$query = new SolrQuery();

ob_start();
var_dump(
	$query->getHighlight(),
	$query->getHighlightQuery(),
	$query->getHighlightFields(),
	$query->getHighlightSnippets(),
	$query->getHighlightSnippets('june'),
	$query->getHighlightFragsize(),
	$query->getHighlightFragsize('june'),
	$query->getHighlightMergeContiguous(),
	$query->getHighlightMergeContiguous('june'),
	$query->getHighlightRequireFieldMatch(),
	$query->getHighlightMaxAnalyzedChars(),
	$query->getHighlightAlternateField(),
	$query->getHighlightAlternateField('june'),
	$query->getHighlightMaxAlternateFieldLength(),
	$query->getHighlightMaxAlternateFieldLength('june'),
	$query->getHighlightFormatter(),
	$query->getHighlightFormatter('june'),
	$query->getHighlightSimplePre(),
	$query->getHighlightSimplePre('june'),
	$query->getHighlightSimplePost(),
	$query->getHighlightSimplePost('june'),
	$query->getHighlightFragmenter(),
	$query->getHighlightFragmenter('june'),
	$query->getHighlightUsePhraseHighlighter(),
	$query->getHighlightHighlightMultiTerm(),
	$query->getHighlightRegexSlop(),
	$query->getHighlightRegexPattern(),
	$query->getHighlightRegexMaxAnalyzedChars()
);
$nullOutput = ob_get_clean();


$query->setHighlight(true);
$query->setHighlightQuery('title:PHP OR description:Solr');

$query->addHighlightField('a')->addHighlightField('a')->addHighlightField('a')
	->addHighlightField('b');

$query->removeHighlightField('a')->removeHighlightField('a')->removeHighlightField('a');

$query->setHighlightSnippets(4)->setHighlightSnippets(5, 'june');

$query->setHighlightFragsize(41)->setHighlightFragsize(52, 'june');

$query->setHighlightMergeContiguous(true)->setHighlightMergeContiguous(false, 'june');

$query->setHighlightRequireFieldMatch(true);

$query->setHighlightMaxAnalyzedChars(44)->setHighlightMaxAnalyzedChars(53);

$query->setHighlightAlternateField('pizza')->setHighlightAlternateField('bread', 'june');

$query->setHighlightAlternateField('blue')->setHighlightAlternateField('red','june');

$query->setHighlightAlternateField('a')->setHighlightAlternateField('b','june');

$query->setHighlightMaxAlternateFieldLength(300)->setHighlightMaxAlternateFieldLength(335, 'june');

$query->setHighlightFormatter('F')->setHighlightFormatter('G', 'june');

$query->setHighlightSimplePre('OO')->setHighlightSimplePre('PP', 'june');

$query->setHighlightSimplePost('ZZ')->setHighlightSimplePost('YY', 'june');

$query->setHighlightFragmenter('gap')->setHighlightFragmenter('space', 'june');

$query->setHighlightUsePhraseHighlighter(false);

$query->setHighlightHighlightMultiTerm(1);

$query->setHighlightRegexSlop(0.0025);

$query->setHighlightRegexPattern("israel")->setHighlightRegexPattern("ekpo");

$query->setHighlightRegexMaxAnalyzedChars(444)->setHighlightRegexMaxAnalyzedChars(5.0);

echo $query . PHP_EOL . PHP_EOL;

var_dump(
	$query->getHighlight(),
	$query->getHighlightFields(),
	$query->getHighlightSnippets(),
	$query->getHighlightSnippets('june'),
	$query->getHighlightFragsize(),
	$query->getHighlightFragsize('june'),
	$query->getHighlightMergeContiguous(),
	$query->getHighlightMergeContiguous('june'),
	$query->getHighlightRequireFieldMatch(),
	$query->getHighlightMaxAnalyzedChars(),
	$query->getHighlightAlternateField(),
	$query->getHighlightAlternateField('june'),
	$query->getHighlightMaxAlternateFieldLength(),
	$query->getHighlightMaxAlternateFieldLength('june'),
	$query->getHighlightFormatter(),
	$query->getHighlightFormatter('june'),
	$query->getHighlightSimplePre(),
	$query->getHighlightSimplePre('june'),
	$query->getHighlightSimplePost(),
	$query->getHighlightSimplePost('june'),
	$query->getHighlightFragmenter(),
	$query->getHighlightFragmenter('june'),
	$query->getHighlightUsePhraseHighlighter(),
	$query->getHighlightHighlightMultiTerm(),
	$query->getHighlightRegexSlop(),
	$query->getHighlightRegexPattern(),
	$query->getHighlightRegexMaxAnalyzedChars()
);
echo PHP_EOL.$nullOutput;
?>
--EXPECT--
hl=true&hl.q=title:PHP OR description:Solr&hl.fl=b&hl.snippets=4&f.june.hl.snippets=5&hl.fragsize=41&f.june.hl.fragsize=52&hl.mergeContiguous=true&f.june.hl.mergeContiguous=false&hl.requireFieldMatch=true&hl.maxAnalyzedChars=53&hl.alternateField=a&f.june.hl.alternateField=b&hl.maxAlternateFieldLength=300&f.june.hl.maxAlternateFieldLength=335&hl.formatter=F&f.june.hl.formatter=G&hl.simple.pre=OO&f.june.hl.simple.pre=PP&hl.simple.post=ZZ&f.june.hl.simple.post=YY&hl.fragmenter=gap&f.june.hl.fragmenter=space&hl.usePhraseHighlighter=false&hl.highlightMultiTerm=true&hl.regex.slop=0.0025&hl.regex.pattern=ekpo&hl.regex.maxAnalyzedChars=5

bool(true)
array(1) {
  [0]=>
  string(1) "b"
}
int(4)
int(5)
int(41)
int(52)
bool(true)
bool(false)
bool(true)
int(53)
string(1) "a"
string(1) "b"
int(300)
int(335)
string(1) "F"
string(1) "G"
string(2) "OO"
string(2) "PP"
string(2) "ZZ"
string(2) "YY"
string(3) "gap"
string(5) "space"
bool(false)
bool(true)
float(0.0025)
string(4) "ekpo"
int(5)

NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
PK|X	[ao>h�� 092.solrserverexception_php.phptnu�[���--TEST--
SolrServerException (phps) - Throw Exception on solr server exception using phps response writer
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
		'wt' => 'phps'
);

$client = new SolrClient ( $options );
$query = new SolrQuery ( "lucene\\" );
try {
	$response = $client->query ( $query );
	print_r ( $response );
} catch ( SolrServerException $e ) {
	echo sprintf("code: %d", $e->getCode()).PHP_EOL;
	echo sprintf("message: %s", $e->getMessage()).PHP_EOL;
}

?>
--EXPECTF--
code: %d
message: %sPK|X	[��t��,051.solrinputdocument_getchilddocuments.phptnu�[���--TEST--
SolrInputDocument::getChildDocuments() - test
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$secondDoc = new SolrInputDocument();

$doc->addField('id', 1123);
$doc->addField('features', "PHP Client Side");
$doc->addField('features', "Fast development cycles");
$doc->cat   = 'Information Technology';

$secondDoc->addField('cat', 'Lucene Search');
$secondDoc->cat = 'Custom Search';

$doc->addChildDocument($secondDoc);

$childs = $doc->getChildDocuments();
print_r($childs[0]->getField('cat'));

?>
--EXPECT--
SolrDocumentField Object
(
    [name] => cat
    [boost] => 0
    [values] => Array
        (
            [0] => Lucene Search
        )

)PK|X	[H{�66%029.solrdocument_serialize_php81.phptnu�[���--TEST--
SolrDocument - clone
--SKIPIF--
<?php if (PHP_VERSION_ID < 80100) die("skip PHP 8.1+ only"); ?>
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);

$doc =$response->response->docs[1];

$serializedString = serialize($doc);
print_r($serializedString);
echo PHP_EOL;
print_r(unserialize($serializedString)->toArray());
?>
--EXPECT--
O:12:"SolrDocument":1:{s:3:"xml";s:172:"<?xml version="1.0" encoding="UTF-8"?>
<solr_document>
  <fields>
    <field name="id">
      <field_value>parent_2</field_value>
    </field>
  </fields>
</solr_document>
";}
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => parent_2
                        )

                )

        )

)
PK|X	[i�TXX017.solrclient_threads.phptnu�[���--TEST--
SolrClient::threads() - Solr Threads Info
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$response = $client->threads()->getResponse();

print_r($response->system->threadCount);
?>
--EXPECTF--
SolrObject Object
(
    [current] => %d
    [peak] => %d
    [daemon] => %d
)
PK|X	[$nH,YY%113.solrdismaxquery_bigramfields.phptnu�[���--TEST--
SolrDisMaxQuery - BigramFields and slop (addBigramPhraseField, removeBigramPhraseField, setBigramPhraseFields)
--FILE--
<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
->addBigramPhraseField('cat', 2, 5.1)
->addBigramPhraseField('feature', 4.5)
;
echo $dismaxQuery.PHP_EOL;
// reverse
$dismaxQuery
->removeBigramPhraseField('cat');
echo $dismaxQuery.PHP_EOL;

$dismaxQuery->setBigramPhraseFields("cat~5.1^2 feature^4.5");
echo $dismaxQuery.PHP_EOL;

$dismaxQuery->setBigramPhraseSlop(2);
echo $dismaxQuery.PHP_EOL;
?>
--EXPECTF--
q=lucene&defType=%s&pf2=cat~5.1^2 feature^4.5
q=lucene&defType=%s&pf2=feature^4.5

Notice: SolrDisMaxQuery::setBigramPhraseFields(): Parameter pf2 value(s) was overwritten by this call in %s on line %d
q=lucene&defType=%s&pf2=cat~5.1^2 feature^4.5
q=lucene&defType=%s&pf2=cat~5.1^2 feature^4.5&ps2=2
PK|X	[)�ܭRR'026.solrdocument_getchilddocscount.phptnu�[���--TEST--
SolrDocument::getChildDocumentsCount() - Method test
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);
var_dump($response->response->docs[0]->getChildDocumentsCount());
?>
--EXPECT--
int(1)PK|X	[�6���!011.solrclient_phps_response.phptnu�[���--TEST--
SolrClient - PHPS response writer support
--FILE--
<?php
require_once "bootstrap.inc";
ERROR_REPORTING(E_ALL);
$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
);

$client = new SolrClient ( $options );
$client->setResponseWriter('phps');
$options = $client->getOptions();
var_dump($options['wt'] == 'phps');
?>
--EXPECTF--
bool(true)PK|X	[��I��,054.solrinputdocument_addchilddocuments.phptnu�[���--TEST--
SolrInputDocument::addChildDocuments() - add child documents
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$doc2 = new SolrInputDocument();
$doc3 = new SolrInputDocument();

$doc->addField('id', 1123);
$doc->addField('features', "PHP Client Side");
$doc->addField('features', "Fast development cycles");
$doc->cat   = 'Information Technology';

$doc2->addField('cat', 'Lucene Search');
$doc2->cat = 'Custom Search';

$doc2->addField('cat', 'Lucene Search');
$doc2->cat = 'Custom Search';

$doc3->addField('cat', 'Lucene Search');
$doc3->cat = 'Custom Search';
$docs = array($doc2, $doc3);
$doc->addChildDocuments($docs);

var_dump($doc->getChildDocumentsCount());
?>
--EXPECT--
int(2)PK|X	[��삓�bug_69156.phptnu�[���--TEST--
Solr Bug #69156 - segfault on 500 response from Solr
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => 'solr/collection44444',
		'wt'       => 'phps'
);

$client = new SolrClient($options);
$query = new SolrQuery("lucene");
try {
	$query_response = $client->query($query);
} catch (Exception $e) {
}
?>
--EXPECTF--
Notice: SolrClient::query(): Unable to parse serialized php response in %s on line %d
PK|X	[�[�010.solrclient_getOptions.phptnu�[���--TEST--
SolrClient::getOptions - Returning all the default options
--FILE--
<?php

$options = array('secure' => false);

$client = new SolrClient($options);

var_dump($client->getOptions());

?>
--EXPECTF--
array(17) {
  ["timeout"]=>
  int(30)
  ["secure"]=>
  bool(false)
  ["hostname"]=>
  string(9) "localhost"
  ["wt"]=>
  string(3) "xml"
  ["port"]=>
  int(8983)
  ["proxy_host"]=>
  string(0) ""
  ["proxy_port"]=>
  int(0)
  ["path"]=>
  string(4) "solr"
  ["http_auth"]=>
  string(0) ""
  ["proxy_auth"]=>
  string(0) ""
  ["ssl_verify_peer"]=>
  bool(false)
  ["ssl_verify_host"]=>
  int(2)
  ["ssl_cert"]=>
  string(0) ""
  ["ssl_key"]=>
  string(0) ""
  ["ssl_keypassword"]=>
  string(0) ""
  ["ssl_cainfo"]=>
  string(0) ""
  ["ssl_capath"]=>
  string(0) ""
}
PK|X	[E����030.solrdocument_magic.phptnu�[���--TEST--
SolrDocument - magic __isset/__unset/__get/__set
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrDocument();

$doc->check = 1;
$doc->deleteMe = 1;

var_dump(isset($doc->check));
var_dump(isset($doc->doesNotExist));


var_dump(isset($doc->deleteMe));
unset($doc->deleteMe);
var_dump(isset($doc->deleteMe));

$doc->addField('id', 1);

var_dump($doc->id instanceof SolrDocumentField);
?>
--EXPECTF--
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)PK|X	[^�b��)130.parameters_simple_list_separator.phptnu�[���--TEST--
simple_list_parameter type - Use of default, non-default separator
--FILE--
<?php
// arg list change
$query = new SolrQuery();
$query->addField("te")->addField("te2");
echo $query.PHP_EOL;

$dismaxQuery = new SolrDisMaxQuery();
$dismaxQuery
->addUserField('cat')
->addUserField('text')
->addUserField('*_dt')
;
echo $dismaxQuery.PHP_EOL;

?>
--EXPECTF--
fl=te,te2
defType=edismax&uf=cat text *_dtPK|X	[F�+??(016.solrclient_sendUpdateStream_bin.phptnu�[���--TEST--
SolrClient::sendUpdateStream - send SolrExtractRequest (bin)
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array (
	'hostname' => SOLR_SERVER_HOSTNAME,
	'login' => SOLR_SERVER_USERNAME,
	'password' => SOLR_SERVER_PASSWORD,
	'port' => SOLR_SERVER_PORT,
	'path' => SOLR_SERVER_FILES_PATH,
);

$client = new SolrClient($options);

$extractParams = new SolrModifiableParams();

$extractParams
	->set(SolrExtractRequest::LITERALS_PREFIX . 'id', 'doc1')
	->set(SolrExtractRequest::CAPTURE_ELEMENTS, 'p')
	->set(SolrExtractRequest::FIELD_MAPPING_PREFIX . 'p', 'text')
;

$binContent = file_get_contents(EXTRACT_FILE_1);

$extractRequest = SolrExtractRequest::createFromStream($binContent, 'application/pdf', $extractParams);

$response = $client->sendUpdateStream($extractRequest);

$client->rollback();

echo $response->getHttpStatus() . PHP_EOL;
echo $response->getRequestUrl() . PHP_EOL;
?>
--EXPECTF--
200
http://%s/update/extract/?version=2.2&indent=on&wt=xml&literal.id=doc1&capture=p&fmap.p=text
PK|X	[�}�!��083.solrutils_getsolrstats.phptnu�[���--TEST--
SolrUtils::getSolrStats() - Get Statistics about number of documents/clients..etc
--FILE--
<?php
require_once "bootstrap.inc";

var_dump(SolrUtils::getSolrStats());

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH
);

$client = new SolrClient ( $options );

$solrDoc = new SolrInputDocument();

$params = new SolrModifiableParams();

var_dump(SolrUtils::getSolrStats());

?>
--EXPECT--
array(3) {
  ["document_count"]=>
  int(0)
  ["client_count"]=>
  int(0)
  ["params_count"]=>
  int(0)
}
array(3) {
  ["document_count"]=>
  int(1)
  ["client_count"]=>
  int(1)
  ["params_count"]=>
  int(1)
}
PK|X	[�V����bug_70482.phptnu�[���--TEST--
Solr Bug #70482 - Segmentation fault on server 500 response with no msg field XML RW
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";
$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => SOLR_SERVER_PATH,
		'wt'	   => 'xml'
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$func = new SolrCollapseFunction('manu_id_s');

$func->setMax('sum(cscore(),field(manu_id_s))');
$func->setSize(100);
$func->setNullPolicy(SolrCollapseFunction::NULLPOLICY_EXPAND);

$query->collapse($func);
try {
	$queryResponse = $client->query($query);
} catch (SolrServerException $e) {
	printf("Exception code %d", $e->getCode());
	assert(strlen($e->getMessage()) > 0, 'Exception message is empty');
	echo PHP_EOL;
}

?>
OK
--EXPECTF--
Exception code %d
OKPK|X	[Sj��0151.solrcollapsefunction_illegal_operations.phptnu�[���--TEST--
SolrCollapseFunction - Illegal Operations
--SKIPIF--
<?php if (version_compare(PHP_VERSION, "5.4", "lt")) die("skip PHP 5.4+ only"); ?>
--FILE--
<?php

$func = new SolrCollapseFunction('field');

try {
	$tmp = clone $func;
} catch (SolrIllegalOperationException $e) {
	echo PHP_EOL . sprintf('Code %d: %s', $e->getCode(), $e->getMessage()).PHP_EOL;
}

$func->setMax('max');

try {
	// known issue, object corruption
	$tmp = serialize($func);
} catch (SolrIllegalOperationException $e) {
	echo PHP_EOL . sprintf('Code %d: %s', $e->getCode(), $e->getMessage()).PHP_EOL;
}

?>
--EXPECTF--
Code 4001: Cloning of SolrCollapseFunction objects is currently not supported

Code 1001: Serialization of SolrCollapseFunction objects is currently not supported

PK|X	[ �s
pp,003.solrclient_addDocument_no_overwrite.phptnu�[���--TEST--
SolrClient::addDocument() - Overwrite an existing document
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Solr');

$updateResponse = $client->addDocument($doc, false);
$client->commit();
print $updateResponse->getRawRequest();
?>
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<add overwrite="false">
  <doc>
    <field name="id">334455</field>
    <field name="cat">Software</field>
    <field name="cat">Solr</field>
  </doc>
</add>
PK|X	[������#196.solrparams_serialize_php81.phptnu�[���--TEST--
SolrParams::serialize() - serialize params
--SKIPIF--
<?php if (PHP_VERSION_ID < 80100) die("skip PHP 8.1+ only"); ?>
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->setParam('q', 'lucene')
	->setParam('start', 0)
	->setParam('rows', 10)
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

echo serialize($params);
?>
--EXPECTF--
O:20:"SolrModifiableParams":1:{s:3:"xml";s:727:"<?xml version="1.0" encoding="UTF-8"?>
<solr_params>
  <params>
    <param name="q" type="1" allow_multiple="0" count="1" delimiter="38" arg_separator="0">
      <param_value>lucene</param_value>
    </param>
    <param name="start" type="1" allow_multiple="0" count="1" delimiter="38" arg_separator="0">
      <param_value>0</param_value>
    </param>
    <param name="rows" type="1" allow_multiple="0" count="1" delimiter="38" arg_separator="0">
      <param_value>10</param_value>
    </param>
    <param name="fq" type="1" allow_multiple="1" count="2" delimiter="38" arg_separator="0">
      <param_value>popularity:[10 TO *]</param_value>
      <param_value>section:0</param_value>
    </param>
  </params>
</solr_params>
";}
PK|X	[�2_.��019.solrclient_serialize.phptnu�[���--TEST--
SolrClient - serialization
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

try {
	serialize($client);
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()) . PHP_EOL;
}

try {
	$serializedString = 'O:10:"SolrClient":0:{}';
	unserialize($serializedString);
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()) . PHP_EOL;
}

?>
--EXPECTF--
Exception 1001: SolrClient objects cannot be serialized or unserialized
Exception 1001: SolrClient objects cannot be serialized or unserialized
PK|X	[2��x!!.050.solrinputdocument_addchilddocument_01.phptnu�[���--TEST--
SolrInputDocument::addChildDocument() - add child document
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$secondDoc = new SolrInputDocument();

$doc->addField('id', 1123);
$doc->addField('features', "PHP Client Side");
$doc->addField('features', "Fast development cycles");
$doc->cat   = 'Information Technology';

$secondDoc->addField('cat', 'Lucene Search');
$secondDoc->cat = 'Custom Search';

$doc->addChildDocument($secondDoc);

var_dump($doc->hasChildDocuments(), $secondDoc->hasChildDocuments());

$childs = $doc->getChildDocuments();
print_r($childs[0]->getField('cat'));

?>
--EXPECT--
bool(true)
bool(false)
SolrDocumentField Object
(
    [name] => cat
    [boost] => 0
    [values] => Array
        (
            [0] => Lucene Search
        )

)
PK|X	[�S�EEbug_72033.phptnu�[���--TEST--
Solr Bug #72033 - Real Time Get requests fails if it wasn't the first request
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 'some_id');
$doc->addField('field1', 'val1');

$client->addDocument($doc);

$client->commit();

$response = $client->getById('some_id');

var_dump(isset($response->getArrayResponse()['doc'])).PHP_EOL;
var_dump($response->getResponse()->doc->id) . PHP_EOL;
// pointless request just to fill the request buffer
$client->commit();


$response = $client->getByIds(['GB18030TEST', '6H500F0']);

var_dump($response->getResponse()->response->docs[0]->id, $response->getResponse()->response->docs[1]->id);
?>
--EXPECTF--
bool(true)
string(7) "some_id"
string(11) "GB18030TEST"
string(7) "6H500F0"
PK|X	[*�D
D
 059.solrinputdocument_merge.phptnu�[���--TEST--
SolrInputDocument::merge - Merge 2 docs
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();
$doc->addField('id', 1123);
$doc->addField('features', "PHP Client Side", 4);
$doc->addField('features', "Fast development cycles");
$doc->addField('cat', 'Information Technology');

separator('original document');
print_r($doc->toArray());

$doc2 = new SolrInputDocument();
$doc2->addField('cat', 'Lucene Search');
$doc2->merge($doc, true); // merge doc into doc2, overwrite cat

separator('merge overwrite (cat field merged ?)');
print_r($doc->getField('cat')->values);

var_dump($doc->fieldExists('features'));
print_r($doc2->toArray());

$doc3 = new SolrInputDocument();
$doc3->addField('manu_s_id', 'apache');
$doc3->addField('id', '124');

$doc3->merge($doc, false); // do not overwrite
separator('merge without overwrite');
print_r($doc3->getField('id')->values);
separator('END');
?>
--EXPECT--
============================== original document ===============================
Array
(
    [document_boost] => 0
    [field_count] => 3
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => features
                    [boost] => 4
                    [values] => Array
                        (
                            [0] => PHP Client Side
                            [1] => Fast development cycles
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Information Technology
                        )

                )

        )

)
===================== merge overwrite (cat field merged ?) =====================
Array
(
    [0] => Information Technology
)
bool(true)
Array
(
    [document_boost] => 0
    [field_count] => 3
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Information Technology
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => features
                    [boost] => 4
                    [values] => Array
                        (
                            [0] => PHP Client Side
                            [1] => Fast development cycles
                        )

                )

        )

)
=========================== merge without overwrite ============================
Array
(
    [0] => 124
)
===================================== END ======================================PK|X	[C,�++"036.solrdocument_array_access.phptnu�[���--TEST--
SolrDocument - Array Access
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrDocument();

$doc->addField('id', 334455);
$doc->addField('manu_id_s', 'apache');
// set
$doc['cat'] = 'Software';

// get
var_dump($doc['cat']->values[0]);

// exists
var_dump(isset($doc['cat']));

// unset
unset($doc['cat']);
print_r($doc->toArray());
?>
--EXPECT--
string(8) "Software"
bool(true)
Array
(
    [document_boost] => 0
    [field_count] => 2
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 334455
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => manu_id_s
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => apache
                        )

                )

        )

)
PK|X	[�w)�%%)108.solrresponse_getdigestedresponse.phptnu�[���--TEST--
SolrResponse::getDigestedResponse() - Get Raw Response Headers
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);


$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

var_dump($query_response->getDigestedResponse());
$tmp = $query_response->getResponse();
$digestedResponse = $query_response->getDigestedResponse();
print_r($digestedResponse);
?>
--EXPECTF--
string(1) " "
O:10:"SolrObject":2:{s:14:"responseHeader";O:10:"SolrObject":3:{s:6:"status";i:0;s:5:"QTime";i:%d;s:%d:"params";O:10:"SolrObject":7:{s:1:"q";s:6:"lucene";s:6:"indent";s:2:"on";s:2:"fl";s:25:"cat,features,id,timestamp";s:5:"start";s:1:"0";s:4:"rows";s:2:"50";s:7:"version";s:3:"2.2";s:2:"wt";s:3:"xml";}}s:8:"response";O:10:"SolrObject":3:{s:8:"numFound";i:1;s:5:"start";i:0;s:4:"docs";a:1:{i:0;O:10:"SolrObject":3:{s:2:"id";s:8:"SOLR1000";s:3:"cat";a:2:{i:0;s:8:"software";i:1;s:6:"search";}s:8:"features";a:7:{i:0;s:51:"Advanced Full-Text Search Capabilities using Lucene";i:1;s:37:"Optimized for High Volume Web Traffic";i:2;s:46:"Standards Based Open Interfaces - XML and HTTP";i:3;s:44:"Comprehensive HTML Administration Interfaces";i:4;s:64:"Scalability - Efficient Replication to other Solr Search Servers";i:5;s:56:"Flexible and Adaptable with XML configuration and Schema";i:6;s:62:"Good unicode support: héllo (hello with an accent over the e)";}}}}}PK|X	[��7z``!064.solrquery_StatsComponent.phptnu�[���--TEST--
SolrQuery - testing StatsComponent
--FILE--
<?php

$query = new SolrQuery();
ob_start();
var_dump(
	$query->getStats(),
	$query->getStatsFields(),
	$query->getStatsFacets()
);

$nullOutput = ob_get_clean();

$query->setStats(0);

$query
	->addStatsField('hello')
	->removeStatsField('hello')
	->addStatsField('june')
	->addStatsField('july')
;

$query
	->addStatsFacet('world')
	->removeStatsFacet('world')
	->addStatsFacet('pear')
	->addStatsFacet('pecl')
;

echo $query . PHP_EOL . PHP_EOL;

var_dump(
	$query->getStats(),
	$query->getStatsFields(),
	$query->getStatsFacets()
);
echo $nullOutput;
?>
--EXPECTF--
stats=false&stats.field=june&stats.field=july&stats.facet=pear&stats.facet=pecl

bool(false)
array(2) {
  [0]=>
  string(4) "june"
  [1]=>
  string(4) "july"
}
array(2) {
  [0]=>
  string(4) "pear"
  [1]=>
  string(4) "pecl"
}
NULL
NULL
NULLPK|X	[@�&���084.solrutils_queryphrase.phptnu�[���--TEST--
SolrUtils::queryPhrase() - Escapes a query phrase
--FILE--
<?php

echo SolrUtils::queryPhrase('Book Title: Apache Solr Server') . PHP_EOL;

?>
--EXPECT--
"Book Title\: Apache Solr Server"
PK|X	[�N�D��bug_59511_error.phptnu�[���--TEST--
Solr bug #59511 - SolrClient::query() Timeout shall throw a SolrClientException
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";
// force to timeout trying to resolve
$options = array
(
		'hostname' => 'anyhost',
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => SOLR_SERVER_PATH,
		'timeout'  => 2
);

$client = new SolrClient($options);
$query = new SolrQuery("lucene");
try {
	$query_response = $client->query($query);	
} catch (SolrClientException $e) {
	echo $e->getMessage().PHP_EOL;
	echo $e->getCode().PHP_EOL;
}
?>
--EXPECTF--
Solr HTTP Error %d: '%s' 
1004PK|X	[�v��%071.solrquery_collapse_exception.phptnu�[���--TEST--
SolrQuery::collapse - throws SolrMissingMandatoryParameterException
--FILE--
<?php

$query = new SolrQuery('*:*');
$collapseFunction = new SolrCollapseFunction();
try {
    $query->collapse($collapseFunction);
} catch (SolrMissingMandatoryParameterException $e) {
    echo PHP_EOL.sprintf('Exception %d: %s', $e->getCode(), $e->getMessage());
}
?>
--EXPECTF--
Exception 4100: Mandatory parameter Missing: field
PK|X	[k)�Y		"069.solrquery_GroupParameters.phptnu�[���--TEST--
SolrQuery - Result Grouping (Group Parameters)
--FILE--
<?php

$query = new SolrQuery();

$query->setGroup(true);

$query->addGroupField('category')->addGroupField('featured');

$query->addGroupFunction('ceil(internalScore)');

$query->addGroupQuery('silk')->addGroupQuery('name:june');

$query->setGroupLimit(98);

$query->setGroupOffset(110);

$query->addGroupSortField('count', SolrQuery::ORDER_ASC);
$query->addGroupSortField('name', SolrQuery::ORDER_DESC);

$query->setGroupFormat('simple');

$query->setGroupMain(false);

$query->setGroupNGroups(false);

$query->setGroupTruncate(true);

$query->setGroupFacet(true);


$query->setGroupCachePercent(100);

echo PHP_EOL . "-- Query String --".PHP_EOL;
echo $query.PHP_EOL;

echo PHP_EOL . "-- Integer --".PHP_EOL;
var_dump($query->getGroupOffset(), $query->getGroupLimit(), $query->getGroupCachePercent());
echo PHP_EOL . "-- String --".PHP_EOL;
var_dump($query->getGroupFormat());
echo PHP_EOL . "-- Array --".PHP_EOL;
var_dump($query->getGroupFields());
var_dump($query->getGroupFunctions());
var_dump($query->getGroupQueries());
var_dump($query->getGroupSortFields());

echo PHP_EOL . "-- BOOL --".PHP_EOL;
var_dump($query->getGroup(), $query->getGroupMain(), $query->getGroupNGroups(), $query->getGroupTruncate(), $query->getGroupFacet());
echo PHP_EOL;

try {
	$query->setGroupCachePercent(-1);
} catch (SolrIllegalArgumentException $e) {
	echo sprintf("Exception Caught %d: %s", $e->getCode(), $e->getMessage()).PHP_EOL;
}
?>
--EXPECTF--
-- Query String --
group=true&group.field=category&group.field=featured&group.func=ceil(internalScore)&group.query=silk&group.query=name:june&group.limit=98&group.offset=110&group.sort=count asc,name desc&group.format=simple&group.main=false&group.ngroups=false&group.truncate=true&group.facet=true&group.cache.percent=100

-- Integer --
int(110)
int(98)
int(100)

-- String --
string(6) "simple"

-- Array --
array(2) {
  [0]=>
  string(8) "category"
  [1]=>
  string(8) "featured"
}
array(1) {
  [0]=>
  string(19) "ceil(internalScore)"
}
array(2) {
  [0]=>
  string(4) "silk"
  [1]=>
  string(9) "name:june"
}
array(2) {
  [0]=>
  string(9) "count asc"
  [1]=>
  string(9) "name desc"
}

-- BOOL --
bool(true)
bool(false)
bool(false)
bool(true)
bool(true)

Exception Caught 4000: Group cache percent must be between 0 and 100PK|X	[ڡJ
��005.solrclient_query_error.phptnu�[���--TEST--
SolrClient::query() - throw SolrClientException on Solr Server exception
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";
// force to timeout trying to resolve
$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$query = new SolrQuery("lucene\\");

try {
	$query_response = $client->query($query);
} catch (SolrServerException $e) {
	echo $e->getMessage();
}

?>
--EXPECTF--
%s: Cannot parse 'lucene\': Lexical error at line 1, column 8.  Encountered: <EOF> after : ""PK|X	[�ӹ�yy196.solrparams_serialize.phptnu�[���--TEST--
SolrParams::serialize() - serialize params
--SKIPIF--
<?php if (PHP_VERSION_ID >= 80100) die("skip PHP < 8.1 only"); ?>
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->setParam('q', 'lucene')
	->setParam('start', 0)
	->setParam('rows', 10)
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

echo serialize($params);
?>
--EXPECTF--
C:20:"SolrModifiableParams":727:{<?xml version="1.0" encoding="UTF-8"?>
<solr_params>
  <params>
    <param name="q" type="1" allow_multiple="0" count="1" delimiter="38" arg_separator="0">
      <param_value>lucene</param_value>
    </param>
    <param name="start" type="1" allow_multiple="0" count="1" delimiter="38" arg_separator="0">
      <param_value>0</param_value>
    </param>
    <param name="rows" type="1" allow_multiple="0" count="1" delimiter="38" arg_separator="0">
      <param_value>10</param_value>
    </param>
    <param name="fq" type="1" allow_multiple="1" count="2" delimiter="38" arg_separator="0">
      <param_value>popularity:[10 TO *]</param_value>
      <param_value>section:0</param_value>
    </param>
  </params>
</solr_params>
}
PK|X	[���				"020.solrdocument_update_field.phptnu�[���--TEST--
SolrInputDocument::updateField
--FILE--
<?php

require_once 'bootstrap.inc';

$doc = new SolrInputDocument();

$doc->addField('id', 1123);

$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_ADD, 'val1');
$doc->updateField('field2_s', SolrInputDocument::UPDATE_MODIFIER_SET, 'val2');
$doc->updateField('field3_i', SolrInputDocument::UPDATE_MODIFIER_INC, 5);
$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_REMOVE, 'val0');
$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_REMOVEREGEX, '[\d]{2}/[\d]{2}/[\d]{4}');

try {
	$doc->updateField('arr2', 6, 'not gonna happen');
} catch (SolrIllegalArgumentException $e) {
	print_exception($e);
}

try {
	$doc->updateField('arr3', 0, 'not gonna happen');
} catch (SolrIllegalArgumentException $e) {
	print_exception($e);
}

print_r($doc->toArray());

?>
--EXPECT--
SolrIllegalArgumentException 4003: Invalid field value modifier.
SolrIllegalArgumentException 4003: Invalid field value modifier.
Array
(
    [document_boost] => 0
    [field_count] => 4
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => field1
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => val1
                            [1] => val0
                            [2] => [\d]{2}/[\d]{2}/[\d]{4}
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => field2_s
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => val2
                        )

                )

            [3] => SolrDocumentField Object
                (
                    [name] => field3_i
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 5
                        )

                )

        )

)
PK|X	[���`��#111.solrdismaxquery_boostquery.phptnu�[���--TEST--
SolrDisMaxQuery - Boost Query
--FILE--
<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
	->addBoostQuery('cat', 'electronics', 5.1)
	->addBoostQuery('cat', 'hard drive')
;
// reverse
echo $dismaxQuery.PHP_EOL;
$dismaxQuery
->removeBoostQuery('cat');
echo $dismaxQuery.PHP_EOL;

$dismaxQuery->setBoostQuery('cat:electronics manu:local^2');
echo $dismaxQuery.PHP_EOL;
?>
--EXPECTF--
q=lucene&defType=edismax&bq=cat:electronics^5.1 cat:hard drive
q=lucene&defType=edismax&bq=cat:hard drive

Notice: SolrDisMaxQuery::setBoostQuery(): Parameter bq value(s) was overwritten by this call in %s on line %d
q=lucene&defType=edismax&bq=cat:electronics manu:local^2
PK|X	[�*��)181.solrdocumentfield_write_property.phptnu�[���--TEST--
SolrDocumentField - exception - on write property
--FILE--
<?php

require_once "bootstrap.inc";
$field = new SolrDocumentField();

try {
	$field->myIllegalProperty = 1;
} catch (SolrIllegalOperationException $e) {
	printf("Exception %d: %s", $e->getCode(), $e->getMessage());
}

?>
--EXPECT--
Exception 1007: SolrDocumentField instances are read-only. Properties cannot be updated or removed.
PK|X	[{%ff004.solrclient_query_terms.phptnu�[���--TEST--
SolrClient::query() - Terms component
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH,
);


$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$query->setTerms(true);

$query->setTermsField('name');

$query->setTermsLowerBound('a');

$query->setTermsSort(SolrQuery::TERMS_SORT_INDEX);

$query_response = $client->query($query);

echo $query_response->getRequestUrl() .PHP_EOL;

print_r($query_response->getResponse());

?>
--EXPECTF--
http://%s/solr/collection1/terms/?version=2.2&indent=on&wt=xml
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

    [terms] => SolrObject Object
        (
            [name] => SolrObject Object
                (
                    [iPod & iPod Mini USB 2.0 Cable] => %d
                )

        )

)
PK|X	[��MIBB#035.solrdocument_getfieldnames.phptnu�[���--TEST--
SolrDocument::getFieldNames
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrDocument();

$doc->addField('id', 334455);
$doc->addField('manu_id_s', 'apache');
$doc->addField('cat', 'Software');

print_r($doc->getFieldNames());
?>
--EXPECT--
Array
(
    [0] => id
    [1] => manu_id_s
    [2] => cat
)
PK|X	[�Z�0015.solrclient_addDocuments_nested_document.phptnu�[���--TEST--
SolrClient::addDocuments() - Sending multiple documents with child documents
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 'CTEST_1');
$doc->addField('title', 'Solr adds block join support');
$doc->addField('content_type', 'parentDocument');

$doc2 = new SolrInputDocument();
$doc2->addField('id', 'CTEST_2');
$doc2->addField('comment_t', 'SolrCloud supports it too!');

$doc3 = new SolrInputDocument();
$doc3->addField('id', 'CTEST_3');
$doc3->addField('content_type', 'parentDocument');
$doc3->addField('comment_t', 'Lots of features');

$doc4 = new SolrInputDocument();
$doc4->addField('id', 'CTEST_4');
$doc4->addField('comment_t', 'Cool features');

$doc->addChildDocument($doc2);
$doc3->addChildDocument($doc4);

$documents = [$doc, $doc3];

$updateResponse = $client->addDocuments($documents);
print_r($updateResponse->getRawRequest());
print_r($updateResponse->getResponse());
$client->commit();
?>
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<add overwrite="true">
  <doc>
    <field name="id">CTEST_1</field>
    <field name="title">Solr adds block join support</field>
    <field name="content_type">parentDocument</field>
    <doc>
      <field name="id">CTEST_2</field>
      <field name="comment_t">SolrCloud supports it too!</field>
    </doc>
  </doc>
  <doc>
    <field name="id">CTEST_3</field>
    <field name="content_type">parentDocument</field>
    <field name="comment_t">Lots of features</field>
    <doc>
      <field name="id">CTEST_4</field>
      <field name="comment_t">Cool features</field>
    </doc>
  </doc>
</add>
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

)PK|X	[�/����191.solrparams_addparam.phptnu�[���--TEST--
SolrParams::addParam()
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

echo $params;
?>
--EXPECTF--
fq=popularity:[10 TO *]&fq=section:0
PK|X	[�F 
 
040.solrobject_xmlresponse.phptnu�[���--TEST--
SolrObject - checking xml response digest
--FILE--
<?php

require_once "bootstrap.inc";

$xml_reponse = file_get_contents(EXAMPLE_RESPONSE_XML_1);

$solrObject = SolrUtils::digestXMLResponse($xml_reponse);

print_r($solrObject);

?>
--EXPECT--
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 72
        )

    [system] => SolrObject Object
        (
            [threadCount] => SolrObject Object
                (
                    [current] => 15
                    [peak] => 15
                    [daemon] => 13
                )

            [threadDump] => SolrObject Object
                (
                    [thread] => SolrObject Object
                        (
                            [id] => 1
                            [name] => main
                            [state] => RUNNABLE
                            [native] => 1
                            [cpuTime] => 3340.0000ms
                            [userTime] => 3180.0000ms
                            [stackTrace] => Array
                                (
                                    [0] => java.net.PlainSocketImpl.socketAccept(Native Method)
                                    [1] => java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
                                    [2] => java.net.ServerSocket.implAccept(ServerSocket.java:450)
                                    [3] => java.net.ServerSocket.accept(ServerSocket.java:421)
                                    [4] => org.apache.catalina.core.StandardServer.await(StandardServer.java:389)
                                    [5] => org.apache.catalina.startup.Catalina.await(Catalina.java:642)
                                    [6] => org.apache.catalina.startup.Catalina.start(Catalina.java:602)
                                    [7] => sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                    [8] => sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                                    [9] => sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                    [10] => java.lang.reflect.Method.invoke(Method.java:585)
                                    [11] => org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
                                    [12] => org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
                                )

                        )

                )

        )

)
PK|X	[t��<YY%059.solrinputdocument_setversion.phptnu�[���--TEST--
SolrInputDocument::setVersion - Set document version
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();

$doc->addField('id', 'IW-02');

$doc->setVersion(SolrInputDocument::VERSION_ASSERT_EXISTS);
var_dump($doc->getVersion());

$doc->setVersion(SolrInputDocument::VERSION_ASSERT_NOT_EXISTS);
var_dump($doc->getVersion());

$doc->setVersion(SolrInputDocument::VERSION_ASSERT_NONE);
var_dump($doc->getVersion());

$doc->setVersion(1498562624496861184);
var_dump($doc->getVersion());

try {
	$doc->setVersion('AAAA-3333');
} catch (SolrIllegalArgumentException $e) {
	echo $e->getMessage();
} catch (TypeError $e) {
	echo $e->getMessage();
}

?>
--EXPECTF--
int(1)
int(-1)
int(0)
int(1498562624496861184)
%slrInputDocument::setVersion()%s, string given
PK|X	[x�/���"042.solrobject_magic_property.phptnu�[���--TEST--
SolrObject - testing the magic property access
--FILE--
<?php

require_once "bootstrap.inc";

$xml_reponse = file_get_contents(EXAMPLE_RESPONSE_XML_1);

$solrObject = SolrUtils::digestXMLResponse($xml_reponse);

print_r($solrObject->system->threadDump->thread->stackTrace);

?>
--EXPECT--
Array
(
    [0] => java.net.PlainSocketImpl.socketAccept(Native Method)
    [1] => java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
    [2] => java.net.ServerSocket.implAccept(ServerSocket.java:450)
    [3] => java.net.ServerSocket.accept(ServerSocket.java:421)
    [4] => org.apache.catalina.core.StandardServer.await(StandardServer.java:389)
    [5] => org.apache.catalina.startup.Catalina.await(Catalina.java:642)
    [6] => org.apache.catalina.startup.Catalina.start(Catalina.java:602)
    [7] => sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [8] => sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [9] => sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [10] => java.lang.reflect.Method.invoke(Method.java:585)
    [11] => org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    [12] => org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
)
PK|X	[��^�MM102.solrresponse_phps.phptnu�[���--TEST--
SolrResponse::getResponse - PHPS response writer
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
		'wt' => 'phps'
);

$client = new SolrClient ( $options );
$query = new SolrQuery ( "lucene" );

$response = $client->query ( $query );

$x = $response->getResponse();
var_dump($x instanceof SolrObject);
?>
--EXPECTF--
bool(true)PK|X	[����

'081.solrutils_digest_json_response.phptnu�[���--TEST--
SolrUtils::digestJsonResponse() - Digest JSON Response
--FILE--
<?php
$responseString = '
{
  "responseHeader":{
    "status":0,
    "QTime":1,
    "params":{
      "indent":"on",
      "wt":"json",
      "q":"lucene",
      "version":"2.2"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"SOLR1000",
        "name":"Solr, the Enterprise Search Server",
        "manu":"Apache Software Foundation",
        "cat":["software",
          "search"],
        "features":["Advanced Full-Text Search Capabilities using Lucene",
          "Optimized for High Volume Web Traffic",
          "Standards Based Open Interfaces - XML and HTTP",
          "Comprehensive HTML Administration Interfaces",
          "Scalability - Efficient Replication to other Solr Search Servers",
          "Flexible and Adaptable with XML configuration and Schema",
          "Good unicode support: hello (hello with an accent over the e)"],
        "price":0.0,
        "price_c":"0,USD",
        "popularity":10,
        "inStock":true,
        "incubationdate_dt":"2006-01-17T00:00:00Z",
        "_version_":1460602453694087168}]
  }}';
if (!json_decode($responseString)) {
	echo "PHP JSON DECODE failed with: ". json_last_error_msg().PHP_EOL;
}
$response = SolrUtils::digestJsonResponse($responseString);
var_dump($response instanceof SolrObject);
var_dump($response);
var_dump($response->response->docs[0]->_version_ == 1460602453694087168);
?>
--EXPECTF--
bool(true)
object(SolrObject)#%d (2) {
  ["responseHeader"]=>
  object(SolrObject)#4 (3) {
    ["status"]=>
    int(0)
    ["QTime"]=>
    int(1)
    ["params"]=>
    object(SolrObject)#5 (4) {
      ["indent"]=>
      string(2) "on"
      ["wt"]=>
      string(4) "json"
      ["q"]=>
      string(6) "lucene"
      ["version"]=>
      string(3) "2.2"
    }
  }
  ["response"]=>
  object(SolrObject)#%d (3) {
    ["numFound"]=>
    int(1)
    ["start"]=>
    int(0)
    ["docs"]=>
    array(1) {
      [0]=>
      object(SolrObject)#%d (11) {
        ["id"]=>
        string(8) "SOLR1000"
        ["name"]=>
        string(34) "Solr, the Enterprise Search Server"
        ["manu"]=>
        string(26) "Apache Software Foundation"
        ["cat"]=>
        array(2) {
          [0]=>
          string(8) "software"
          [1]=>
          string(6) "search"
        }
        ["features"]=>
        array(7) {
          [0]=>
          string(51) "Advanced Full-Text Search Capabilities using Lucene"
          [1]=>
          string(37) "Optimized for High Volume Web Traffic"
          [2]=>
          string(46) "Standards Based Open Interfaces - XML and HTTP"
          [3]=>
          string(44) "Comprehensive HTML Administration Interfaces"
          [4]=>
          string(64) "Scalability - Efficient Replication to other Solr Search Servers"
          [5]=>
          string(56) "Flexible and Adaptable with XML configuration and Schema"
          [6]=>
          string(61) "Good unicode support: hello (hello with an accent over the e)"
        }
        ["price"]=>
        float(0)
        ["price_c"]=>
        string(5) "0,USD"
        ["popularity"]=>
        int(10)
        ["inStock"]=>
        bool(true)
        ["incubationdate_dt"]=>
        string(20) "2006-01-17T00:00:00Z"
        ["_version_"]=>
        %s
      }
    }
  }
}
bool(true)PK|X	[%lx				/044.solrobject_dimension_access_properties.phptnu�[���--TEST--
SolrObject - checking dimension access on properties.
--FILE--
<?php

require_once "bootstrap.inc";

$xml_reponse = file_get_contents(EXAMPLE_RESPONSE_XML_1);

$solrObject = SolrUtils::digestXMLResponse($xml_reponse);

$header = ($solrObject['responseHeader']);

$system = $solrObject['system'];

print_r($header);

print_r($system);

?>
--EXPECT--
SolrObject Object
(
    [status] => 0
    [QTime] => 72
)
SolrObject Object
(
    [threadCount] => SolrObject Object
        (
            [current] => 15
            [peak] => 15
            [daemon] => 13
        )

    [threadDump] => SolrObject Object
        (
            [thread] => SolrObject Object
                (
                    [id] => 1
                    [name] => main
                    [state] => RUNNABLE
                    [native] => 1
                    [cpuTime] => 3340.0000ms
                    [userTime] => 3180.0000ms
                    [stackTrace] => Array
                        (
                            [0] => java.net.PlainSocketImpl.socketAccept(Native Method)
                            [1] => java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
                            [2] => java.net.ServerSocket.implAccept(ServerSocket.java:450)
                            [3] => java.net.ServerSocket.accept(ServerSocket.java:421)
                            [4] => org.apache.catalina.core.StandardServer.await(StandardServer.java:389)
                            [5] => org.apache.catalina.startup.Catalina.await(Catalina.java:642)
                            [6] => org.apache.catalina.startup.Catalina.start(Catalina.java:602)
                            [7] => sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                            [8] => sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                            [9] => sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                            [10] => java.lang.reflect.Method.invoke(Method.java:585)
                            [11] => org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
                            [12] => org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
                        )

                )

        )

)
PK|X	[��/<#068.solrquery_parameters_error.phptnu�[���--TEST--
SolrQuery - Invalid Parameters thorws exception Throws exception on illegal Argument
--FILE--
<?php

$query = new SolrQuery();
$params = new SolrModifiableParams();

try {
	// normal parameter
	$query->setQuery('');
}catch (SolrIllegalArgumentException $e)
{
	echo $e->getMessage().PHP_EOL;
	try {
		// simple list
		$query->addField('');
	} catch (SolrIllegalArgumentException $e) {
		echo $e->getMessage().PHP_EOL;
		try {
			// argument list
			$query->addSortField('');
		} catch (SolrIllegalArgumentException $e) {
			echo $e->getMessage().PHP_EOL;
			try {
				$params->addParam('',1);
			} catch (Exception $e) {
				echo $e->getMessage().PHP_EOL;
			}
		}
	}
}
?>
--EXPECT--
Invalid parameter value
Invalid parameter value
Invalid parameter value
Invalid parameter name
PK|X	[�~�y��000.solr_server_compat.phptnu�[���--TEST--
Solr Server 4+ Compatibility Test
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";
// force to timeout trying to resolve
$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$query_response = $client->system();
$solrVersion = $query_response->getResponse()->lucene['solr-spec-version'];

$match = preg_match('#([0-9]+)\.[0-9]+\.[0-9]+#', $solrVersion, $matches);

var_dump($matches[1] >=4 );
?>
--EXPECTF--
bool(true)PK|X	[_�����#020.solrdocument_adding_fields.phptnu�[���--TEST--
SolrDocument - checking dimension and magic property sets.
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrDocument();

$doc->addField('id', 1123);

$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";

$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat   = 'Information Technology';

print_r($doc->toArray());

?>
--EXPECT--
Array
(
    [document_boost] => 0
    [field_count] => 3
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => features
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => PHP Client Side
                            [1] => Fast development cycles
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Software
                            [1] => Custom Search
                            [2] => Information Technology
                        )

                )

        )

)
PK|X	[*3���059.solrinputdocument_sort.phptnu�[���--TEST--
SolrInputDocument::sort - Sort Document fields
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrInputDocument();


$doc->addField('z1', 'z1val', 1);
$doc->addField('z1', 'z1val2');
$doc->addField('z1', 'z1val3');

$doc->addField('id', 334455, 2);
$doc->addField('cat', 'Software', 3);
$doc->addField('cat', 'Lucene');

printf("---------------- %s --------------------\n", 'unsorted');
print_r($doc->getFieldNames());

printf("---------------- %s --------------------\n", 'field ASC');
$doc->sort(SolrDocument::SORT_FIELD_NAME, SolrDocument::SORT_ASC);
print_r($doc->getFieldNames());
printf("---------------- %s --------------------\n", 'field DESC');
$doc->sort(SolrDocument::SORT_FIELD_NAME, SolrDocument::SORT_DESC);
print_r($doc->getFieldNames());
printf("---------------- %s --------------------\n", 'boost ASC');
$doc->sort(SolrDocument::SORT_FIELD_BOOST_VALUE, SolrDocument::SORT_ASC);
print_r($doc->getFieldNames());
printf("---------------- %s --------------------\n", 'boost DESC');
$doc->sort(SolrDocument::SORT_FIELD_BOOST_VALUE, SolrDocument::SORT_DESC);
print_r($doc->getFieldNames());

printf("---------------- %s --------------------\n", 'value ASC');
$doc->sort(SolrDocument::SORT_FIELD_VALUE_COUNT, SolrDocument::SORT_ASC);
print_r($doc->getFieldNames());
printf("---------------- %s --------------------\n", 'value DESC');
$doc->sort(SolrDocument::SORT_FIELD_VALUE_COUNT, SolrDocument::SORT_DESC);
print_r($doc->getFieldNames());
?>
--EXPECT--
---------------- unsorted --------------------
Array
(
    [0] => z1
    [1] => id
    [2] => cat
)
---------------- field ASC --------------------
Array
(
    [0] => cat
    [1] => id
    [2] => z1
)
---------------- field DESC --------------------
Array
(
    [0] => z1
    [1] => id
    [2] => cat
)
---------------- boost ASC --------------------
Array
(
    [0] => z1
    [1] => id
    [2] => cat
)
---------------- boost DESC --------------------
Array
(
    [0] => cat
    [1] => id
    [2] => z1
)
---------------- value ASC --------------------
Array
(
    [0] => id
    [1] => cat
    [2] => z1
)
---------------- value DESC --------------------
Array
(
    [0] => z1
    [1] => cat
    [2] => id
)
PK|X	[F_�-�� 002.solrclient_addDocuments.phptnu�[���--TEST--
SolrClient::addDocuments() - sending multiple documents to the Solr server
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$doc2 = new SolrInputDocument();

$doc2->addField('id', 12345);
$doc->addField('cat', 'Category1');
$doc->addField('cat', 'Category2');

$docs = array($doc, $doc2);

$updateResponse = $client->addDocuments($docs);
$client->commit();
print_r($updateResponse->getResponse());

?>
--EXPECTF--
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => %d
        )

)
PK|X	[\���&022.solrdocument_getInputDocument.phptnu�[���--TEST--
SolrDocument::getInputDocument() - creating SolrInputDocument from SolrDocument
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrDocument();

$doc->addField('id', 1123);

$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";

$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat   = 'Information Technology';


$input_doc = $doc->getInputDocument();

var_dump(get_class($input_doc));

?>
--EXPECT--
string(17) "SolrInputDocument"
PK|X	[bf��
bootstrap.incnu�[���<?php

require_once "test.config.inc";

function separator($label) {
	echo str_pad(' '.$label.' ', 80, '=', STR_PAD_BOTH) . PHP_EOL;
}

function print_exception(SolrException $e) {
	echo sprintf("%s %d: %s", get_class($e), $e->getCode(), $e->getMessage()). PHP_EOL;
}

/**
 * Prints a test case title
 * 
 * @param int $case_id
 * @param string $title
 */
function case_title(int $case_id, string $title) {
	$caseTemplate = PHP_EOL . "case #%d: %s" . PHP_EOL;
	echo sprintf($caseTemplate, $case_id, $title);
}
PK|X	[��G[nn203.solrquery_strict_types.phptnu�[���--TEST--
SolrQuery - Strict type parameters without BC break
--FILE--
<?php declare(strict_types=1);

$query = new SolrQuery('lucene');

$query->setStart(1);
$query->setRows(2);
$query->setTimeAllowed(300);
$query->setGroupOffset(1);
$query->setExpandRows(1);

echo $query . "\n";

// Now with strings
$query = new SolrQuery('lucene');
$query->setStart('1anystring'); // we don't do any checking
$query->setRows('2');
$query->setTimeAllowed('300');
$query->setGroupOffset('1');
$query->setExpandRows('1');

echo $query . "\n";

try { $query->setStart(true); } catch (SolrIllegalArgumentException $e) { echo $e->getMessage() . "\n"; }

$collapse = new SolrCollapseFunction();
$collapse->setSize(1);

echo $collapse . "\n";

$d = new SolrDisMaxQuery('lucene');
$d->setPhraseSlop(2);
$d->setQueryPhraseSlop(3);
$d->setBigramPhraseSlop(4);
$d->setTrigramPhraseSlop(5);

echo $d . "\n";

--EXPECT--
q=lucene&start=1&rows=2&timeAllowed=300&group.offset=1&expand.rows=1
q=lucene&start=1anystring&rows=2&timeAllowed=300&group.offset=1&expand.rows=1
Argument 1 must be an int
{!collapse size=1}
q=lucene&defType=edismax&ps=2&qs=3&ps2=4&ps3=5

PK|X	[S���{{%194.solrparams_getpreparedparams.phptnu�[���--TEST--
SolrParams::getPreparedParams()
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->set('q', 'lucene')
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

var_dump($params->getPreparedParams());
?>
--EXPECT--
array(2) {
  ["q"]=>
  string(8) "q=lucene"
  ["fq"]=>
  string(50) "fq=popularity%3A%5B10%20TO%20%2A%5D&fq=section%3A0"
}
PK|X	[�=��007.solrclient_deleteById.phptnu�[���--TEST--
SolrClient::deleteById() - Testing deleting a document by ID
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$response = $client->deleteById('334457');
$client->commit();
print_r($response->getResponse());
?>
--EXPECTF--
SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

)
PK|X	[�5�qq%112.solrdismaxquery_query_parser.phptnu�[���--TEST--
SolrDisMaxQuery - QueryParser Switch
--FILE--
<?php
$dismaxQuery = new SolrDisMaxQuery("hard drive");
echo $dismaxQuery.PHP_EOL;
$dismaxQuery->useDisMaxQueryParser();
echo $dismaxQuery.PHP_EOL;
$dismaxQuery->useEDisMaxQueryParser();
echo $dismaxQuery.PHP_EOL;
?>
--EXPECTF--
q=hard drive&defType=edismax
q=hard drive&defType=dismax
q=hard drive&defType=edismaxPK|X	[[)�vLL 090.solrserverexception_xml.phptnu�[���--TEST--
SolrServerException (xml) - Throw Exception on solr server exception using xml response writer
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
// 		'wt' => 'xml'
);

$client = new SolrClient ( $options );
$query = new SolrQuery ( "lucene\\" );
try {
	$response = $client->query ( $query );
} catch ( SolrServerException $e ) {
	echo sprintf("code: %d", $e->getCode()).PHP_EOL;
	echo sprintf("message: %s", $e->getMessage()).PHP_EOL;
	print_r($e->getInternalInfo());
}

?>
--EXPECTF--
code: %d
message: %s
Array
(
    [sourceline] => %d
    [sourcefile] => %s
    [zif_name] => %s
)
PK|X	[ �$gBB000.solrclient_ping.phptnu�[���--TEST--
SolrClient::ping() - Ping Solr Server
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$pingResponse = $client->ping();

echo $pingResponse->getRawResponse();
?>
--EXPECT--
HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Content-Length: 0PK|X	[iT����#115.solrdismaxquery_userfields.phptnu�[���--TEST--
SolrDisMaxQuery - UserFields (uf parameter) (addUserField)
--FILE--
<?php
$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
->addUserField('cat')
->addUserField('text')
->addUserField('*_dt')
;
echo $dismaxQuery.PHP_EOL;
// // reverse
$dismaxQuery
->removeUserField('text');
echo $dismaxQuery.PHP_EOL;

$dismaxQuery->setUserFields('field1 field2 *_txt');
echo $dismaxQuery.PHP_EOL;

?>
--EXPECTF--
q=lucene&defType=%s&uf=cat text *_dt
q=lucene&defType=%s&uf=cat *_dt

Notice: SolrDisMaxQuery::setUserFields(): Parameter uf value(s) was overwritten by this call in %s on line %d
q=lucene&defType=edismax&uf=field1 field2 *_txtPK|X	[���bug_70496.phptnu�[���--TEST--
Solr Bug #70496 - Failed to parse 500 error response when Solr it lacks msg PHPS RW
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";
$options = array
(
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login'    => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port'     => SOLR_SERVER_PORT,
		'path'	   => SOLR_SERVER_PATH,
		'wt'	   => 'phps'
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$func = new SolrCollapseFunction('manu_id_s');

$func->setMax('sum(cscore(),field(manu_id_s))');
$func->setNullPolicy(SolrCollapseFunction::NULLPOLICY_EXPAND);

$query->collapse($func);
try {
	$queryResponse = $client->query($query);
} catch (SolrServerException $e) {
	printf("Exception code %d", $e->getCode());
	assert(strlen($e->getMessage()) > 0, 'Exception message is empty');
}

?>

OK
--EXPECTF--
Exception code 500
OKPK|X	[���44065.solrquery_MoreLikeThis.phptnu�[���--TEST--
SolrQuery - testing MoreLikeThis component
--FILE--
<?php

$query = new SolrQuery();

ob_start();

var_dump(
	$query->getMlt(),
	$query->getMltCount(),
	$query->getMltFields(),
	$query->getMltQueryFields(),
	$query->getMltMinTermFrequency(),
	$query->getMltMinDocFrequency(),
	$query->getMltMinWordLength(),
	$query->getMltMaxWordLength(),
	$query->getMltMaxNumTokens(),
	$query->getMltMaxNumQueryTerms(),
	$query->getMltBoost()
);
$nullOutput = ob_get_clean();

$query->setMlt(1);

$query->setMltCount(55)->setMltCount(90);

$query->addMltField('june')->addMltField('joshua')->addMltField('mom')->removeMltField('joshua');

$query->addMltQueryField('june', 0.0)->addMltQueryField('israel', 9.558)
	->addMltQueryField('removeme', 0.0)
	->removeMltQueryField('removeme')
;

$query->setMltMinTermFrequency(9);

$query->setMltMinDocFrequency(5);

$query->setMltMinWordLength(8);

$query->setMltMaxWordLength(99);

$query->setMltMaxNumTokens(6);

$query->setMltMaxNumQueryTerms(2);

$query->setMltBoost(true);

echo $query . PHP_EOL . PHP_EOL;

var_dump(
	$query->getMlt(),
	$query->getMltCount(),
	$query->getMltFields(),
	$query->getMltQueryFields(),
	$query->getMltMinTermFrequency(),
	$query->getMltMinDocFrequency(),
	$query->getMltMinWordLength(),
	$query->getMltMaxWordLength(),
	$query->getMltMaxNumTokens(),
	$query->getMltMaxNumQueryTerms(),
	$query->getMltBoost()
);

echo $nullOutput;

?>
--EXPECTF--
mlt=true&mlt.count=90&mlt.fl=june,mom&mlt.qf=june^0 israel^9.558&mlt.mintf=9&mlt.mindf=5&mlt.minwl=8&mlt.maxwl=99&mlt.maxntp=6&mlt.maxqt=2&mlt.boost=true

bool(true)
int(90)
array(2) {
  [0]=>
  string(4) "june"
  [1]=>
  string(3) "mom"
}
array(2) {
  [0]=>
  string(6) "june^0"
  [1]=>
  string(12) "israel^9.558"
}
int(9)
int(5)
int(8)
int(99)
int(6)
int(2)
bool(true)
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULLPK|X	[ղs��016.solrclient_request.phptnu�[���--TEST--
SolrClient::Request() - Sending custom update request
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$rawAtomicUpdateRequest = <<<REQ
<?xml version="1.0" encoding="UTF-8"?>
<add>
  <doc>
    <field name="id">IW-02</field>
    <field name="weight" update="inc">1</field>
    <field name="features" update="add">New Atomic Update Feature</field>
    <field name="inStock" update="set">true</field>
  </doc>
</add>
REQ;

$response = $client->request($rawAtomicUpdateRequest)->getResponse();
$client->commit();

print_r($response);
?>
--EXPECTF--

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => %d
            [QTime] => %d
        )

)PK|X	[�̘��000.solr_int_arg_strict.phptnu�[���--TEST--
Solr - Accept int (strict mode)
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
declare(strict_types=1);
require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);
$client = new SolrClient($options);

case_title(1, 'No arguments passed');
$updateResponse = $client->optimize();
print $updateResponse->getRawRequest();

case_title(2, 'int argument passed');
$updateResponse = $client->optimize(4, true, false);
print $updateResponse->getRawRequest();

case_title(3, 'string argument passed');
try {
	$updateResponse = $client->optimize('5', true, false);
} catch (SolrIllegalArgumentException $e) {
	echo $e->getMessage() . PHP_EOL;
}

case_title(4, 'object argument passed');
try {
	$updateResponse = $client->optimize(new StdClass());
} catch (SolrIllegalArgumentException $e) {
	echo $e->getMessage() . PHP_EOL;
}
?>
--EXPECTF--

case #1: No arguments passed
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="1" softCommit="false" waitSearcher="true"/>

case #2: int argument passed
<?xml version="1.0" encoding="UTF-8"?>
<optimize maxSegments="4" softCommit="true" waitSearcher="false"/>

case #3: string argument passed

case #4: object argument passed
maxSegments must be of type int.PK|X	[GN��  (023.solrdocument_merge_no_overwrite.phptnu�[���--TEST--
SolrDocument::merge() - merging source document into current document without overwrite
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrDocument();

$second_doc = new SolrDocument();

$doc->addField('id', 1123);

$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";

$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat   = 'Information Technology';

$second_doc->addField('cat', 'Lucene Search');

$second_doc->merge($doc, false);

print_r($second_doc->toArray());


?>
--EXPECT--
Array
(
    [document_boost] => 0
    [field_count] => 3
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Lucene Search
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => features
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => PHP Client Side
                            [1] => Fast development cycles
                        )

                )

        )

)
PK|X	[�`�II109.solrresponse_success.phptnu�[���--TEST--
SolrResponse::success() - Was the request successful
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);


$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query_response = $client->query($query);

var_dump($query_response->success());
?>
--EXPECTF--
bool(true)PK|X	[oˆ��198.solrparams_clone.phptnu�[���--TEST--
SolrParams - clone [exception]
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->setParam('q', 'lucene')
	->setParam('start', 0)
	->setParam('rows', 10)
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

try {
	$params2 = clone $params;
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()).PHP_EOL;
}

?>
--EXPECTF--
Exception 4001: Cloning of SolrParams object instances is currently not supported
PK|X	[83�^^008.solrclient_commit.phptnu�[���--TEST--
SolrClient::commit() - Testing commit
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$updateResponse = $client->commit();
print $updateResponse->getRawRequest();
$updateResponse = $client->commit(true,false,true);
print $updateResponse->getRawRequest();

$updateResponse = $client->commit(true,false,true);
?>
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<commit softCommit="false" waitSearcher="true" expungeDeletes="false"/>
<?xml version="1.0" encoding="UTF-8"?>
<commit softCommit="true" waitSearcher="false" expungeDeletes="true"/>PK|X	[�����195.solrparams_tostring.phptnu�[���--TEST--
SolrParams::toString()
--FILE--
<?php

$params = new SolrModifiableParams();

$params
	->setParam('q', 'lucene')
	->setParam('start', 0)
	->setParam('rows', 10)
	->addParam('fq', 'popularity:[10 TO *]')
	->addParam('fq', 'section:0')
;

echo $params->toString().PHP_EOL;
echo $params->toString(true);
?>
--EXPECTF--
q=lucene&start=0&rows=10&fq=popularity:[10 TO *]&fq=section:0
q=lucene&start=0&rows=10&fq=popularity%3A%5B10%20TO%20%2A%5D&fq=section%3A0PK|X	[�fA��!091.solrserverexception_json.phptnu�[���--TEST--
SolrServerException (json) - Throw Exception on solr server exception using json response writer
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php
require_once "bootstrap.inc";

$options = array (
		'hostname' => SOLR_SERVER_HOSTNAME,
		'login' => SOLR_SERVER_USERNAME,
		'password' => SOLR_SERVER_PASSWORD,
		'port' => SOLR_SERVER_PORT,
		'path' => SOLR_SERVER_PATH,
		'wt' => 'json'
);

$client = new SolrClient ( $options );
$query = new SolrQuery ( "lucene\\" );
try {
	$response = $client->query ( $query );
	print_r ( $response );
} catch ( SolrServerException $e ) {
	echo sprintf("code: %d", $e->getCode()).PHP_EOL;
	echo sprintf("message: %s", $e->getMessage()).PHP_EOL;
}

?>
--EXPECTF--
code: %d
message: %sPK|X	[���+107.solrresponse_getrawresponseheaders.phptnu�[���--TEST--
SolrResponse::getRawResponseHeaders() - Get Raw Response Headers
--SKIPIF--
<?php
include 'skip.if.server_not_configured.inc';
?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
	'path'	   => SOLR_SERVER_PATH,
);


$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

$headers = $query_response->getRawResponseHeaders();

$filteredHeaders = implode(
	"\n",
    array_filter(
        explode("\r\n", $headers),
        function($header) {
            return strpos($header, 'HTTP') === 0 || strpos($header, 'Content-Type') === 0;
        }
    )
);

print_r($filteredHeaders);

?>
--EXPECTF--
HTTP/%s 200 OK
Content-Type: %s
PK|X	[�
*z��$180.solrdocumentfield_construct.phptnu�[���--TEST--
SolrDocumentField::__construct
--FILE--
<?php

require_once "bootstrap.inc";
$field = new SolrDocumentField();

print_r($field);
?>
--EXPECT--
SolrDocumentField Object
(
    [name] =>  
    [boost] => 0
    [values] => 
)
PK|X	[Dk''029.solrdocument_serialize.phptnu�[���--TEST--
SolrDocument - clone
--SKIPIF--
<?php if (PHP_VERSION_ID >= 80100) die("skip PHP < 8.1 only"); ?>
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);

$doc =$response->response->docs[1];

$serializedString = serialize($doc);
print_r($serializedString);
echo PHP_EOL;
print_r(unserialize($serializedString)->toArray());
?>
--EXPECT--
C:12:"SolrDocument":172:{<?xml version="1.0" encoding="UTF-8"?>
<solr_document>
  <fields>
    <field name="id">
      <field_value>parent_2</field_value>
    </field>
  </fields>
</solr_document>
}
Array
(
    [document_boost] => 0
    [field_count] => 1
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => parent_2
                        )

                )

        )

)
PK|X	[�
qV$$033.solrdocument_sort.phptnu�[���--TEST--
SolrDocument::sort - Sort Document fields
--FILE--
<?php

require_once "bootstrap.inc";
$doc = new SolrDocument();


$doc->addField('z1', 'z1val');
$doc->addField('z1', 'z1val2');
$doc->addField('z1', 'z1val3');

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

separator('unsorted');
print_r($doc->getFieldNames());

separator('field ASC');
$doc->sort(SolrDocument::SORT_FIELD_NAME, SolrDocument::SORT_ASC);
print_r($doc->getFieldNames());
separator('field DESC');
$doc->sort(SolrDocument::SORT_FIELD_NAME, SolrDocument::SORT_DESC);
print_r($doc->getFieldNames());

separator('value ASC');
$doc->sort(SolrDocument::SORT_FIELD_VALUE_COUNT, SolrDocument::SORT_ASC);
print_r($doc->getFieldNames());
separator('value DESC');
$doc->sort(SolrDocument::SORT_FIELD_VALUE_COUNT, SolrDocument::SORT_DESC);
print_r($doc->getFieldNames());
?>
--EXPECT--
=================================== unsorted ===================================
Array
(
    [0] => z1
    [1] => id
    [2] => cat
)
================================== field ASC ===================================
Array
(
    [0] => cat
    [1] => id
    [2] => z1
)
================================== field DESC ==================================
Array
(
    [0] => z1
    [1] => id
    [2] => cat
)
================================== value ASC ===================================
Array
(
    [0] => id
    [1] => cat
    [2] => z1
)
================================== value DESC ==================================
Array
(
    [0] => z1
    [1] => cat
    [2] => id
)
PK|X	[�a���%201.solrextractrequest_serialize.phptnu�[���--TEST--
SolrExtractRequest - serialize [exception]
--FILE--
<?php

$params = new SolrModifiableParams();

$request = SolrExtractRequest::createFromFile('test', $params);

try {
	var_dump(serialize($request));
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()).PHP_EOL;
}
?>
--EXPECTF--
Exception 4001: SolrExtractRequest objects cannot be serialized or unserialized
PK|X	[)�*�%041.solrobject_illegal_operation.phptnu�[���--TEST--
SolrObject - checking illegal operation of modifying object
--FILE--
<?php

$solrObject = new SolrObject();

try
{
   @$solrObject->email = "iekpo@php.net";
} catch (Exception $e) {
    var_dump($e->getCode());
    var_dump($e->getMessage());
}

try {
	$solrObject['usingOffset'] = 'test';
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()) . PHP_EOL;
}

try {
	$solrObject['newprop2_dimension_access'] = 'test';
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()) . PHP_EOL;
}

// unset
try {
	unset($solrObject->responseHeader);
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()) . PHP_EOL;
}

try {
	unset($solrObject['responseHeader']);
} catch (SolrIllegalOperationException $e) {
	echo sprintf("Exception %d: %s", $e->getCode(), $e->getMessage()) . PHP_EOL;
}

?>
--EXPECTF--
int(1006)
string(83) "SolrObject instances are read-only. Properties cannot be added, updated or removed."

Warning: main(): Attempting to set value for [usingOffset] property in a SolrObject instance in %s on line %d
Exception 1006: SolrObject instances are read-only. Properties cannot be added, updated or removed.

Warning: main(): Attempting to set value for [newprop2_dimension_access] property in a SolrObject instance in %s on line %d
Exception 1006: SolrObject instances are read-only. Properties cannot be added, updated or removed.
Exception 1006: SolrObject instances are read-only. Properties cannot be added, updated or removed.

Warning: main(): Attempting to remove [responseHeader] property in a SolrObject instance in %s on line %d
Exception 1006: SolrObject instances are read-only. Properties cannot be added, updated or removed.
PK|X	[�j�&059.solrinputdocument_fieldexists.phptnu�[���--TEST--
SolrInputDocument::fieldExists
--FILE--
<?php

require_once "bootstrap.inc";

$doc = new SolrInputDocument();
$doc->addField('id', 1123);

var_dump($doc->fieldExists('id'));
var_dump($doc->fieldExists('features'));
?>
--EXPECT--
bool(true)
bool(false)PK|X	[��MSLL'025.solrdocument_haschilddocuments.phptnu�[���--TEST--
SolrDocument::hasChildDocuments() - Method test
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);
var_dump($response->response->docs[0]->hasChildDocuments());
?>
--EXPECT--
bool(true)PK|X	[
��d��031.solrdocument_clear.phptnu�[���--TEST--
SolrDocument::clear - Remove all fields from the document
--FILE--
<?php

require_once "bootstrap.inc";

$fixtureXml = file_get_contents(EXAMPLE_RESPONSE_XML_2);

$response = SolrUtils::digestXmlResponse($fixtureXml, SolrResponse::PARSE_SOLR_DOC);


$doc = new SolrDocument();

$doc->check = 1;

var_dump($doc->getFieldCount());
$doc->clear();
var_dump($doc->getFieldCount());
?>
--EXPECTF--
int(1)
int(0)PK|X	[~�'���019.solrclient_getdebug.phptnu�[���--TEST--
SolrClient::getDebug() - Get request debug logs for the last request
--SKIPIF--
<?php require_once 'skip.if.server_not_configured.inc'; ?>
--FILE--
<?php

require_once "bootstrap.inc";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'	   => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$response = $client->ping();

$debug = $client->getDebug();

$lines = explode("\n",$debug);
$print = false;
sort($lines);
foreach ( $lines as $line) {
	if ($line == '<?xml version="1.0" encoding="UTF-8"?>' ||
		FALSE !== strpos($line, 'Trying') ||
		0 === strpos($line, 'Mark bundle') ||
		0 === strpos($line, 'Server') ||
		0 === strpos($line, 'Hostname') ||
		0 === strpos($line, 'TCP_NODELAY') || 
		0 === strpos($line, 'Accept-Encoding') ||
		0 === strpos($line, 'Curl_http_done') ||
		0 === strpos($line, 'processing:')
		) {
		$print = false;
	} else {
		$print = true;
	}

	if ($print) {
		echo $line . "\n";
	}
}
?>
--EXPECTF--
Accept-Charset: utf-8
Accept: */*
Authorization: Basic %s
Connected to %s
Connection #0 to host %s left intact
Connection: keep-alive
Content-Length: 0
Content-Type: application/xml; charset=UTF-8
HEAD /solr/collection1/admin/ping/?version=2.2&indent=on&wt=xml HTTP/1.1
HTTP/1.1 200 OK
Host: %s:%s
Keep-Alive: 300
User-Agent: %s
PK‰	[*��)306_Imagick_interpolativeResizeImage.phptnu�[���--TEST--
Test Imagick, interpolativeResizeImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('interpolativeResizeImage'));
?>
--FILE--
<?php


function interpolativeResizeImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->interpolativeResizeImage(
		320,
		200,
		Imagick::INTERPOLATE_CATROM
	);
//    $imagick->writeImage(__DIR__ . '/claheImage_output_image.png');
    $imagick->getImageBlob();
}

interpolativeResizeImage() ;
echo "Ok";
?>
--EXPECTF--
Ok
PK‰	[o���cc%159_Imagick_transformImage_basic.phptnu�[���--TEST--
Test Imagick, transformImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('transformimage'));
?>
--FILE--
<?php


function transformimage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $newImage = $imagick->transformImage("400x600", "200x300");
    $bytes = $newImage->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

transformimage() ;
echo "Ok";
?>
--EXPECTF--
Deprecated: %s Imagick::transformImage() is deprecated in %s
Ok
PK‰	[Ro.
��!173_ImagickDraw_bezier_basic.phptnu�[���--TEST--
Test ImagickDraw, bezier
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function bezier($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);

    $smoothPointsSet = array(
        array(
            array('x' => 10.0 * 5, 'y' => 10.0 * 5),
            array('x' => 30.0 * 5, 'y' => 90.0 * 5),
            array('x' => 25.0 * 5, 'y' => 10.0 * 5),
            array('x' => 50.0 * 5, 'y' => 50.0 * 5),
        ),
        array(
            array('x' => 50.0 * 5, 'y' => 50.0 * 5),
            array('x' => 75.0 * 5, 'y' => 90.0 * 5),
            array('x' => 70.0 * 5, 'y' => 10.0 * 5),
            array('x' => 90.0 * 5, 'y' => 40.0 * 5),
        ),
    );

    foreach ($smoothPointsSet as $points) {
        $draw->bezier($points);
    }


    $disjointPoints = array(
        array(
            array('x' => 10 * 5, 'y' => 10 * 5),
            array('x' => 30 * 5, 'y' => 90 * 5),
            array('x' => 25 * 5, 'y' => 10 * 5),
            array('x' => 50 * 5, 'y' => 50 * 5),
        ),
        array(
            array('x' => 50 * 5, 'y' => 50 * 5),
            array('x' => 80 * 5, 'y' => 50 * 5),
            array('x' => 70 * 5, 'y' => 10 * 5),
            array('x' => 90 * 5, 'y' => 40 * 5),
        )
    );
    $draw->translate(0, 200);

    foreach ($disjointPoints as $points) {
        $draw->bezier($points);
    }

    //Create an image object which the draw commands can be rendered into
    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object 
    //into the image.
    $imagick->drawImage($draw);

    //Send the image to the browser
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

bezier($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[2�k#��004_clone.phptnu�[���--TEST--
Testing clone keyword
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
print "--- Testing clone keyword\n";

try {
	$im = new Imagick();
	$im->newImage(100, 100, new ImagickPixel("white"));
	$new = clone $im;
	
	if ($new->getImageWidth() == 100 && $new->getImageHeight() == 100) {
		echo "Cloning succeeded\n";
	} else {
		echo "Cloning failed\n";
	}
} catch (Exception $e) {
	echo "Cloning failed\n";
}
?>
--EXPECTF--
--- Testing clone keyword
Cloning succeededPK‰	[t�D_��236_Imagick_identify_basic.phptnu�[���--TEST--
Test Imagick, identifyImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");
$imagick->setImageFormat('png');
$data = $imagick->identifyimage();

echo "format: " . strtolower($data["format"]) . "\n";
echo "units: " . strtolower($data["units"]) . "\n";
echo "type: " . strtolower($data["type"]) . "\n";

if (array_key_exists('geometry', $data)) {
	$geometry = $data['geometry'];
	if (array_key_exists('width', $geometry) && array_key_exists('height', $geometry)) {
		printf(
			"Image geometry %dx%d",
			$geometry['width'],
			$geometry['height']
		);
		exit(0);
	}
}

echo "Failed get geometry from identifyimage:\n";
var_dump($data);

?>
--EXPECTF--
format: png (portable network graphics)
units: undefined
type: palette
Image geometry 640x480PK‰	[�b=��%119_Imagick_sepiaToneImage_basic.phptnu�[���--TEST--
Test Imagick, sepiaToneImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$sepia = 55;

function sepiaToneImage($sepia) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->sepiaToneImage($sepia);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

sepiaToneImage($sepia) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[��oٽ�$070_Imagick_equalizeImage_case2.phptnu�[���--TEST--
Test Imagick, equalizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


//This appears to corrupt the image colors?
function extentImage($startX, $startY, $width, $height) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->equalizeImage();
    $imagick->extentImage(
        $startX, $startY, $width, $height
    );
    
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}
$startX = 50;
$startY = 50;
$width = 150;
$height = 150;

extentImage($startX, $startY, $width, $height) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[��W[["144_Imagick_spliceImage_basic.phptnu�[���--TEST--
Test Imagick, spliceImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$startX = 50;
$startY = 50;
$width = 50;
$height = 50;

function spliceImage($startX, $startY, $width, $height) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->spliceImage($width, $height, $startX, $startY);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

spliceImage($startX, $startY, $width, $height) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[ȭ=��� 074_Imagick_flopImage_basic.phptnu�[���--TEST--
Test Imagick, flopImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php


function flopImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->flopImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

flopImage() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[ͷr�<<,266_ImagickDraw_getFontResolution_basic.phptnu�[���--TEST--
Test ImagickDraw, getFontResolution
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('ImagickDraw', array('getFontResolution', 'setFontResolution'));
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';


$draw = new \ImagickDraw();
setFontForImagickDraw($draw);

$draw->setStrokeColor($strokeColor);
$draw->setFillColor($fillColor);

$draw->setStrokeWidth(2);
$draw->setFontSize(72);

$fontResolution = $draw->getFontResolution();

if (isset($fontResolution["x"]) == false || isset($fontResolution["y"]) == false) {
	echo "$fontResolution doesn't contain expected values:\n";
	var_dump($fontResolution);
}

if ($fontResolution["x"] < 8 || $fontResolution["x"] > 100) {
	echo "Font resolution x outside expected range: ".$fontResolution["x"]."\n";
}
if ($fontResolution["y"] < 8 || $fontResolution["y"] > 100) {
	echo "Font resolution y outside expected range: ".$fontResolution["y"]."\n";
}

$resolutionToSet = 36;

$draw->setFontResolution($resolutionToSet, $resolutionToSet);
$fontResolution = $draw->getFontResolution();

if (abs($fontResolution["x"] - $resolutionToSet) > 0.0001) {
	echo "Font resolution x after set is not $resolutionToSet instead: ".$fontResolution["x"]."\n";
}
if (abs($fontResolution["y"] - $resolutionToSet) > 0.0001) {
	echo "Font resolution y after set is not $resolutionToSet instead: ".$fontResolution["y"]."\n";
}

$draw->line(125, 70, 100, 50);
$draw->annotation(50, 32, "Lorem Ipsum!");

$imagick = new \Imagick();
$imagick->newImage(500, 500, $backgroundColor);
$imagick->setImageFormat("png");
$imagick->drawImage($draw);


$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 


echo "Ok";
?>

--EXPECTF--
OkPK‰	[�l
�2251_ImagickPixelIterator_setIteratorRow_basic.phptnu�[���--TEST--
Test ImagickPixelIterator, setIteratorRow
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function setIteratorRow() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imageIterator = $imagick->getPixelRegionIterator(200, 100, 200, 200);

    for ($x = 0; $x < 20; $x++) {        
        $imageIterator->setIteratorRow($x * 5);
        $pixels = $imageIterator->getCurrentIteratorRow();
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $pixel) {
            /** @var $pixel \ImagickPixel */
            /* Paint every second pixel black*/
            $pixel->setColor("rgba(0, 0, 0, 0)"); 
        }

        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setIteratorRow() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[O�g"	"	/280_imagickkernel_exception_invalid_origin.phptnu�[���--TEST--
ImagickKernel::fromMatrix exceptions
--SKIPIF--
<?php 

$imageMagickRequiredVersion = 0x680;
require_once(dirname(__FILE__) . '/skipif.inc');
 
?>
--FILE--
<?php


$kernelArray = array(
	array(1, 0, -1),
	array(1, 0, -1),
	array(1, 0, -1),
);

$validOrigins = [
    [0, 0],
    [2, 0],
    [0, 2],
    [2, 2],
    [1, 2]
];

$invalidOrigins = [
    [-1, 0],
    [3, 0],
    [0, 3],
    [3, 3],
    [1, PHP_INT_MAX - 10],
];


foreach ($validOrigins as $validOrigin) {
    try {
        $kernel = ImagickKernel::fromMatrix($kernelArray, $validOrigin);
    }
    catch (\Exception $e) {
        echo "unexpected exception: " . $e->getMessage();
    }
}

foreach ($invalidOrigins as $invalidOrigin) {
    try {
        $kernel = ImagickKernel::fromMatrix($kernelArray, $invalidOrigin);
        echo "Exception wasn't thrown for case: \n";
        var_dump($invalidOrigin);
    }
    catch (\ImagickKernelException $e) {
        $message = $e->getMessage();
        if (strpos($message, "origin_y for matrix is outside bounds of rows") === 0) {
            // this is fine.
        }
        else if (strpos($message, "origin_x for matrix is outside bounds of columns") === 0) {
            // this is fine.
        }
        else {
            echo "Unexpected message: " . $message . "\n";
        }
    }
}

$flatKernelArray = array(
	array(1, 0, -2, 0, 1),
);

try {
    $kernel = ImagickKernel::fromMatrix($flatKernelArray, [1, 4]);
    echo "Exception wasn't thrown for case: \n";
    var_dump($invalidOrigin);
}
catch (\ImagickKernelException $e) {
    $message = $e->getMessage();
    if (strpos($message, "origin_y for matrix is outside bounds of rows") === 0) {
        // this is fine.
    }
    else {
        echo "Unexpected message: " . $message . "\n";
    }
}


$tallKernelArray = array(
	array(1),
	array(0),
	array(-2),
	array(0),
	array(1),
);


try {
    $kernel = ImagickKernel::fromMatrix($tallKernelArray, [4, 1]);
    echo "Exception wasn't thrown for case: \n";
    var_dump($invalidOrigin);
}
catch (\ImagickKernelException $e) {
    $message = $e->getMessage();
    if (strpos($message, "origin_x for matrix is outside bounds of columns") === 0) {
        // this is fine.
    }
    else {
        echo "Unexpected message: " . $message . "\n";
    }
}



echo "Complete".PHP_EOL;
?>
--EXPECTF--
Complete
PK‰	[��MM%100_Imagick_posterizeImage_basic.phptnu�[���--TEST--
Test Imagick, posterizeImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$posterizeType = 2;
$numberLevels = 8;

function posterizeImage($posterizeType, $numberLevels) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->posterizeImage($numberLevels, $posterizeType);
    $imagick->setImageFormat('png');
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

posterizeImage($posterizeType, $numberLevels) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�#��+220_ImagickDraw_setStrokeOpacity_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeOpacity
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeOpacity($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(10);
    $draw->setStrokeOpacity(1);
    $draw->line(100, 80, 400, 125);
    $draw->rectangle(25, 200, 150, 350);
    $draw->setStrokeOpacity(0.5);
    $draw->line(100, 100, 400, 145);
    $draw->rectangle(200, 200, 325, 350);
    $draw->setStrokeOpacity(0.2);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(375, 200, 500, 350);

    $image = new \Imagick();
    $image->newImage(550, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeOpacity($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�:���.217_ImagickDraw_setStrokeMiterLimit_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeMiterLimit
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeMiterLimit($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeOpacity(0.6);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(10);

    $yOffset = 100;

    $draw->setStrokeLineJoin(\Imagick::LINEJOIN_MITER);

    for ($y = 0; $y < 3; $y++) {

        $draw->setStrokeMiterLimit(40 * $y);

        $points = array(
            array('x' => 22 * 3, 'y' => 15 * 4 + $y * $yOffset),
            array('x' => 20 * 3, 'y' => 20 * 4 + $y * $yOffset),
            array('x' => 70 * 5, 'y' => 45 * 4 + $y * $yOffset),
        );

        $draw->polygon($points);
    }

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $image->setImageType(\Imagick::IMGTYPE_PALETTE);
    //TODO - this should either be everywhere or nowhere
    $image->setImageCompressionQuality(100);
    $image->stripImage();

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeMiterLimit($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[f��b��320_Imagick_getOptions.phptnu�[���--TEST--
Test Imagick, getOptions
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getOptions'));
?>
--FILE--
<?php

function getOptions() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $result = $imagick->getOptions();

    if ($result !== []) {
    	echo "unexpected contents of options:\n";
    	var_dump($result);
    }

    $imagick->setOption("jpeg:preserve", "yes");

    $result = $imagick->getOptions();
    $expected = ["jpeg:preserve" => "yes"];

    if ($result !== $expected) {
        echo "unexpected contents of options:\n";
        var_dump($result);
    }

    $imagick->deleteOption("jpeg:preserve");
    $result = $imagick->getOptions();

    if ($result !== []) {
    	echo "unexpected contents of options, failed to delete the set one:\n";
    	var_dump($result);
    }
}

getOptions() ;
echo "Ok";
?>
--EXPECTF--
Ok
PK‰	[���~~276_Imagick_artifacts.phptnu�[���--TEST--
Test Imagick::setImageArtifact and Imagick::getImageArtifact
--SKIPIF--
<?php

$imageMagickRequiredVersion = 0x656;

require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('setImageArtifact', 'getImageArtifact', 'deleteImageArtifact'));

?>
--FILE--
<?php

$im = new IMagick(__DIR__ . '/php.gif');

/* Examle from http://php.net/manual/de/imagick.setimageartifact.php */
var_dump($im->setImageArtifact('compose:args', '1,0,-0.5,0.5'));

var_dump($im->getImageArtifact('compose:args'));
var_dump($im->deleteImageArtifact('compose:args'));

?>
--EXPECT--
bool(true)
string(12) "1,0,-0.5,0.5"
bool(true)PK‰	[��}.EE'106_Imagick_reduceNoiseImage_basic.phptnu�[���--TEST--
Test Imagick, reduceNoiseImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('reduceNoiseImage'));
?>
--FILE--
<?php

$reduceNoise = 5;

function reduceNoiseImage($reduceNoise) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    @$imagick->reduceNoiseImage($reduceNoise);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

reduceNoiseImage($reduceNoise) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[���rii294_Imagick_cannyEdgeImage.phptnu�[���--TEST--
Test Imagick, cannyEdgeImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('cannyEdgeImage'));
?>
--FILE--
<?php


function cannyEdgeImage() {
    $path = realpath(__DIR__ . '/Biter_500.jpg');

    if ($path === false) {
        echo "Image is not readable.\n";
        exit(-1);
    }

    $imagick = new \Imagick();
    $imagick->readImage($path);

    $imagick->cannyEdgeImage(10, 4, 0.1, 0.5);
//    $imagick->writeImage(__DIR__ . '/cannyEdgeImage_output_image.png');
    $imagick->getImageBlob();
}

cannyEdgeImage() ;
echo "Ok";
?>
--EXPECTF--
Ok
PK‰	[��!���&188_ImagickDraw_pushPattern_basic.phptnu�[���--TEST--
Test ImagickDraw, pushPattern
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function pushPattern($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(1);

    $draw->pushPattern("MyFirstPattern", 0, 0, 50, 50);
    for ($x = 0; $x < 50; $x += 10) {
        for ($y = 0; $y < 50; $y += 5) {
            $positionX = $x + (($y / 5) % 5);
            $draw->rectangle($positionX, $y, $positionX + 5, $y + 5);
        }
    }
    $draw->popPattern();

    $draw->setFillOpacity(0);
    $draw->rectangle(100, 100, 400, 400);
    $draw->setFillOpacity(1);

    $draw->setFillOpacity(1);

    $draw->push();
    $draw->setFillPatternURL('#MyFirstPattern');
    $draw->setFillColor('yellow');
    $draw->rectangle(100, 100, 400, 400);
    $draw->pop();

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

pushPattern($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[<�.T&&261_compositeImageGravity.phptnu�[���--TEST--
Test compositeImageGravity
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc');

$v = Imagick::getVersion();
if ($v['versionNumber'] < 0x693)
	die ('skip too old ImageMagick');

// if ($v ['versionNumber'] >= 0x660 && $v ['versionNumber'] < 0x670)
//	die ('skip seems to be broken in this version of ImageMagick');
?>
--FILE--
<?php

$im1 = new Imagick("magick:logo");


$im2 = new Imagick("magick:logo");

$im2->scaleImage(
	$im2->getImageWidth() / 2,
	$im2->getImageHeight() / 2
);

$im1->compositeImageGravity(
	$im2,
	\Imagick::COMPOSITE_ATOP,
	\Imagick::GRAVITY_NORTHEAST
);

$im1->compositeImageGravity(
	$im2,
	\Imagick::COMPOSITE_ATOP,
	\Imagick::GRAVITY_SOUTH
);

// $im1->setImageFormat('png');
// $im1->writeImage('compositeImageGravity.png');

echo "Ok";

?>
--EXPECT--
OkPK‰	[� 131_Imagick_setOption_case2.phptnu�[���--TEST--
Test Imagick, setOption
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$imageOption = 0;
$format = 'png64';

function renderPNG($format) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setImageFormat('png');
    $imagick->setOption('png:format', $format);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

renderPNG($format) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�n���#314_Imagick_getBackgroundColor.phptnu�[���--TEST--
Test Imagick, getBackgroundColor
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getBackgroundColor'));
?>
--FILE--
<?php

function getBackgroundColor() {
    $imagick = new \Imagick();
    $background_color = $imagick->getBackgroundColor();

    /** @var $background_color \ImagickPixel */
    echo "Color is: " . $background_color->getColorAsString() . "\n";

    $imagick->setBackgroundColor('red');
    $background_color = $imagick->getBackgroundColor();

    /** @var $background_color \ImagickPixel */
    echo "Color is now: " . $background_color->getColorAsString() . "\n";

}

getBackgroundColor() ;
echo "Ok";
?>
--EXPECTF--
Color is: srgb(255,255,255)
Color is now: srgb(255,0,0)
Ok
PK‰	[3֔YY*027_Imagick_adaptiveResizeImage_basic.phptnu�[���--TEST--
Test Imagick, adaptiveResizeImage
--SKIPIF--
<?php 
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php

$width = 200;
$height = 200;
$bestFit = 1;

function adaptiveResizeImage($width, $height, $bestFit) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->adaptiveResizeImage($width, $height, $bestFit);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

adaptiveResizeImage($width, $height, $bestFit) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[!��cc321_Imagick_getOrientation.phptnu�[���--TEST--
Test Imagick, getOrientation/setOrientation
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getOrientation'));
?>
--FILE--
<?php

function getOrientation() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $orientation = $imagick->getOrientation();

    echo "Orientation is $orientation\n";
    $imagick->setOrientation(Imagick::ORIENTATION_LEFTBOTTOM);
	$orientation = $imagick->getOrientation();

    echo "Orientation is now $orientation\n";
}

getOrientation() ;
echo "Ok";
?>
--EXPECTF--
Orientation is 0
Orientation is now 8
Ok
PK‰	[����3073_Imagick_forwardFourierTransformImage_basic.phptnu�[���--TEST--
Test Imagick, forwardFourierTransformImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;

require_once(dirname(__FILE__) . '/skipif.inc'); 
require_once(dirname(__FILE__) . '/skipprobefourier.inc');

?>
--FILE--
<?php


//Utility function for forwardTransformImage
function createMask() {
    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(0);
    $draw->setStrokeColor('rgb(255, 255, 255)');
    $draw->setFillColor('rgb(255, 255, 255)');

    //Draw a circle on the y-axis, with it's centre
    //at x, y that touches the origin
    $draw->circle(250, 250, 220, 250);

    $imagick = new \Imagick();
    $imagick->newImage(512, 512, "black");
    $imagick->drawImage($draw);
    $imagick->gaussianBlurImage(20, 20);
    $imagick->autoLevelImage();

    return $imagick;
}


function forwardFourierTransformImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->resizeimage(512, 512, \Imagick::FILTER_LANCZOS, 1);

    $mask = createMask();
    $imagick->forwardFourierTransformImage(true);

    $imagick->setIteratorIndex(0);
    $magnitude = $imagick->getimage();

    $imagick->setIteratorIndex(1);
    $imagickPhase = $imagick->getimage();

    if (true) {
        $imagickPhase->compositeImage($mask, \Imagick::COMPOSITE_MULTIPLY, 0, 0);
    }

    if (false) {
        $output = clone $imagickPhase;
        $output->setimageformat('png');
    $bytes = $output->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
    }

    $magnitude->inverseFourierTransformImage($imagickPhase, true);

    $magnitude->setimageformat('png');
    $bytes = $magnitude->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

forwardFourierTransformImage() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[����NN"243_Tutorial_svgExample_basic.phptnu�[���--TEST--
Test Tutorial, svgExample
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function svgExample() {

    $svg = <<< END
<?xml version="1.0"?>
<svg version='1.0' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='746' height='742' viewBox='-362 -388 746 742' encoding='UTF-8' standalone='no'>
    <defs>
        <ellipse id='ellipse' cx='36' cy='-56' rx='160' ry='320' />
        <g id='ellipses'>
            <use xlink:href='#ellipse' fill='#0000ff' />
            <use xlink:href='#ellipse' fill='#0099ff' transform='rotate(72)' />
        </g>
    </defs>
</svg>
END;

    
    
    $svg = '<?xml version="1.0"?>
    <svg width="120" height="120"
         viewPort="0 0 120 120" version="1.1"
         xmlns="http://www.w3.org/2000/svg">

        <defs>
            <clipPath id="myClip">
                <circle cx="30" cy="30" r="20"/>
                <circle cx="70" cy="70" r="20"/>
            </clipPath>
        </defs>

        <rect x="10" y="10" width="100" height="100"
              clip-path="url(#myClip)"/>

    </svg>';



    
    $image = new \Imagick();

    $image->readImageBlob($svg);
    $image->setImageFormat("jpg");
    $bytes = $image;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

svgExample() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[z�&198_ImagickDraw_setClipPath_basic.phptnu�[���--TEST--
Test ImagickDraw, setClipPath
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setClipPath($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $clipPathName = 'testClipPath';

    $draw->pushClipPath($clipPathName);
    $draw->rectangle(0, 0, 250, 250);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);
    $draw->rectangle(100, 100, 400, 400);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setClipPath($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�$P��� 227_ImagickDraw_skewY_basic.phptnu�[���--TEST--
Test ImagickDraw, skewY
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$fillModifiedColor = 'LightCoral';
$startX = 50;
$startY = 50;
$endX = 400;
$endY = 400;
$skew = 10;

function skewY($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor, 
               $startX, $startY, $endX, $endY, $skew) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(2);
    $draw->setFillColor($fillColor);
    $draw->rectangle($startX, $startY, $endX, $endY);
    $draw->setFillColor($fillModifiedColor);
    $draw->skewY($skew);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

skewY($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
	$startX, $startY, $endX, $endY, $skew);
echo "Ok";
?>
--EXPECTF--
OkPK‰	[X��j��%281_imagick_houghLineImage_basic.phptnu�[���--TEST--
Test Imagick, houghLineImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('houghLineImage'));
?>
--FILE--
<?php


function houghLineImage() {
    $path = realpath(__DIR__ . '/houghline_input_image.png');

    if ($path === false) {
        echo "Image is not readable.\n";
        exit(-1);
    }

    $imagick = new \Imagick();
    $imagick->readImage($path);
    $imagick->setbackgroundcolor('rgb(64, 64, 64)');
    $imagick->houghLineImage(20,40, 40);
    $imagick->writeImage(__DIR__ . '/houghline_output_image.png');
}

houghLineImage() ;
echo "Ok";
?>
--CLEAN--
<?php
$f = __DIR__ . '/houghline_output_image.png';
if (file_exists($f)) {
    @unlink($f);
}
?>
--EXPECTF--
Ok
PK‰	[�l2���-088_Imagick_implodeImageWithMethod_basic.phptnu�[���--TEST--
Test Imagick, implodeImageWithMethod
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function implodeImage($method) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->implodeImageWithMethod(1.15, $method);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
//    $imagick->writeImage(__DIR__ . "/implodeImageWithMethod_$method.png");
}

$methods = [
    Imagick::INTERPOLATE_SPLINE,
    Imagick::INTERPOLATE_AVERAGE_16,
    Imagick::INTERPOLATE_BACKGROUND_COLOR
];

foreach ($methods as $method) {
    implodeImage($method);
}
echo "Ok";
?>
--EXPECTF--
OkPK‰	[!��CC076_Imagick_fxImage_basic.phptnu�[���--TEST--
Test Imagick, fxImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkFormatPresent('png');
?>
--FILE--
<?php


function fxImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(200, 200, "xc:white");

    $fx = 'xx=i-w/2; yy=j-h/2; rr=hypot(xx,yy); (.5-rr/140)*1.2+.5';
    $fxImage = $imagick->fxImage($fx);

    $fxImage->setimageformat('png');
    $bytes = $fxImage->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

fxImage() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[���oo+028_Imagick_adaptiveSharpenImage_basic.phptnu�[���--TEST--
Test Imagick, adaptiveSharpenImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$channel = Imagick::CHANNEL_DEFAULT;

function adaptiveSharpenImage($radius, $sigma, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->adaptiveSharpenImage($radius, $sigma, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

adaptiveSharpenImage($radius, $sigma, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[x�Մ��"272_imagick_identifyimagetype.phptnu�[���--TEST--
Test identifyImageType
--SKIPIF--
<?php 

require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('identifyImageType'));

?>
--FILE--
<?php

$im = new Imagick();
$im->newPseudoImage(100, 100, "magick:logo");

$type = $im->identifyImageType();

if ($type !== Imagick::IMGTYPE_PALETTE) {
	echo "Unexpected type value. Expecting: ".Imagick::IMGTYPE_PALETTE.", but got $type. \n";
}
echo "Ok";

?>
--EXPECTF--
OkPK‰	[�4d!,, 132_Imagick_setOption_case3.phptnu�[���--TEST--
Test Imagick, setOption
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$imageOption = 0;

function renderCustomBitDepthPNG() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setImageFormat('png');
    $imagick->setOption('png:bit-depth', '16');
    $imagick->setOption('png:color-type', 6);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

renderCustomBitDepthPNG() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[
��

175_ImagickDraw_arc_basic.phptnu�[���--TEST--
Test ImagickDraw, arc
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$startX = 50;
$startY = 50;
$endX = 400;
$endY = 400;
$startAngle = 0;
$endAngle = 270;

function arc($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $startAngle, $endAngle) {

    //Create a ImagickDraw object to draw into.
    $draw = new \ImagickDraw();
    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);

    $draw->arc($startX, $startY, $endX, $endY, $startAngle, $endAngle);

    //Create an image object which the draw commands can be rendered into
    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object 
    //into the image.
    $image->drawImage($draw);

    //Send the image to the browser
    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

arc($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $startAngle, $endAngle) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[uIm���1250_ImagickPixelIterator_resetIterator_basic.phptnu�[���--TEST--
Test ImagickPixelIterator, resetIterator
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function resetIterator() {

    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $imageIterator = $imagick->getPixelIterator();

    /* Loop trough pixel rows */
    foreach ($imageIterator as $pixels) {
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) {
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {

                /* Make every second pixel 25% red*/
                $pixel->setColorValue(\Imagick::COLOR_RED, 64); 
            }
        }
        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    $imageIterator->resetiterator();

    /* Loop trough pixel rows */
    foreach ($imageIterator as $pixels) {
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) {
            /** @var $pixel \ImagickPixel */
            if ($column % 3) {
                $pixel->setColorValue(\Imagick::COLOR_BLUE, 64); /* Make every second pixel a little blue*/
                //$pixel->setColor("rgba(0, 0, 128, 0)"); /* Paint every second pixel black*/
            }
        }
        $imageIterator->syncIterator(); /* Sync the iterator, this is important to do on each iteration */
    }

    $imageIterator->clear();

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

resetIterator() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�1�;S
S
025-get-color.phptnu�[���--TEST--
Test getColor and getColorQuantum
--SKIPIF--
<?php 

require_once(dirname(__FILE__) . '/skipif.inc');


?>
--FILE--
<?php

define('ORIGINAL', 'ORIGINAL');
define('NORMALISED', 'NORMALISED');
define('NORMALISED_INCLUDING_ALPHA', 'NORMALISED_INCLUDING_ALPHA');
define('QUANTUM', 'QUANTUM');

function checkExpectedValue($expectedValue, $actualValue, $hasVariance) {

	$variance = 0; 

	// Behaviour of 50% pixel was changed in 
	// key = version
	// value = variance expected in result
	$troubledVersions = array(
		0x692 => 1
	);
	$v = Imagick::getVersion();
	$versionNumber = $v['versionNumber'];

	if (array_key_exists($versionNumber, $troubledVersions)) {
		$variance = $troubledVersions[$versionNumber];
	}

	if (Imagick::getHDRIEnabled()) {
		return abs($expectedValue - $actualValue) < (0.01 + $variance);
	}

	if ($hasVariance) {
		$difference = abs($expectedValue - $actualValue);
		if ($difference < 1 + $variance) {
			return true;
		}
		echo "difference $difference not < 1 + variance $variance\n";
		return false;
	}
	else if($expectedValue == $actualValue) {
		return true;
	}

	return false;
}

function getExpectedValue($someValue) {
	if (Imagick::getHDRIEnabled()) {
		return $someValue;
	}

	$v = Imagick::getVersion();
	if ($v['versionNumber'] >= 0x692) {
		//this is the new correct behaviour
		return (intval(round($someValue, 0, PHP_ROUND_HALF_UP)));
	}
	else {
		//old behaviour had wrong rounding.
		return (intval(round($someValue, 0, PHP_ROUND_HALF_DOWN)));
	}
}


$tests = array(
	array(
		'red',
		ORIGINAL,  
		array(
			array('r', getExpectedValue(255), 0),
			array('a', getExpectedValue(1.0), 0)
		),
	),
	array(
		'red',
		QUANTUM,  
		array(
			array('r', getExpectedValue(\Imagick::getQuantum()), 0),
			array('a', getExpectedValue(\Imagick::getQuantum()), 0)
		),
	),
	array(
		'rgb(25%, 25%, 25%)',
		QUANTUM,
		array(
			array('r', getExpectedValue(\Imagick::getQuantum() / 4), 0),
			array('a', getExpectedValue(\Imagick::getQuantum()), 0),
		)
	)
);

$version = Imagick::getVersion();
// The following don't seem stable in lesser versions.
if ($version['versionNumber'] >= 0x687) {
	$tests[] = array(
		'green',
		QUANTUM,  
		array(
			array('g', getExpectedValue(\Imagick::getQuantum() * (128 / 255)), 1),
			array('a', getExpectedValue(\Imagick::getQuantum()), 1)
		),
	);

	$tests[] = array(
		'rgb(0, 50%, 0)',
		QUANTUM,  
		array(
			array('g', getExpectedValue(\Imagick::getQuantum() / 2), 1),
			array('a', getExpectedValue(\Imagick::getQuantum()), 0)
		),
	);
}


foreach ($tests as $test) {

	list($colorString, $type, $expectations) = $test;
	$pixel = new ImagickPixel($colorString);

	switch ($type) {

		case(ORIGINAL): {
			$color = $pixel->getColor();
			break;
		}

		case(NORMALISED): {
			$color = $pixel->getColor(true);
			break;
		}

		case(NORMALISED_INCLUDING_ALPHA): {
			$color = $pixel->getColor(2);
			break;
		}

		case(QUANTUM): {
			$color = $pixel->getColorQuantum();
			break;
		}

		default:{
			echo "Unknown test type $type" . PHP_EOL;
			break;
		}
	}

	foreach ($expectations as $test) {
		list($key, $expectedValue, $hasVariance) = $test;
		if (!checkExpectedValue($expectedValue, $color[$key], $hasVariance)) {
			printf( 
				"%s %s is wrong for colorString '%s': actual %s != expected %s"  . PHP_EOL,
				$type,
				$key, $colorString,
				$color[$key], $expectedValue
			);
		}
	}
}

echo "OK" . PHP_EOL;
?>
--EXPECT--
OKPK‰	[!�5F$$+152_Imagick_swirlImageWithMethod_basic.phptnu�[���--TEST--
Test Imagick, swirlImageWithMethod
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$swirl = 100;

function swirlImageWithMethod($swirl) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->swirlImageWithMethod($swirl, Imagick::INTERPOLATE_BILINEAR);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

swirlImageWithMethod($swirl) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[6���� 185_ImagickDraw_point_basic.phptnu�[���--TEST--
Test ImagickDraw, point
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function point($fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setFillColor($fillColor);

    for ($x = 0; $x < 10000; $x++) {
        $draw->point(rand(0, 500), rand(0, 500));
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

point($fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�t˭II*239_Tutorial_gradientReflection_basic.phptnu�[���--TEST--
Test Tutorial, gradientReflection
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function gradientReflection() {
    $im = new \Imagick();
    $im->newPseudoImage(640, 480, "magick:logo");
    
    $reflection = clone $im;

    $reflection->flipImage();

    $reflection->cropImage($im->getImageWidth(), $im->getImageHeight() * 0.75, 0, 0);

    $gradient = new \Imagick();
    $gradient->newPseudoImage(
         $reflection->getImageWidth(),
         $reflection->getImageHeight(),
         //Putting spaces in the rgba string is bad
         'gradient:rgba(255,0,255,0.6)-rgba(255,255,0,0.99)'
    );

    $reflection->compositeimage(
       $gradient,
       \Imagick::COMPOSITE_DSTOUT,
       0, 0
    );

    $canvas = new \Imagick();
    $canvas->newImage($im->getImageWidth(), $im->getImageHeight() * 1.75, new \ImagickPixel('rgba(255, 255, 255, 0)'));
    $canvas->compositeImage($im, \Imagick::COMPOSITE_BLEND, 0, 0);
    $canvas->setImageFormat('png');
    $canvas->compositeImage($reflection, \Imagick::COMPOSITE_BLEND, 0, $im->getImageHeight());

    $canvas->stripImage();
    $canvas->setImageFormat('png');
    header('Content-Type: image/png');
    $bytes = $canvas;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

gradientReflection() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[F��$��)213_ImagickDraw_setStrokeAlpha_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeAlpha
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeAlpha($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(4);
    $draw->line(100, 100, 400, 145);
    $draw->rectangle(100, 200, 225, 350);
    $draw->setStrokeOpacity(0.1);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeAlpha($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[���*SS 048_Imagick_cropImage_basic.phptnu�[���--TEST--
Test Imagick, cropImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$startX = 50;
$startY = 50;
$width = 50;
$height = 50;

function cropImage($startX, $startY, $width, $height) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->cropImage($width, $height, $startX, $startY);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

cropImage($startX, $startY, $width, $height) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[����TT 041_Imagick_chopImage_basic.phptnu�[���--TEST--
Test Imagick, chopImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$startX = 50;
$startY = 50;
$width = 100;
$height = 50;

function chopImage($startX, $startY, $width, $height) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->chopImage($width, $height, $startX, $startY);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

chopImage($startX, $startY, $width, $height) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[R�e޲�
bug21229.phptnu�[���--TEST--
Test PECL bug #21229
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

class ImagickTest extends Imagick {
    
	/* Protected property */
    protected $test;
    
	/* Override width property */
	public $width = 112233;

    public function setTestValue($value) {
        $this->test = $value;
        return $this;
    }
    
    public function getTestValue() {
        return $this->test;
    }
}

$test = new ImagickTest("magick:logo");
$test->setTestValue("test value");

echo "Value: " , $test->getTestValue() , PHP_EOL;

var_dump($test->width, $test->height);

echo "OK" , PHP_EOL;


?>
--EXPECTF--
Value: test value
int(112233)
int(%d)
OKPK‰	[D�ڊUU$093_Imagick_modulateImage_basic.phptnu�[���--TEST--
Test Imagick, modulateImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$hue = 150;
$saturation = 100;
$brightness = 100;

function modulateImage($hue, $brightness, $saturation) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->modulateImage($brightness, $saturation, $hue);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

modulateImage($hue, $brightness, $saturation) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[>z�e��!138_Imagick_shaveImage_basic.phptnu�[���--TEST--
Test Imagick, shaveImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function shaveImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->shaveImage(100, 50);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

shaveImage() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�			278_Imagick_optimaze_gif.phptnu�[���--TEST--
Test Imagick::optimizeimagelayers and Imagick::optimizeimagetransparency
--SKIPIF--
<?php

$imageMagickRequiredVersion = 0x686;

require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('optimizeimagelayers'));
checkClassMethods('Imagick', array('optimizeimagetransparency'));

?>
--FILE--
<?php

function makeSimpleGif() {
    $aniGif = new \Imagick();
    $aniGif->setFormat("gif");

    $circleRadius = 20;
    $imageFrames = 6;
    $imageSize = 200;

    $background = new \Imagick();
    $background->newpseudoimage($imageSize, $imageSize, "canvas:gray");

    $blackWhite = new \Imagick();
    $blackWhite->newpseudoimage($imageSize, $imageSize, "gradient:black-white");

    $backgroundPalette = clone $background;
    $backgroundPalette->quantizeImage(240, \Imagick::COLORSPACE_RGB, 8, false, false);

    $blackWhitePalette = clone $blackWhite;
    $blackWhitePalette->quantizeImage(16, \Imagick::COLORSPACE_RGB, 8, false, false);

    $backgroundPalette->addimage($blackWhitePalette);

    for($count=0 ; $count<$imageFrames ; $count++) {
        echo "Frame: ".$count."\n";
        $drawing = new \ImagickDraw();
        $drawing->setFillColor('white');
        $drawing->setStrokeColor('rgba(64, 64, 64, 0.8)');
        $strokeWidth = 4;
        $drawing->setStrokeWidth($strokeWidth);

        $distanceToMove = $imageSize + (($circleRadius + $strokeWidth) * 2);
        $offset = ($distanceToMove * $count / ($imageFrames -1)) - ($circleRadius + $strokeWidth);
        $drawing->translate($offset, ($imageSize / 2) + ($imageSize / 3 * cos(20 * $count / $imageFrames)));
        $drawing->circle(0, 0, $circleRadius, 0);

        $frame = clone $background;
        $frame->drawimage($drawing);
        $frame->clutimage($backgroundPalette);
        $frame->setImageDelay(10);
        $aniGif->addImage($frame);
    }

    $aniGif = $aniGif->deconstructImages();

    $bytes = $aniGif->getImagesBlob();
    if (strlen($bytes) <= 0) {
        echo "Failed to generate image.";
    }

    return $aniGif;
}

function optimizeGif($im) {
    $im = $im->coalesceImages();
    $im->optimizeImageLayers();
    $im->optimizeimagetransparency();
}

$simpleGif = makeSimpleGif();
optimizeGif($simpleGif);

echo "Ok"
?>
--EXPECT--
Frame: 0
Frame: 1
Frame: 2
Frame: 3
Frame: 4
Frame: 5
Ok
PK‰	[���2HHhoughline_input_image.pngnu�[����PNG


IHDR�,e��gAMA���a cHRMz&�����u0�`:�p��Q<�PLTE������^^^KKK���������8cy�w�Z�	-O���쭭�PPP��޿��~~~}����K����r���
0Ua���ߐ��6a}����[[[V��츸�n����)#�bKGD*S�Ԟ9IDATx���nGEQ9DZ�-�
��6)J�С��4���'O8��^�ͷ�~g�3���q���9�ß�K'w���=��Wv����:|y/�|����k�{���k{��_��'w��֜��KYr�/b��>�}'w�Ď���S:~r�O���>��'w�z���C�wr����>�1'w�@F���Cr��l��~��'�����"����?��95�9����d����w���*'��oy�g�����'����/f�R)�O~���㾚�Qu$8��|}y�7����'_�oE[3IN�,߉�FҜ�����L'_�D�q�N.��v�E����혔'mG$=�h�/��ѶS擋�]r�\���h۪��E�6%N.ڶ(rrѶ^��/�m�J'm��:�h[��R'_D��~���Ͽ̾W�m�_�>��̾X�m�?�7���g��8ѶR��mk�xѶ^��m��xѶE��m۔�xѶQ��m��xѶ]��m;d�xѶK�m���xѶS�m���x�v@ڍmd�x�vH΍m��x�vPƍm���x��@��m-d�x��D��m�d�x��J��m���x��P��m-%�x��V��m�e�x��Z��m���x��A�m=�x��G�m�D�x��K�m���x��Sԍm=�x��Wȍm��x��]��m���x�6B��mC�x�6F��m��x�6L��m��x�6R��mC��x�6X��m��x�6��m��x�6��mS��x�6�̍m�L�x�6ͼ�m��x�6՜�ms��x�6ٌ�mӍ�x�6��m��x��؍m1�x��ȍma��x�ǰ�m���x�ʘ�m��x�̀�m���x�O��mu�x�Sߍm1u�x�UǍmqu�x�X��m�u�x�[��m�u�x�]��m�5�xі@�m)4�xіCӍmI��xіFÍmy4�xіH��m���xіL��mɴ�xі��m	�xі�эm)�xіԑ�mY�xі��m���xі�ލm���xіܞ�m���xі��ml�x�V�ƍm5l�x�VĖ�mUl�x�V��m���x�V�ʍm���x�V͚�mլ�x�V�+7^�U�m%�b�E[M�n�h�ꑍme=�񢭮7^�U��Ƌ����x�Vܽ/ڪ�g�E[yw7^�����mg��Ƌ�Sxq�E�I��x�v�6^��ƭ�m��|�Eۉ�l�h;��/�N�f��~	]o�h;��7^��˿/���j�E��\m��'S�����z�IEND�B`�PK‰	[Y1��&063_Imagick_distortImage_Shepards.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        //The control points move points in the image in a taffy like motion
        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

        $points = array(

            //Setup some control points that don't move
            5 * $imagick->getImageWidth() / 100, 5 * $imagick->getImageHeight() / 100,
            5 * $imagick->getImageWidth() / 100, 5 * $imagick->getImageHeight() / 100,
            
            5 * $imagick->getImageWidth() / 100, 95 * $imagick->getImageHeight() / 100,
            5 * $imagick->getImageWidth() / 100, 95 * $imagick->getImageHeight() / 100,

            95 * $imagick->getImageWidth() / 100, 95 * $imagick->getImageHeight() / 100,
            95 * $imagick->getImageWidth() / 100, 95 * $imagick->getImageHeight() / 100,

            5 * $imagick->getImageWidth() / 100, 5 * $imagick->getImageHeight() / 100,
            95 * $imagick->getImageWidth() / 100, 95 * $imagick->getImageHeight() / 100,
//            //Move the centre of the image down and to the right
//            50 * $imagick->getImageWidth() / 100, 50 * $imagick->getImageHeight() / 100,
//            60 * $imagick->getImageWidth() / 100, 60 * $imagick->getImageHeight() / 100,
//
//            //Move a point near the top-right of the image down and to the left and down
//            90 * $imagick->getImageWidth(), 10 * $imagick->getImageHeight(),
//            80 * $imagick->getImageWidth(), 15 * $imagick->getImageHeight(),  
        );

        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_EDGE);
        $imagick->distortImage(\Imagick::DISTORTION_SHEPARDS, $points, TRUE);
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPK‰	[ț+"066_Imagick_embossImage_basic.phptnu�[���--TEST--
Test Imagick, embossImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;

function embossImage($radius, $sigma) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->embossImage($radius, $sigma);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

embossImage($radius, $sigma) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�JXuZZ 130_Imagick_setOption_case1.phptnu�[���--TEST--
Test Imagick, setOption
--SKIPIF--
<?php
//Double-free issue in ImageMagick makes test un-runnable before 690
$imageMagickRequiredVersion=0x690;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php

$extent = '10kb';

function renderJPG($extent) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setImageFormat('jpg');
    $imagick->setOption('jpeg:extent', $extent);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

renderJPG($extent) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[ӥ��322_Imagick_getResolution.phptnu�[���--TEST--
Test Imagick, getResolution
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getResolution'));
?>
--FILE--
<?php

function getResolution() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $result = $imagick->getResolution();

    echo "x is " . $result['x'] . "\n";
    echo "y is " . $result['y'] . "\n";

    $imagick->setResolution(120, 60);
    $result = $imagick->getResolution();

    echo "x is now " . $result['x'] . "\n";
    echo "y is now " . $result['y'] . "\n";

    $imagick->getImageBlob();
}

getResolution() ;
echo "Ok";
?>
--EXPECTF--
x is 72
y is 72
x is now 120
y is now 60
Ok
PK‰	[�64>>)197_ImagickDraw_roundRectangle_basic.phptnu�[���--TEST--
Test ImagickDraw, roundRectangle
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$startX = 50;
$startY = 50;
$endX = 400;
$endY = 400;
$roundX = 100;
$roundY = 50;

function roundRectangle($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $roundX, $roundY) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $draw->roundRectangle($startX, $startY, $endX, $endY, $roundX, $roundY);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

roundRectangle($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $roundX, $roundY) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[D�٭II009_properties.phptnu�[���--TEST--
Test reading properties
--SKIPIF--
<?php 
	require_once(dirname(__FILE__) . '/skipif.inc'); 
	checkFormatPresent('png');
?>
--FILE--
<?php

$im = new Imagick();
$im->newPseudoImage(100, 100, "XC:red");
$im->setImageFormat("png");

echo $im->width . "x" . $im->height . "\n";
echo $im->format;

?>
--EXPECTF--
100x100
pngPK‰	[1��jj$085_Imagick_haldClutImage_basic.phptnu�[���--TEST--
Test Imagick, haldClutImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function haldClutImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagickPalette = new \Imagick();
    $imagickPalette->newPseudoImage(640, 480, "magick:NETSCAPE");

    $imagickPalette->sepiatoneImage(55);
    $imagick->haldClutImage($imagickPalette);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

haldClutImage() ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[�UU��(256_Imagick_exportImagePixels_basic.phptnu�[���--TEST--
Test Imagick, Imagick::exportImagePixels
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x687;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$imagick = new \Imagick();
$imagick->newPseudoImage(256, 256, "gradient:black-white");

$pixelTypes = array(
	Imagick::PIXEL_CHAR => function($v) { return $v / 255; } ,
	Imagick::PIXEL_DOUBLE => function($v) { return $v; } ,
	Imagick::PIXEL_FLOAT => function($v) { return $v; } ,
	Imagick::PIXEL_LONG => function($v) { return $v / 4294967295; },
	Imagick::PIXEL_QUANTUM => function($v) { return $v / Imagick::getQuantum(); } ,
	Imagick::PIXEL_SHORT => function($v) { return $v / 65535; } ,

	// This is not supported as ints close to 64bits are weird in PHP
	// Imagick::PIXEL_LONGLONG => function($v) { return $v / (2 << 64 -1 ); } ,
);

$v = Imagick::getVersion();
if ($v['versionNumber'] < 0x700) {
	//This test will probably fail on 32bit platforms. If you see this please
	//submit a PR that fixes the problem.
	$pixelTypes[Imagick::PIXEL_INTEGER] =  function($v) { return $v / 4294967295; }; 
}



foreach ($pixelTypes as $pixelType => $scaleFn) {
	try {
		$pixels = $imagick->exportImagePixels(0, 0, 1, 256, "R", $pixelType);
	
		for ($i = 0; $i<10 ; $i++) {
			$expectedValue = $i / 255;
			$scaledActualValue = $scaleFn($pixels[$i]);
	
			if (abs($expectedValue - $scaledActualValue) > 0.0001) {
				echo "pixel type $pixelType has incorrect values. They should be 0/255, 1/255, 2/255... 255/255 or the scaled equivalent\n";
				var_dump($pixels);
				break;
			}
		}
	}
	catch (\Exception $e) {
		echo "Exception caught for pixelType: $pixelType ";
		echo $e->getMessage();
	}
}


echo "Ok";
?>
--EXPECTF--
OkPK‰	[?� �jj"049_Imagick_deskewImage_basic.phptnu�[���--TEST--
Test Imagick, deskewImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkFormatPresent('jpg');
?>
--FILE--
<?php

$threshold = 0.5;

function deskewImage($threshold) {
    $imagick = $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $deskewImagick = clone $imagick;
    
    //This is the only thing required for deskewing.
    $deskewImagick->deskewImage($threshold);

    //The rest of this example is to make the result obvious - because
    //otherwise the result is not obvious.
    $trim = 9;

    $deskewImagick->cropImage($deskewImagick->getImageWidth() - $trim, $deskewImagick->getImageHeight(), $trim, 0);
    $imagick->cropImage($imagick->getImageWidth() - $trim, $imagick->getImageHeight(), $trim, 0);
    $deskewImagick->resizeimage($deskewImagick->getImageWidth() / 2, $deskewImagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS, 1);
    $imagick->resizeimage(
        (int)($imagick->getImageWidth() / 2),
        (int)($imagick->getImageHeight() / 2),
        \Imagick::FILTER_LANCZOS,
        1
    );
    $newCanvas = new \Imagick();
    $newCanvas->newimage($imagick->getImageWidth() + $deskewImagick->getImageWidth() + 20, $imagick->getImageHeight(), 'red', 'jpg');
    $newCanvas->compositeimage($imagick, \Imagick::COMPOSITE_COPY, 5, 0);
    $newCanvas->compositeimage($deskewImagick, \Imagick::COMPOSITE_COPY, $imagick->getImageWidth() + 10, 0);

    $bytes = $newCanvas->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

deskewImage($threshold) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[������#112_Imagick_roundCorners_basic.phptnu�[���--TEST--
Test Imagick, roundCorners
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');

checkClassMethods('Imagick', array('roundCornersImage'));
?>
--FILE--
<?php

function roundCorners() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setBackgroundColor('red');

    $imagick->setbackgroundcolor('pink');

    $x_rounding = 40;
    $y_rounding = 40;
    $stroke_width = 5;
    $displace = 0;
    $size_correction = 0;

    $imagick->roundCornersImage(
            $x_rounding,
                $y_rounding,
                $stroke_width,
                $displace,
                $size_correction
    );

    $bytes = $imagick->getImageBlob();
    $imagick->setImageFormat('png');
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
// $imagick->writeImage(__DIR__ . "/112_round_corner.png");
}

roundCorners() ;
echo "Ok";
?>
--EXPECTF--
Ok
PK‰	[Z�!]]001_imagick_readimage.phptnu�[���--TEST--
Imagick::readImage test
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
print "--- Catch exception with try/catch\n";
$imagick = new Imagick();
try {
	$imagick->readImage('foo.jpg');
} catch (ImagickException $e) {
	echo "got exception";
}

?>
--EXPECTF--
--- Catch exception with try/catch
got exceptionPK‰	[�1����!195_ImagickDraw_rotate_basic.phptnu�[���--TEST--
Test ImagickDraw, rotate
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$fillModifiedColor = 'LightCoral';

function rotate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {
    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeOpacity(1);
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);
    $draw->setFillColor($fillModifiedColor);
    $draw->rotate(15);
    $draw->rectangle(200, 200, 300, 300);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

rotate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK‰	[dgr�		"186_ImagickDraw_polygon_basic.phptnu�[���--TEST--
Test ImagickDraw, polygon
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function polygon($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(4);

    $draw->setFillColor($fillColor);

    $points = array(
        array('x' => 40 * 5, 'y' => 10 * 5),
        array('x' => 20 * 5, 'y' => 20 * 5),
        array('x' => 70 * 5, 'y' => 50 * 5),
        array('x' => 60 * 5, 'y' => 15 * 5),
    );

    $draw->polygon($points);

    $image = new \Imagick();
    $image->newImage(500, 300, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

polygon($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[꣮��� 196_ImagickDraw_scale_basic.phptnu�[���--TEST--
Test ImagickDraw, scale
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$fillModifiedColor = 'LightCoral';

function scale($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(4);
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);
    $draw->setFillColor($fillModifiedColor);
    $draw->scale(1.4, 1.4);
    $draw->rectangle(200, 200, 300, 300);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

scale($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�aP--260_localContrastImage.phptnu�[���--TEST--
Test localContrastImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc');

$v = Imagick::getVersion();
checkClassMethods('Imagick', array('localContrastImage'));

?>
--FILE--
<?php

$im = new Imagick("magick:logo");
$im->localContrastImage(2, 2);

echo "Ok";

?>
--EXPECT--
OkPKÉ	[n���@@"039_Imagick_borderImage_basic.phptnu�[���--TEST--
Test Imagick, borderImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$width = 50;
$height = 20;
$color = 'rgb(127, 127, 127)';

function borderImage($color, $width, $height) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->borderImage($color, $width, $height);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

borderImage($color, $width, $height) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[L4+�xx323_Imagick_getType.phptnu�[���--TEST--
Test Imagick, getType
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getType'));
?>
--FILE--
<?php

function test_getType() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $type = $imagick->getType();

    echo "Type is " . $type . "\n";
}

test_getType() ;
echo "Ok";
?>
--EXPECTF--
Type is 0
Ok
PKÉ	[�ӅPP&054_Imagick_distortImage_Bilinear.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array(
            0,0, 25,25, # top left  
            176,0, 126,0, # top right
            0,135, 0,105, # bottom right 
            176,135, 176,135 # bottum left
        );
        $imagick->setImageBackgroundColor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND );
        $imagick->distortImage( \Imagick::DISTORTION_BILINEAR, $points, TRUE );
        header( "Content-Type: image/jpeg" );
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKÉ	[��!���&193_ImagickDraw_pushPattern_basic.phptnu�[���--TEST--
Test ImagickDraw, pushPattern
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function pushPattern($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(1);

    $draw->pushPattern("MyFirstPattern", 0, 0, 50, 50);
    for ($x = 0; $x < 50; $x += 10) {
        for ($y = 0; $y < 50; $y += 5) {
            $positionX = $x + (($y / 5) % 5);
            $draw->rectangle($positionX, $y, $positionX + 5, $y + 5);
        }
    }
    $draw->popPattern();

    $draw->setFillOpacity(0);
    $draw->rectangle(100, 100, 400, 400);
    $draw->setFillOpacity(1);

    $draw->setFillOpacity(1);

    $draw->push();
    $draw->setFillPatternURL('#MyFirstPattern');
    $draw->setFillColor('yellow');
    $draw->rectangle(100, 100, 400, 400);
    $draw->pop();

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

pushPattern($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[6wep**,143_Imagick_spreadImageWithMethod_basic.phptnu�[���--TEST--
Test Imagick, spreadImageWithMethod
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;

function spreadImageWithMethod($radius) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->spreadImageWithMethod($radius, Imagick::INTERPOLATE_BILINEAR);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

spreadImageWithMethod($radius) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�lύ�325_Imagick_setDepth.phptnu�[���--TEST--
Test Imagick, setDepth
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('setDepth'));
?>
--FILE--
<?php

function setDepth() {
    $imagick = new \Imagick();

    $imagick->setDepth(16);
    $imagick->newPseudoImage(640, 480, "gradient:red-blue");

    echo "Depth is " .$imagick->getImageDepth() . "\n";

    // $imagick->getImageBlob();
    // TODO - check that the depth has actually worked?
    // this could be done by generating a gradient, and counting the unique
    // numbers of colours, or by looking at gradient artifacts.
}

setDepth() ;
echo "Ok";
?>
--EXPECTF--
Depth is 16
Ok
PKÉ	[uC~:��$235_ImagickDraw_translate_basic.phptnu�[���--TEST--
Test ImagickDraw, translate
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$fillModifiedColor = 'LightCoral';
$startX = 50;
$startY = 50;
$endX = 400;
$endY = 400;
$translateX = 75;
$translateY = 75;

function translate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor, 
                   $startX, $startY, $endX, $endY, $translateX, $translateY) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $draw->setFillColor($fillModifiedColor);
    $draw->translate($translateX, $translateY);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

translate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
    $startX, $startY, $endX, $endY, $translateX, $translateY);
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�)�VQQ$151_Imagick_subImageMatch_basic.phptnu�[���--TEST--
Test Imagick, subImageMatch
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x687;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

function subImageMatch() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->adaptiveResizeImage(100, 100, true);
    //This makes the test fall over on some versions of ImageMagick
    //$imagick->setImageAlphaChannel(\Imagick::ALPHACHANNEL_DEACTIVATE);
    $imagick2 = clone $imagick;
    $imagick2->cropimage(25, 25, 50, 50);
    $imagick2->setImageFormat('png');

    $imagick2->setImagePage(25, 25, 0, 0);
    $imagick2->vignetteimage(0.25, 0.75, 3, 3);

    $similarity = 'not set';
    $bestMatch = 'not st';
    $comparison = $imagick->subImageMatch($imagick2, $bestMatch, $similarity);

    $comparison->setImageFormat('png');
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

    $version = Imagick::getVersion();
    if ($version['versionNumber'] >= 0x700) {
        $expectedValue = 0.7642;
    }
    else {
        $expectedValue = 0.5585;
    }

    // This doesn't work reliably - the values are not comparable across versions
    // if (abs($expectedValue - $similarity) <= 0.005) {
    //     echo "Similarity in range\n";
    // }
    // else {
    //     echo "Similarity is out of range.\n";
    //     var_dump($similarity);
    // }
    
    ksort($bestMatch);
    foreach ($bestMatch as $key => $value) {
        echo "$key : $value\n";
    }
}

subImageMatch() ;
echo "Ok";
?>

--EXPECTF--
height : 25
width : 25
x : 50
y : 50
OkPKÉ	[�kͪ55$296_Imagick_waveletDenoiseImage.phptnu�[���--TEST--
Test Imagick, waveletDenoiseImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('waveletDenoiseImage'));
?>
--FILE--
<?php


function waveletDenoiseImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');

    $imagick->waveletDenoiseImage(5, 5);
    $imagick->writeImage(__DIR__ . '/waveletDenoiseImage_output_image.png');
//    $imagick->getImageBlob();
}

waveletDenoiseImage() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/waveletDenoiseImage_output_image.png');
?>
--EXPECTF--
Ok
PKÉ	[nm?��$181_ImagickDraw_pathStart_basic.phptnu�[���--TEST--
Test ImagickDraw, pathStart
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function pathStart($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50, 50);
    $draw->pathLineToAbsolute(100, 50);
    $draw->pathLineToRelative(0, 50);
    $draw->pathLineToHorizontalRelative(-50);
    $draw->pathFinish();

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50, 50);
    $draw->pathMoveToRelative(300, 0);
    $draw->pathLineToRelative(50, 0);
    $draw->pathLineToVerticalRelative(50);
    $draw->pathLineToHorizontalAbsolute(350);
    $draw->pathclose();
    $draw->pathFinish();

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50, 300);
    $draw->pathCurveToAbsolute(50, 300, 100, 200, 300, 300);
    $draw->pathLineToVerticalAbsolute(350);
    $draw->pathFinish();

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

pathStart($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[/A��  !078_Imagick_gammaImage_basic.phptnu�[���--TEST--
Test Imagick, gammaImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$gamma = 2.2;
$channel = Imagick::CHANNEL_DEFAULT;

function gammaImage($gamma, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->gammaImage($gamma, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

gammaImage($gamma, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[i�Xtzz326_Imagick_setExtract.phptnu�[���--TEST--
Test Imagick, setExtract
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('setExtract'));
?>
--FILE--
<?php

function setExtract() {
    $imagick = new \Imagick();
    $imagick->setExtract("300x200+0+0");

    $imagick->readImage(__DIR__ . '/Biter_500.jpg');


//    $data = $imagick->getImageBlob();
//
//    $new_imagick = new Imagick();
//    $new_imagick->readImageBlob($data);

    echo "Width is " . $imagick->getImageWidth() . "\n";
    echo "Height is " . $imagick->getImageHeight() . "\n";
}

setExtract() ;
echo "Ok";
?>
--EXPECTF--
Width is 300
Height is 200
Ok
PKÉ	[�~�**%045_Imagick_compositeImage_basic.phptnu�[���--TEST--
Test Imagick, compositeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function compositeImage() {

    $img1 = new \Imagick();
    $img1->newPseudoImage(640, 480, "magick:logo");

    $img2 = new \Imagick();
    $img2->newPseudoImage(640, 480, "magick:logo"); 
    $img2->negateImage(false);
    $img2->blurimage(10, 5);


    $img1->resizeimage(
        $img2->getImageWidth(),
        $img2->getImageHeight(),
        \Imagick::FILTER_LANCZOS,
        1
    );

    $opacity = new \Imagick();    
    $opacity->newPseudoImage(
        $img1->getImageHeight(),
        $img1->getImageWidth(),
        "gradient:gray(10%)-gray(90%)"
    );
    $opacity->rotateimage('black', 90);

    $img2->compositeImage($opacity, \Imagick::COMPOSITE_COPYOPACITY, 0, 0);
    $img1->compositeImage($img2, \Imagick::COMPOSITE_ATOP, 0, 0);

    $bytes = $img1->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

compositeImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�bb(080_Imagick_gaussianBlurImage_basic.phptnu�[���--TEST--
Test Imagick, gaussianBlurImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$channel = Imagick::CHANNEL_DEFAULT;

function gaussianBlurImage($radius, $sigma, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->gaussianBlurImage($radius, $sigma, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

gaussianBlurImage($radius, $sigma, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[����00273_imagick_falsyimage.phptnu�[���--TEST--
Imagick::__construct false
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

try {
	$imagick = new Imagick(false);
}
catch (\ImagickException $ie) {
	echo $ie->getMessage()."\n";
}


?>
--EXPECTF--
Constructor shouldn't be called with a boolean as the filenamePKÉ	[�����305_Imagick_complexImages.phptnu�[���--TEST--
Test Imagick, complexImages
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('complexImages'));
?>
--FILE--
<?php

function complexImages() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $multiply = new Imagick();
    $multiply->newPseudoImage($imagick->getImageWidth(), $imagick->getImageHeight(), "gradient:black-white");
    $imagick->addImage($multiply);

    $imagick->complexImages(Imagick::COMPLEX_OPERATOR_MULTIPLY);
//    $imagick->writeImage(__DIR__ . '/complexImages_output_image.png');
    $imagick->getImageBlob();
}

complexImages() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKÉ	[G����� 067_Imagick_edgeImage_basic.phptnu�[���--TEST--
Test Imagick, edgeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;

function edgeImage($radius) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->edgeImage($radius);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

edgeImage($radius) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�����-211_ImagickDraw_setStrokeAntialias_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeAntialias
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeAntialias($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setStrokeAntialias(false);
    $draw->line(100, 100, 400, 105);

    $draw->line(100, 140, 400, 185);

    $draw->setStrokeAntialias(true);
    $draw->line(100, 110, 400, 115);
    $draw->line(100, 150, 400, 195);

    $image = new \Imagick();
    $image->newImage(500, 250, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeAntialias($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[-ιL		#289_Imagick_setImageMask_basic.phptnu�[���--TEST--
Test Imagick, medianFilterImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getImageMask', 'setImageMask'));
?>
--FILE--
<?php

$canvas = new Imagick(__DIR__ . '/houghline_input_image.png');

$mask = new Imagick();
$mask->newPseudoImage(
	$canvas->getImageWidth(),
	$canvas->getImageHeight(),
	'xc:black'
);

$drawing = new ImagickDraw();
$drawing->setBorderColor('black');
$drawing->setFillColor('black');
$drawing->rectangle(0, 0, $mask->getImageWidth(), $mask->getImageHeight());

$drawing->setBorderColor('white');
$drawing->setFillColor('white');
$drawing->circle(
	$mask->getImageWidth() / 2,
	$mask->getImageHeight() / 2,
	2 * $mask->getImageWidth() / 3,
	$mask->getImageHeight() / 2
);

$mask->drawImage($drawing);
//$mask->writeImage(__DIR__ . "/test_mask.png");

// This would probably be more useful for users
// but shows the issue with PIXELMASK_COMPOSITE
// $mask->blurImage(10, 2);

$mask_types = array(
	\Imagick::PIXELMASK_READ =>        "PIXELMASK_READ",
	\Imagick::PIXELMASK_WRITE =>       "PIXELMASK_WRITE",
	\Imagick::PIXELMASK_COMPOSITE =>   "PIXELMASK_COMPOSITE",
);

$channel_types = array(
	\Imagick::CHANNEL_ALL => "CHANNEL_ALL",
	\Imagick::CHANNEL_RED => "CHANNEL_RED",
	\Imagick::CHANNEL_ALPHA => "CHANNEL_ALPHA",
	\Imagick::CHANNEL_RGBA => "CHANNEL_RGBA",
	\Imagick::CHANNEL_BLACK => "CHANNEL_BLACK",
	\Imagick::CHANNEL_DEFAULT => "CHANNEL_DEFAULT",
);

foreach ($channel_types as $channel_type => $channel_name) {
	foreach ($mask_types as $type => $type_name) {
		$output = clone $canvas;
		$output->setImageMask($mask, $type);

		$output->blurImage(15, 4, $channel_type);
//		$output->writeImage(__DIR__ . "/test_canvas" . $type_name . "_" . $channel_name .  ".png");
	}
}

echo "Ok";
?>
--EXPECTF--
Ok
PKÉ	[�Ỡ�$013-read-filehandle-file-stream.phptnu�[���--TEST--
Imagick::readImageFile, file stream test
--SKIPIF--
<?php
	require_once(dirname(__FILE__) . '/skipif.inc');
	checkFormatPresent('jpg');
?>
--FILE--
<?php

$file = dirname(__FILE__) . '/__tmp_rose.jpg';
$handle = fopen($file, 'w+');

$imagick = new Imagick('magick:rose');
$imagick->setImageFormat('jpg');
$imagick->writeImageFile($handle);

$imagick->clear();

rewind($handle);

$imagick->readImageFile($handle);

echo "Width: " . $imagick->getImageWidth() . "\n";
echo "Height: " . $imagick->getImageHeight() . "\n";

@unlink($file);

echo 'success';

?>
--CLEAN--
<?php
@unlink(dirname(__FILE__) . '/__tmp_rose.jpg');
?>
--EXPECT--
Width: 70
Height: 46
success
PKÉ	[b���'241_Tutorial_psychedelicFont_basic.phptnu�[���--TEST--
Test Tutorial, psychedelicFont
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

function psychedelicFont() {
    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);
    $name = 'Danack';

    $draw->setStrokeOpacity(1);
    $draw->setFillColor('black');

    $draw->setfontsize(150);

    for ($strokeWidth = 25; $strokeWidth > 0; $strokeWidth--) {
        $hue = intval(170 + $strokeWidth * 360 / 25);
        $draw->setStrokeColor("hsl($hue, 255, 128)");
        $draw->setStrokeWidth($strokeWidth * 3);
        $draw->annotation(60, 165, $name);
    }

    //Create an image object which the draw commands can be rendered into
    $imagick = new \Imagick();
    $imagick->newImage(650, 230, "#eee");
    $imagick->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object
    //into the image.
    $imagick->drawImage($draw);

    //Send the image to the browser
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

psychedelicFont() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[���i>>(058_Imagick_distortImage_Polynomial.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;


// Order     X1,Y1 I1,J1     X2,Y2 I2,J2     X3,Y3 I3,J3     X4,Y4 I4,J4 . . . .
// The 'Order' argument is usually an integer from '1' onward, though a special value
// of '1.5' can also be used. This defines the 'order' or complexity of the 2-dimensional
// mathematical equation (using both 'x' and 'y') , that will be applied.
// For example an order '1' polynomial will fit a equation of the form...
// Xd = 	 C2x*Xs + C1x*Ys + C0x	  ,      	Yd = 	 C2y*Xs + C1y*Ys + C0y 
// See also http://www.imagemagick.org/Usage/distorts/#polynomial

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array(
            1.5,   //Order 1.5 = special
            0, 0, 26, 0,   
            128,0,  114,23,  
            128,128,  128,100,
            0,128,  0,123
        );
        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
        $imagick->distortImage(\Imagick::DISTORTION_POLYNOMIAL, $points, TRUE);
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKÉ	[Mߥ�292_index_iterator.phptnu�[���--TEST--
Test iterating over images works
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$canvasTypes = [
    "radial-gradient:red-blue",
    "gradient:black-fuchsia",
    "plasma:tomato-steelblue",
];

$canvas = new Imagick();


foreach ($canvasTypes as $canvasType) {
    $imagick = new Imagick();
    $imagick->newPseudoImage(300, 300, $canvasType);
    $canvas->addImage($imagick);
}

$canvas->setImageFormat("png");

foreach ($canvas as $canvasSubImage) {
    echo $canvas->getIteratorIndex() . "\n";
    echo $canvas->getImageIndex() . "\n";
}

for ($i=0; $i<3; $i+=1) {
    $canvas->setImageIndex($i);
    echo $canvas->getIteratorIndex() . "\n";
}
for ($i=0; $i<3; $i+=1) {
    $canvas->setIteratorIndex($i);
    echo $canvas->getImageIndex() . "\n";
}

$canvas->setImageIndex(-1);
if ($canvas->getImageIndex() !== 2) {
    echo "Setting image index to -1 did something unexpected. Or at least is a BC break.\n";
}
else {
    echo "still " . $canvas->getImageIndex() . " as hasn't changed\n";
}

try {
    $canvas->setImageIndex(3);
}
catch (ImagickException $ie) {
    echo "Exception: ". $ie->getMessage() . "\n";
}

echo "Ok";
?>
--EXPECTF--
0
0
1
1
2
2
0
1
2
0
1
2
still 2 as hasn't changed
Exception: Unable to set image index
Ok

PKÉ	[ {���&203_ImagickDraw_setFillRule_basic.phptnu�[���--TEST--
Test ImagickDraw, setFillRule
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFillRule($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $fillRules = array(\Imagick::FILLRULE_NONZERO, \Imagick::FILLRULE_EVENODD);

    $points = 11;
    $size = 150;

    $draw->translate(175, 160);

    for ($x = 0; $x < 2; $x++) {
        $draw->setFillRule($fillRules[$x]);
        $draw->pathStart();
        for ($n = 0; $n < $points * 2; $n++) {

            if ($n >= $points) {
                $angle = fmod($n * 360 * 4 / $points, 360) * pi() / 180;
            }
            else {
                $angle = fmod($n * 360 * 3 / $points, 360) * pi() / 180;
            }

            $positionX = $size * sin($angle);
            $positionY = $size * cos($angle);

            if ($n == 0) {
                $draw->pathMoveToAbsolute($positionX, $positionY);
            }
            else {
                $draw->pathLineToAbsolute($positionX, $positionY);
            }
        }

        $draw->pathClose();
        $draw->pathFinish();

        $draw->translate(325, 0);
    }

    $image = new \Imagick();
    $image->newImage(700, 320, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFillRule($fillColor, $strokeColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�)���%242_Tutorial_levelizeImage_basic.phptnu�[���--TEST--
Test Tutorial, levelizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$blackPoint = 50;
$whitePoint = 100;
$gamma = 2.2;

function levelizeImage($blackPoint, $gamma,  $whitePoint) {
    $imagick = new \Imagick();
    $imagick->newPseudoimage(300, 300, 'gradient:black-white');
    $maxQuantum = $imagick->getQuantum();
    $imagick->evaluateimage(\Imagick::EVALUATE_POW, 1 / $gamma);
    
    //Adjust the scale from black to white to the new 'distance' between black and white
    $imagick->evaluateimage(\Imagick::EVALUATE_MULTIPLY, ($whitePoint - $blackPoint) / 100 );

    //Add move the black point to it's new value
    $imagick->evaluateimage(\Imagick::EVALUATE_ADD, ($blackPoint / 100) * $maxQuantum);
    $imagick->setFormat("png");

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

levelizeImage($blackPoint, $gamma,  $whitePoint) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�A��77008_newpseudoimage.phptnu�[���--TEST--
Test pseudo formats
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$im = new Imagick();
$im->newPseudoImage(100, 100, "XC:red");
var_dump($im->getImageGeometry());

$im->newPseudoImage(10, 10, "magick:logo");
var_dump($im->getImageGeometry());

$im->readImage("magick:logo");
var_dump($im->getImageGeometry());

$im->newPseudoImage(10, 10, "rose:");
var_dump($im->getImageGeometry());

try { 
$im->newPseudoImage(10, 10, "png:");
var_dump($im->getImageGeometry());
} catch (Exception $e) {
	echo "fail\n";
}

?>
--EXPECTF--
array(2) {
  ["width"]=>
  int(%d)
  ["height"]=>
  int(%d)
}
array(2) {
  ["width"]=>
  int(%d)
  ["height"]=>
  int(%d)
}
array(2) {
  ["width"]=>
  int(%d)
  ["height"]=>
  int(%d)
}
array(2) {
  ["width"]=>
  int(%d)
  ["height"]=>
  int(%d)
}
failPKÉ	[�`�d"234_Tutorial_edgeExtend_basic.phptnu�[���--TEST--
Test Tutorial, edgeExtend
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$virtualPixelType = 5;

function edgeExtend($virtualPixelType) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setImageVirtualPixelMethod($virtualPixelType);

    $imagick->scaleimage(400, 300, true);

    $imagick->setbackgroundcolor('pink');
   
    $desiredWidth = 600;
    $originalWidth = $imagick->getImageWidth();

    //Make the image be the desired width.
    $imagick->sampleimage($desiredWidth, $imagick->getImageHeight());

    //Now scale, rotate, translate (aka affine project) it
    //to be how you want
    $points = array(//The x scaling factor is 0.5 when the desired width is double
        //the source width
        ($originalWidth / $desiredWidth), 0, //Don't scale vertically
        0, 1, //Offset the image so that it's in the centre
        ($desiredWidth - $originalWidth) / 2, 0);

    $imagick->distortImage(\Imagick::DISTORTION_AFFINEPROJECTION, $points, false);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

//Fyi it may be easier to think of the affine transform by 
//how it works for a rotation:
//$affineRotate = array(
//    "sx" => cos($angle),
//    "sy" => cos($angle),
//    "rx" => sin($angle),
//    "ry" => -sin($angle),
//    "tx" => 0,
//    "ty" => 0,
//);
}

edgeExtend($virtualPixelType) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[��{y��"143_Imagick_spreadImage_basic.phptnu�[���--TEST--
Test Imagick, spreadImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;

function spreadImage($radius) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->spreadImage($radius);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

spreadImage($radius) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�u��NN#135_Imagick_sharpenImage_basic.phptnu�[���--TEST--
Test Imagick, sharpenImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$channel = Imagick::CHANNEL_DEFAULT;

function sharpenImage($radius, $sigma, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->sharpenimage($radius, $sigma, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

sharpenImage($radius, $sigma, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�Hb���-247_ImagickPixelIterator_construct_basic.phptnu�[���--TEST--
Test ImagickPixelIterator, construct
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function construct() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imageIterator = new \ImagickPixelIterator($imagick);

    /* Loop through pixel rows */
    foreach ($imageIterator as $pixels) { 
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) { 
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {
                /* Paint every second pixel black*/
                $pixel->setColor("rgba(0, 0, 0, 0)");
            }
        }
        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

construct() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�E�G��&013-read-filehandle-memory-stream.phptnu�[���--TEST--
Imagick::readImageFile, in-memory stream test
--SKIPIF--
<?php
	require_once(dirname(__FILE__) . '/skipif.inc');
	checkFormatPresent('jpg');
?>
--XFAIL--
This test was recently added (July 2024), and appears to be failing on multiple
versions of PHP. It should be fixed, but doesn't need to hold up a release.
--FILE--
<?php

$handle = fopen('php://memory', 'w+');

$imagick = new Imagick('magick:rose');
$imagick->setImageFormat('jpg');
$imagick->writeImageFile($handle);

$imagick->clear();

rewind($handle);

$imagick->readImageFile($handle);

echo "Width: " . $imagick->getImageWidth() . "\n";
echo "Height: " . $imagick->getImageHeight() . "\n";

echo 'success';

?>
--EXPECT--
Width: 70
Height: 46
success
PKÉ	[UދC((007_thumbnail_fill.phptnu�[���--TEST--
Test filling thumbnail with color
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc');

$v = Imagick::getVersion();
if ($v['versionNumber'] < 0x632)
	die ('skip too old ImageMagick');

if ($v ['versionNumber'] >= 0x660 && $v ['versionNumber'] < 0x670)
	die ('skip seems to be broken in this version of ImageMagick');
?>
--FILE--
<?php

$im = new Imagick("magick:logo");
$im->setImageBackgroundColor("pink");
$im->thumbnailImage(200, 200, true, true);

$color = $im->getImagePixelColor(5, 5);
if ($color->isPixelSimilar("pink", 0))
	echo "Similar" . PHP_EOL;
else
	var_dump ($color->getColorAsString());

$color = $im->getImagePixelColor(199, 5);
if ($color->isPixelSimilar("pink", 0))
	echo "Similar" . PHP_EOL;
else
	var_dump ($color->getColorAsString());
?>
--EXPECT--
Similar
SimilarPKÉ	[�ty� 180_ImagickDraw_matte_basic.phptnu�[���--TEST--
Test ImagickDraw, matte
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc'); 
checkClassMethods('ImagickDraw', array('matte'));
?>

--FILE--
<?php

$paintType = 4;
$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function matte($strokeColor, $fillColor, $backgroundColor, $paintType) {
    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->matte(120, 120, $paintType);
    
    $draw->rectangle(100, 100, 300, 200);
    

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

matte($strokeColor, $fillColor, $backgroundColor, $paintType) ;
echo "Ok";
?>
--EXPECTF--
Deprecated: %s ImagickDraw::matte() is deprecated in %s
Ok
PKÉ	[ћ��"315_Imagick_getImageArtifacts.phptnu�[���--TEST--
Test Imagick, getImageArtifacts
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getImageArtifacts'));
?>
--FILE--
<?php

function getImageArtifacts() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $artifacts = $imagick->getImageArtifacts();

// TODO - get a better test image with artifact data in it.
//
//    $expectedEntries = [
//        "exif:ApertureValue" => false,
//        "exif:ColorSpace" => false,
//        "exif:CustomRendered" => false,
//        "exif:DateTime" => false,
//        "exif:DateTimeDigitized" => false,
//        "exif:DateTimeOriginal" => false,
//        "exif:ExifOffset" => false,
//        "exif:ExifVersion" => false,
//    ];
//
//    foreach ($artifacts as $key => $value) {
//       if (array_key_exists($key, $expectedEntries) === true) {
//            $expectedEntries[$key] = true;
//        }
//    }
//
//    $any_failed = false;
//    foreach ($expectedEntries as $key => $value) {
//        if ($value !== true) {
//            echo "Expected entry $key was not set\n";
//            $any_failed = true;
//        }
//    }

//    if ($any_failed === true) {
//        var_dump($artifacts);
//    }

    $imagick->getImageBlob();
}

getImageArtifacts();
echo "Ok";
?>
--EXPECTF--
Ok
PKÉ	[4	�zmm003_cast_color_opacity.phptnu�[���--TEST--
Casting color and opacity to pixel
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
print "--- Testing casts\n";

try {
	$im = new Imagick();
	$im->newImage(100, 100, "red");
	$im->tintImage("red", "gray(50%)");
	echo "Casting color and opacity succeeded\n";
} catch (Exception $e) {
	echo "Casting color and opacity failed: " , $e->getMessage() . PHP_EOL;
}

try {
	$im = new Imagick();
	$pixel = new ImagickPixel("red");
	$strengthPixel = new ImagickPixel("gray");
	$im->newImage(100, 100, $pixel);
	$im->tintImage($pixel, $strengthPixel);
	echo "Setting color and opacity without cast succeeded\n";
} catch (Exception $e) {
	echo "Setting color and opacity without cast failed: " , $e->getMessage() . PHP_EOL;
}

?>
--EXPECTF--
--- Testing casts
Casting color and opacity succeeded
Setting color and opacity without cast succeededPKÉ	[��nk""%265_ImagickDraw_getOpacity_basic.phptnu�[���--TEST--
Test ImagickDraw, getOpacity
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('ImagickDraw', array('setOpacity'));
requirePHP("5.5.0");
?>

--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';



$draw = new \ImagickDraw();

$draw->setStrokeColor($strokeColor);
$draw->setFillColor($fillColor);

$draw->setStrokeWidth(2);
$draw->setFontSize(72);

$opacityToSet = 0.1;

$draw->setOpacity($opacityToSet);
$opacity = $draw->getOpacity();

$delta = abs($opacity - $opacityToSet);
if ($delta > 0.0001) {
	echo "Failed to get correct opacity, it should be $opacityToSet but got $opacity, which is a delta of $delta\n";
}

$draw->line(125, 70, 100, 50);
$draw->line(350, 170, 100, 150);

$imagick = new \Imagick();
$imagick->newImage(500, 500, $backgroundColor);
$imagick->setImageFormat("png");
$imagick->drawImage($draw);




$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 



echo "Ok";
?>
--EXPECTF--
OkPKÉ	[®.�==330_Imagick_newImage.phptnu�[���--TEST--
Test Imagick, newImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');

?>
--FILE--
<?php


$image = new Imagick();
$image->newImage(100, 100, new ImagickPixel('red'), 'png');

// Image format case changed at some point in IM
echo strtolower($image->getImageFormat());
echo "\n";

$image = new Imagick();
$image->newImage(100, 100, 'blue', null);

try {
    $image->getImageFormat();
    echo "Failed to throw exception";
}
catch (ImagickException $ie) {
    echo $ie->getMessage() . "\n";
}

echo "Ok";
?>
--EXPECTF--
png
Image has no format
Ok
PKÉ	[�}��EE#300_Imagick_autoThresholdImage.phptnu�[���--TEST--
Test Imagick, autoThresholdImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('autoThresholdImage'));
?>
--FILE--
<?php


function autoThresholdImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->autoThresholdImage(Imagick::AUTO_THRESHOLD_OTSU);
    $imagick->writeImage(__DIR__ . '/autoThresholdImage_output_image.png');
//    $imagick->getImageBlob();
}

autoThresholdImage() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/autoThresholdImage_output_image.png');
?>
--EXPECTF--
Ok
PKÉ	[����-030_Imagick_adaptiveThresholdImage_basic.phptnu�[���--TEST--
Test Imagick, adaptiveThresholdImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php

$width = 50;
$height = 20;
$adaptiveOffset = 0.125;

function adaptiveThresholdImage($width, $height, $adaptiveOffset) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $adaptiveOffsetQuantum = intval($adaptiveOffset * \Imagick::getQuantum());
    $imagick->adaptiveThresholdImage($width, $height, $adaptiveOffsetQuantum);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

adaptiveThresholdImage($width, $height, $adaptiveOffset) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[���S##%268_ImagickDraw_getDensity_basic.phptnu�[���--TEST--
Test ImagickDraw, getDensity
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('ImagickDraw', array('getDensity', 'setDensity'));
?>
--XFAIL--
Expected behaviour is not known :-p
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

$draw = new \ImagickDraw();

$draw->setStrokeColor($strokeColor);
$draw->setFillColor($fillColor);

$draw->setStrokeWidth(2);
$draw->setFontSize(72);

$opacityToSet = 0.1;

$densitySet = "200";


$draw->setDensity($densitySet);
$densityGet = $draw->getDensity();

if (strcmp($densitySet, $densityGet) !== 0) {
	echo "Density retrieved [$densityGet] is not the value set [$densitySet].";
}

$draw->line(125, 70, 100, 50);
$draw->line(350, 170, 100, 150);

$imagick = new \Imagick();
$imagick->newImage(500, 500, $backgroundColor);
$imagick->setImageFormat("png");
$imagick->drawImage($draw);

$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";

?>
--EXPECTF--
OkPKÉ	[j����%097_Imagick_newPseudoImage_basic.phptnu�[���--TEST--
Test Imagick, newPseudoImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$canvasType = 'gradient:red';

function newPseudoImage($canvasType) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(300, 300, $canvasType);
    $imagick->setImageFormat("png");
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

newPseudoImage($canvasType) ;
echo "Ok";
?>
--EXPECTF--
Ok
PKÉ	[�h�VV#245_Tutorial_screenEmbed_basic.phptnu�[���--TEST--
Test Tutorial, screenEmbed
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function screenEmbed() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $overlay = new \Imagick();
    $overlay->newPseudoImage(640, 480, "magick:logo");

    $overlay->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);

    $width = $overlay->getImageWidth();
    $height = $overlay->getImageHeight();

    $offset = 332.9;

    $points = array(    
        0, 0, 364 - $offset, 51, 
        $width, 0, 473.4 - $offset, 23, 
        0, $height, 433.5 - $offset, 182, 
        $width, $height, 523 - $offset, 119.4
    );

    $overlay->modulateImage(97, 100, 0);
    $overlay->distortImage(\Imagick::DISTORTION_PERSPECTIVE, $points, true);

    $imagick->compositeImage($overlay, \Imagick::COMPOSITE_OVER, (int)(364.5 - $offset), 23);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

screenEmbed() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�#�FF)133_Imagick_setSamplingFactors_basic.phptnu�[���--TEST--
Test Imagick, setSamplingFactors
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function setSamplingFactors() {

    $imagePath = "../imagick/images/FineDetail.png";
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setImageFormat('jpg');
    $imagick->setSamplingFactors(array('2x2', '1x1', '1x1'));

    $compressed = $imagick->getImageBlob();

    
    $reopen = new \Imagick();
    $reopen->readImageBlob($compressed);

    $reopen->resizeImage(
        $reopen->getImageWidth() * 4,
        $reopen->getImageHeight() * 4,
        \Imagick::FILTER_POINT,
        1
    );
    
    $bytes = $reopen->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setSamplingFactors() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[��a~��)221_ImagickDraw_setStrokeWidth_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeWidth
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeWidth($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->line(100, 100, 400, 145);
    $draw->rectangle(100, 200, 225, 350);
    $draw->setStrokeWidth(5);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeWidth($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[��t�$$bug_72226.phptnu�[���--TEST--
Allow Imagick exceptions to be extended.
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
error_reporting( E_ALL ); 

ini_set( "display_errors", true );

class UserlandImagickException extends ImagickException {}
class UserlandImagickDrawException extends ImagickDrawException {}
class UserlandImagickPixelException extends ImagickPixelException {}

if (class_exists('ImagickKernelException', false) == true) {
	class UserlandImagickKernelException extends ImagickKernelException
	{
	}
}

?>
--EXPECTF--
PKÉ	[J
d�~~=183_ImagickDraw_pathCurveToQuadraticBezierAbsolute_basic.phptnu�[���--TEST--
Test ImagickDraw, pathCurveToQuadraticBezierAbsolute
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function pathCurveToQuadraticBezierAbsolute($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50,250);

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is the first two params, and the end point is the last two params.
    $draw->pathCurveToQuadraticBezierAbsolute(
        150,50, 
        250,250
    );

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is mirrored from the previous curves control point
    // and the end point is defined by the x, y values.
    $draw->pathCurveToQuadraticBezierSmoothAbsolute(
        450,250
    );

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is mirrored from the previous curves control point
    // and the end point is defined relative from the current position by the x, y values.
    $draw->pathCurveToQuadraticBezierSmoothRelative(
        200,-100
    );

    $draw->pathFinish();

    $imagick = new \Imagick();
    $imagick->newImage(700, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

}

pathCurveToQuadraticBezierAbsolute($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[y<mAA+218_ImagickDraw_setStrokeLineCap_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeLineCap
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeLineCap($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(25);

    $lineTypes = array(\Imagick::LINECAP_BUTT, \Imagick::LINECAP_ROUND, \Imagick::LINECAP_SQUARE,);

    $offset = 0;

    foreach ($lineTypes as $lineType) {
        $draw->setStrokeLineCap($lineType);
        $draw->line(50 + $offset, 50, 50 + $offset, 250);
        $offset += 50;
    }

    $imagick = new \Imagick();
    $imagick->newImage(300, 300, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeLineCap($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[b�s8VV6249_ImagickPixelIterator_getNextIteratorRow_basic.phptnu�[���--TEST--
Test ImagickPixelIterator, getNextIteratorRow
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function getNextIteratorRow() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imageIterator = $imagick->getPixelIterator();

    $count = 0;
    while ($pixels = $imageIterator->getNextIteratorRow()) {
        if (($count % 3) == 0) {
            /* Loop through the pixels in the row (columns) */
            foreach ($pixels as $column => $pixel) { 
                /** @var $pixel \ImagickPixel */
                if ($column % 2) {
                    /* Paint every second pixel black*/
                    $pixel->setColor("rgba(0, 0, 0, 0)");
                }
            }
            /* Sync the iterator, this is important to do on each iteration */
            $imageIterator->syncIterator(); 
        }

        $count += 1;
    }

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

getNextIteratorRow() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�*~�{{*075_Imagick_floodFillPaintImage_basic.phptnu�[���--TEST--
Test Imagick, floodFillPaintImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$fillColor = 'rgb(0, 0, 0)';
$fuzz = 0.2;
$targetColor = 'rgb(245, 124, 24)';
$x = 260;
$y = 150;
$inverse = 0;
$channel = Imagick::CHANNEL_DEFAULT;

function floodFillPaintImage($fillColor, $fuzz, $targetColor, $x, $y, $inverse, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    
    $imagick->floodFillPaintImage(
        $fillColor,
        $fuzz * \Imagick::getQuantum(),
        $targetColor,
        $x, $y,
        $inverse,
        $channel
    );
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

floodFillPaintImage($fillColor, $fuzz, $targetColor, $x, $y, $inverse, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�S`ff'118_Imagick_setImageArtifact_basic.phptnu�[���--TEST--
Test Imagick, setImageArtifact
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function setImageArtifact() {
    $src1 = new \Imagick();
    $src1->newPseudoImage(640, 480, "magick:logo");
    
    $src2 = new \Imagick();
    $src2->newPseudoImage(480, 640, "magick:WIZARD");

    $compose_args = $src2->getImageArtifact('compose:args');
    var_dump($compose_args);

    $src2->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
    $src2->setImageArtifact('compose:args', "1,0,-0.5,0.5");
    $src1->compositeImage($src2, Imagick::COMPOSITE_MATHEMATICS, 0, 0);

    $compose_args = $src2->getImageArtifact('compose:args');
    var_dump($compose_args);

    $src2->setImageArtifact('compose:args', null);
    $compose_args2 = $src2->getImageArtifact('compose:args');
    var_dump($compose_args2);

    $src1->setImageFormat('png');
    $bytes = $src1->getImagesBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setImageArtifact() ;
echo "Ok";
?>
--EXPECTF--
NULL
string(12) "1,0,-0.5,0.5"
NULL
OkPKÉ	[*��'165_Imagick_unsharpMaskImage_basic.phptnu�[���--TEST--
Test Imagick, unsharpMaskImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$amount = 5;
$unsharpThreshold = 0;
$channel = Imagick::CHANNEL_DEFAULT;

function unsharpMaskImage($radius, $sigma, $amount, $unsharpThreshold) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->unsharpMaskImage($radius, $sigma, $amount, $unsharpThreshold);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

unsharpMaskImage($radius, $sigma, $amount, $unsharpThreshold) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�m

,279_ImagickDraw_setTextInterlineSpacing.phptnu�[���--TEST--
Test ImagickDraw:: setTextInterlineSpacing
--SKIPIF--
<?php
$minimumVersions = ['6.9.8-6', '7.0.5-7'];
require_once(dirname(__FILE__) . '/skipif.inc');

?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

$interlineSpacings = [0, 16, 24, 36];

$imageHeights = [];

foreach ($interlineSpacings as $interlineSpacing) {

    $draw = new \ImagickDraw();

    setFontForImagickDraw($draw);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(56);

    $draw->setFontSize(16);
    $draw->setStrokeAntialias(true);
    $draw->setTextAntialias(true);
    $draw->setFillColor('#ff0000');
    $draw->setTextInterlineSpacing($interlineSpacing);

    $imagick = new \Imagick();
    $imagick->newImage(600, 600, "rgb(230, 230, 230)");
    $imagick->setImageFormat('png');
    $imagick->annotateImage($draw, 30, 40, 0, "Line 1\nLine 2\nLine 3");
    $imagick->trimImage(0);
    $imagick->setImagePage($imagick->getimageWidth(), $imagick->getimageheight(), 0, 0);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) {
        die("Failed to generate image.");
    }

    $imageHeights[$interlineSpacing] = $imagick->getImageHeight();

    $imagick->writeImage(__DIR__ . "/interline_spacing_test_$interlineSpacing.png");
}


$previousHeight = null;

foreach ($imageHeights as $interlineSpacing => $imageHeight) {
    if ($previousHeight !== null) {
        $differenceFromPrevious = $imageHeight - $previousHeight;
        if ($differenceFromPrevious < 15) {
            echo "textInterlineSpacing of $interlineSpacing only resulted in extra height of $differenceFromPrevious\n";
        }
    }

    $previousHeight = $imageHeight;
}

echo "Ok";
?>
--CLEAN--
<?php
$interlineSpacings = [0, 16, 24, 36];
foreach ($interlineSpacings as $interlineSpacing) {
    @unlink(__DIR__ . "/interline_spacing_test_$interlineSpacing.png");
}

?>
--EXPECTF--
Ok
PKÉ	[O=6��(163_Imagick_uniqueImageColors_basic.phptnu�[���--TEST--
Test Imagick, uniqueImageColors
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function uniqueImageColors() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    //Reduce the image to 256 colours nicely.
    $imagick->quantizeImage(256, \Imagick::COLORSPACE_YIQ, 0, false, false);
    $imagick->uniqueImageColors();
    $imagick->scaleimage($imagick->getImageWidth(), $imagick->getImageHeight() * 20);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

uniqueImageColors() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[������!052_Imagick_distortImage_Arc.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        //Make some text arc around the center of it's image
//        convert logo: -resize x150 -gravity NorthEast -crop 100x100+10+0! \
//        \( -background none label:'IM Examples' \
//        -virtual-pixel Background +distort Arc '270 50 20' \
//        -repage +75+21\! \)  -flatten  arc_overlay.jpg

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $degrees = array( 180 );
        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND );
        $imagick->distortImage( \Imagick::DISTORTION_ARC, $degrees, TRUE );
        header( "Content-Type: image/jpeg" );
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�T�bb&206_ImagickDraw_setFontSize_basic.phptnu�[���--TEST--
Test ImagickDraw, setFontSize
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFontSize($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    setFontForImagickDraw($draw);

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);

    $sizes = array(24, 36, 48, 60, 72);

    foreach ($sizes as $size) {
        $draw->setFontSize($size);
        $draw->annotation(50, ($size * $size / 16), "Lorem Ipsum!");
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFontSize($fillColor, $strokeColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[�	���bug_66098.phptnu�[���--TEST--
Bug #66098	Check that there is no segfault from zval_addref_p
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc');
--FILE--
<?php

$img = new Imagick();
echo $img->foobar;

echo "OK";

?>
--EXPECT--
OKPKÉ	[����)208_ImagickDraw_setFontStretch_basic.phptnu�[���--TEST--
Test ImagickDraw, setFontStretch
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFontStretch($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(36);

    $fontStretchTypes = array(\Imagick::STRETCH_ULTRACONDENSED, \Imagick::STRETCH_CONDENSED, \Imagick::STRETCH_SEMICONDENSED, \Imagick::STRETCH_SEMIEXPANDED, \Imagick::STRETCH_EXPANDED, \Imagick::STRETCH_EXTRAEXPANDED, \Imagick::STRETCH_ULTRAEXPANDED, \Imagick::STRETCH_ANY);

    $offset = 0;
    foreach ($fontStretchTypes as $fontStretch) {
        $draw->setFontStretch($fontStretch);
        $draw->annotation(50, 75 + $offset, "Lorem Ipsum!");
        $offset += 50;
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFontStretch($fillColor, $strokeColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[D	a�ff295_Imagick_setSeed.phptnu�[���--TEST--
Test Imagick, setSeed
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('setSeed'));
?>
--FILE--
<?php


function setSeed() {

	Imagick::setSeed(50);

    $imagick = new \Imagick();
    $imagick->newPseudoImage(256, 256, "plasma:tomato-steelblue");

//    $imagick->writeImage(__DIR__ . '/cannyEdgeImage_output_image.png');
//    $imagick->getImageBlob();

	Imagick::setSeed(50);

    $imagick = new \Imagick();
    $imagick->newPseudoImage(256, 256, "plasma:tomato-steelblue");

    // TODO - compare images.
}

setSeed() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKÉ	[�U���(051_Imagick_distortImage_Projection.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array( 
            0.9,0.3,
            -0.2,0.7,
            20,15
        );
        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND );
        $imagick->distortImage( \Imagick::DISTORTION_AFFINEPROJECTION, $points, TRUE );
        header( "Content-Type: image/jpeg" );
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKÉ	[nS,�+031_Imagick_affineTransformImage_basic.phptnu�[���--TEST--
Test Imagick, affineTransformImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
if (PHP_OS_FAMILY == 'Windows') die('skip dither is apparently borken on Windows https://github.com/Imagick/imagick/issues/590');
?>
--XFAIL--
I don't understand what values are returned in which elements of getImageChannelStatistics
--FILE--
<?php


function checkAllStatsAreValue($channelStatistics, $value) {

    if ($channelStatistics[Imagick::CHANNEL_RED]['mean'] != $value) {
        echo "Channel red is wrong " . $channelStatistics[Imagick::CHANNEL_RED]['mean'] . " vs " . $value. "\n";
    }
    if ($channelStatistics[Imagick::CHANNEL_GREEN]['mean'] != $value) {
        echo "Channel green is wrong " . $channelStatistics[Imagick::CHANNEL_GREEN]['mean'] . " vs " . $value. "\n";
    }
    if ($channelStatistics[Imagick::CHANNEL_BLUE]['mean'] != $value) {
        echo "Channel blue is wrong " . $channelStatistics[Imagick::CHANNEL_BLUE]['mean'] . " vs " . $value. "\n";
    }

    echo "Stats checked\n";
}

function affineTransformImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 640, "xc:black");
    $draw = new \ImagickDraw();

    $angle = deg2rad(45);
    //$angle = deg2rad(3);

    $draw->setFillColor('white');
    $draw->setStrokeColor('white');
    $draw->setStrokeWidth(10.0);
    $draw->setStrokeLineCap(Imagick::LINECAP_SQUARE);
    $draw->setStrokeLineJoin(Imagick::LINEJOIN_BEVEL);

    $draw->line(
        $start_x = -50,
        $start_y = -50,
        $end_x = 690,
        $end_y = 690
    );

    $imagick->drawImage($draw);

    $draw = new \ImagickDraw();

    $affineRotate = array(
        "sx" => cos($angle), "sy" => cos($angle), 
        "rx" => sin($angle), "ry" => -sin($angle), 
        "tx" => 0, "ty" => 0,
    );

    $draw->affine($affineRotate);

    $imagick->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_BLACK);
    $imagick->affineTransformImage($draw);
    $imagick->setImagePage($imagick->getimageWidth(), $imagick->getimageheight(), 0, 0);

    $imagick->cropImage(
        $imagick->getImageWidth() - 40,
        $imagick->getImageHeight() - 40,
        20,
        20
    );

    $imagick->setImageFormat('png');
    $imagick->writeImage(__DIR__ . '/test_031.png');


    $lineCheckBlack = clone $imagick;
    $blackout = new \ImagickDraw();
    $blackout->setStrokeColor('black');
    $blackout->setFillColor('black');
    $blackout->rectangle(
        ($lineCheckBlack->getImageWidth() / 2) - 20,
        0,
        ($lineCheckBlack->getImageWidth() / 2) + 20,
        $lineCheckBlack->getImageHeight()
    );

    $lineCheckBlack->drawImage($blackout);
    // $lineCheckBlack->writeImage(__DIR__ . '/test_031_blank.png');

    $whiteout = new \ImagickDraw();
    $lineCheckWhite = clone $imagick;
    $whiteout->setStrokeColor('white');
    $whiteout->setFillColor('white');
    $whiteout->rectangle(
        ($lineCheckBlack->getImageWidth() / 2) - 4,
        0,
        0,
        $lineCheckBlack->getImageHeight()
    );
    $whiteout->rectangle(
        ($lineCheckWhite->getImageWidth() / 2) + 4,
        0,
        $lineCheckWhite->getImageWidth(),
        $lineCheckWhite->getImageHeight()
    );

    $lineCheckWhite->drawImage($whiteout);
    // $lineCheckWhite->writeImage(__DIR__ . '/test_031_white.png');

    $channelStatistics = $lineCheckWhite->getImageChannelStatistics();

    echo "Checking white\n";
    checkAllStatsAreValue($channelStatistics, Imagick::getQuantum());


    $channelStatistics = $lineCheckBlack->getImageChannelStatistics();
//    var_dump(
//        "lineCheckBlack channel stats are:",
//        $channelStatistics
//    );

    echo "Checking black\n";
    checkAllStatsAreValue($channelStatistics, 0);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
}

affineTransformImage() ;
echo "Ok";
?>
--CLEAN--
<?php
$f = __DIR__ . "/test_031.png";
if (file_exists($f)) {
    @unlink($f);
}
?>
--EXPECTF--
Checking white
Stats checked
Checking black
Stats checked
Ok
PKÉ	[��oo(081_Imagick_getImageHistogram_basic.phptnu�[���--TEST--
Test Imagick, getImageHistogram
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc');
checkFormatPresent('png');
?>
--FILE--
<?php


function getColorStatistics($histogramElements, $colorChannel) {
    $colorStatistics = array();

    foreach ($histogramElements as $histogramElement) {
        //So broken. Wow. Much surprise. Sad. Bad. Sad, bad, sad.
        //$color = $histogramElement->getColorValueQuantum($colorChannel);
        $color = $histogramElement->getColorValue($colorChannel);
        $color = intval($color * 255);
        $count = $histogramElement->getColorCount();

        if (array_key_exists($color, $colorStatistics)) {
            $colorStatistics[$color] += $count;
        }
        else {
            $colorStatistics[$color] = $count;
        }
    }

    ksort($colorStatistics);
    
    return $colorStatistics;
}
    


function getImageHistogram() {

    $backgroundColor = 'black';

    $draw = new \ImagickDraw();
    $draw->setStrokeWidth(0); //Lines have a wi

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $histogramWidth = 256;
    $histogramHeight = 100; // the height for each RGB segment

    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    //Resize the image to be small, otherwise PHP tends to run out of memory
    //This might lead to bad results for images that are pathologically 'pixelly'
    $imagick->adaptiveResizeImage(200, 200, true);
    $histogramElements = $imagick->getImageHistogram();

    $histogram = new \Imagick();
    $histogram->newpseudoimage($histogramWidth, $histogramHeight * 3, 'xc:black');
    $histogram->setImageFormat('png');

    $getMax = function ($carry, $item)  {
        if ($item > $carry) {
            return $item;
        }
        return $carry;
    };

    $colorValues = array(
        'red' => getColorStatistics($histogramElements, \Imagick::COLOR_RED),
        'lime' => getColorStatistics($histogramElements, \Imagick::COLOR_GREEN),
        'blue' => getColorStatistics($histogramElements, \Imagick::COLOR_BLUE),
    );

    $max = array_reduce($colorValues['red'] , $getMax, 0);
    $max = array_reduce($colorValues['lime'] , $getMax, $max);
    $max = array_reduce($colorValues['blue'] , $getMax, $max);

    $scale =  $histogramHeight / $max;

    $count = 0;
    foreach ($colorValues as $color => $values) {
        $draw->setstrokecolor($color);

        $offset = ($count + 1) * $histogramHeight;

        foreach ($values as $index => $value) {
            $draw->line($index, $offset, $index, $offset - ($value * $scale));
        }
        $count++;
    }

    $histogram->drawImage($draw);
    $bytes = $histogram->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

getImageHistogram();
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[JB���$069_Imagick_equalizeImage_case1.phptnu�[���--TEST--
Test Imagick, equalizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function equalizeImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->equalizeImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

equalizeImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKÉ	[��ɥ�#060_Imagick_distortImage_Polar.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        //v6.4.2-6
        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array(
            0
        );     

        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
        $imagick->distortImage(\Imagick::DISTORTION_DEPOLAR, $points, TRUE);
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKÉ	[����
Biter_500.jpgnu�[������JFIF,,���Photoshop 3.08BIMIZ%G?094042+1000>20110723720110723<094042+10008BIM%yb6㏣���|s����XICC_PROFILEHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m�����ExifMM*	z
���(1*�2ȇi�CanonCanon EOS 5D,,Adobe Photoshop Lightroom 3.5 (Macintosh)2012:07:25 23:40:21��&��.�"�'��0230�6�J�
^�f�
n�v��	�
~��������������1
��2��4��2011:07:23 09:40:422011:07:23 09:40:421�����AE�Q,930602934FEF24-70mm f/2.8L USM��/http://ns.adobe.com/xap/1.0/<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
         <photoshop:DateCreated>2011-07-23T09:40:42+10:00</photoshop:DateCreated>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:aux="http://ns.adobe.com/exif/1.0/aux/">
         <aux:SerialNumber>930602934</aux:SerialNumber>
         <aux:Lens>EF24-70mm f/2.8L USM</aux:Lens>
         <aux:LensID>230</aux:LensID>
         <aux:Firmware>1.1.1</aux:Firmware>
         <aux:ImageNumber>12</aux:ImageNumber>
         <aux:FlashCompensation>0/1</aux:FlashCompensation>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
��C	
	
	
	

��C����"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?ԟS�S��R���k#��S?�H�6δ�v��`�C�]�My�������t�&���
I;��G��9�؊n9�SEԁ��`�x&�$hI/�׭R��#�V��ޫ�۳S&m;Qn+�չ&�;�-��?�G��<����pW⑔z�uќ�O�U�\��;�Y��j�O��k�<^��k�<F�;W�\���T�T�/�j�0"�^����J��H���T���GDV���*�EB���N����&N�Tь㊎5���3Y���ّ��.��|p:ӌ"N�i�!���$��Pm�n��'�@�&O�S���,�pXT�1�z�li\�G�P�ԡ8����dM<�m� �4��CDd})�8�H�3��=��l��1I�x���l��8�!Ni��&��5b2��y��3�Mc�i�
�\f��h�T�]�zұ�7<�F�H.#�)��ӛ���Ȧ&�DFz�Tl�`U��r8I�r��6f���4ɪ!�#�iJc�<�y�H�3V+��1J(�Q����LU<�c�r���P�K(�N4�l* ��ր��m�QɎ��W�TBO�S�&�j橓��;�㊉q�Ӂ��Lw�h�Oݢ��z��K������.�|�?Z�-�y9��;8Gk�'&�Ǣ���zۗ��?j��y�?�l$,5�xfŲ��ln��^�ۃ�u�ReEr�`Ev:u�@�l�E��"��,0��#E��f�2����?��>j���ʞ��kPpՄ���&��z�O.C��gup~%���z�e'��~.L��^i�D;�5�~.�ϯ�y���ö}k�������H���o�qK�J�=q�f�C�5=G526�*r8����J�=���d�d�7W&��*x�7<T��<�6]�iZ�S�VI	"I��ޡ���A�����d�ަF��ԙGN��@����64�����L�`��v�4�'|q�x�M+�F���~��ԇ�4��M �#'�RgiǽFNJ��K�3z����!9��[�!ɋ���~���sH[B��x9��Swq�&z�a��/A֚hS�W+Q�g�&�ݩs�v�w4'q4#t��g�HO�L+��$�n4�`T�rx�0#&�;�ƞ�ZcS���TD��T�-�L��:撔�6�.�t����G��9�!�"�&�J���|n~�-H�3��N��WC��j�	k6�R,+dT��^�M�Jz�osT�,T�N+�9��U�RӼ(?���A��aF2�V����+^��p3_�4~8��O��Hڵ�hZHL*-2�8�t�=�N*K5�
�x�����V^�g�h���������o��W���-����4F5�_-s��?)�u�pqӵs�ݾ�X��<�����SW����G�15�T�^-�
��>(��8�ռ]߯2�L_;dW��=�/C�q��P��I$cy��¸�Z1�����M8/)Uy�l�Dtc֥��Jx��6͢�'S��i?Jr�R]��֤L�ud��J���,}:��z�jh�֡�"d��OTH٧�� ܑzӺT{����P��#`SqJ[�i�E�+��=)�҂�Rj���bb���7I|�P�5QR��S�ck���j&�ү�֑ͫ[.�^+Y%��}k�φ_�KO��������\Nu���?vH�Gֽ\�*��s{+i��s,ކY��o�c����[�6Z���'d>Ӝ�����k���O��ſ�o��3�t֌��<�c� s����߱ޝ{m�x��ۢ�L�� 0!��|v��Z�A����Ӻ��$�T�Q~���h�c@�ơ�],4Yno$�D��5�x���<�G���G��OrA�i+g��v��ӿf]_�7��xQɷeDG$wS��_{Cm�_�	�ϩ��=����	e������.�i5>���'1�ag	R�p��G�pp:�2I�ӭS�	��;�sima�_DЫ�H�g��5��?d�_�?�O
��_�V���:�Ϯ85��w��e~k�i��$�cܣ𴯯Sȳ�֌|ܚ����+�|C�)�{mZ����l���N@�#��}�{�d���Q$r�L�O2�+NA��Ɣ��ή�����g�\S��/������z��pM}�C���7�[o�$�x$u��|��|�#�������WVm\��39QwI�^�)ϥ���!�ƞ=*7<�*F����Ԃ'&�c�O~i�*�hk9�I���~i���ֆR��4�n8��3NW=
��4�>�
��$�ղjdR,)��H��9���hN��g"�n6�S�s�U�<T�޵�������E7�Ҋ�KO����,��*����iXŜW�ㆎ�5�i܌�6��1]6��2(�o��8��������Һ[H�Q�q�#�M��#�WV>)�ŕ8�#H��k��"�Nk����q\��Ռ��M�}�(�<W�x�8bk�|Kޯ;�Rn
\�N�,��Ǎ��^g☹5�,^Z�����x����t����B/s�����?�[=��\R���@�4�k�sڜ4��Nj
���`Ӏ�ɦ���"{�l�r.jU�1�Z�)6KC�i��MQ�R�r^���qN�q֐�HV�W��L�N֕�qrH���<#{�m�L��A��j瀾j?uAo��d=��t������xY!<����`��3��攰�Ǚsv<�߳N������2z�+���;�f������l�!�C}��n��\W���|zf�g�hH-.
o�>W��ۿ��u�����Euj��V�[�)�;b��.ʖ�jT�,�O�3�q��'2N�-e���_���Ӿ���Dar���z���V�x�Z���K�.M߆]sg�l��������zv��CJ���ݦ�*X�Ͳ������z���^#�k��
�ᢝ�l��anH�C(<)#8�ON����џ����Ds
��{��ϡ����i�3�5;�|�f%�<��G3��;�;�/��i3
'O�=2y��I�F���� ����	�a�τr�cǺ���b<vQ*��_U%[�h�i���7��hk�/��_��c���ƶz�E��0�z�`8$t'�T��=��MT��_����9����g�h�
�]>�I�p�
M*�����{5p1�o�|B��^�yMn&vh�g�GֹQ�T��F]>�kw	xd�wGr�r�8������\_�?�~'�C�~3��9�%.|Ŗ9�h\��d�A��zjp�Z;~�\��RP���_�_ƈ�𞟫I0vŽH�?�> ��D�Ωkyr#B�Ĝ�t�|ۨ�D>&�3�d�@7��a��R]�luP������&y�!�Z鬯g�;(ć	<�g��l��+�NU*(��$��:0�ӏ5�v=�J��i��'S���,6�B�0=�����t`��Lo�~Ե��i"���&�8�l�Ȟk�o���}�x�o2X�^�l!�,Xw9q�]w�Ϗ:������Md��j� P	��(�N98�c�_U�W�愧N�X�}��J|3վ0�xh��JZox�m���@k���[�C��~6k6_�I���"�t���>�_B|����^��ݙ����I�p��C�ߊ6x�=��3K4�b��$W���(���Ilv`�j�:5h�K��ڿ��_�����q\0A����e�`W�;z����C�
'�'����_��|K��d��3���O'��`���}ޣf��ĶʷsJ����t�3_��h�u�+A�+me�z�>�'�S�x��&�~�o�c䖓֢w�Z�X^4Gt`��@a��P��i�}��ri�=jC�La��M0�ț�g�RI�Za?�.���4��✼P�V���51֞�j[�X�6⦋��A�XF�⥖���*��U㓏Jy�Ҳ��tD�M_͢���]'�֕�c����F�W��o��җWO�&1��t�H��I��h�td����>Q��4q�
�G�3T�����W��G�zT�\L�œ�5�����^���9��U�����g�5�lל��q��+�k�ٯ:�Z���Qhz44g�����*\3�ק��~f���~+_���ģ�0���\s-0t�.��i�3^c���.1J�֜?�CE�`Q�S��(\�v1֤��"�M;n(�p;R4��*���zT���E��&N� ���W�=_��ؗ#<�c'ҁ�h'����=��.�-
?6E��?�d�5����3��42Z\I�H6��_��>k��7��|#�$p'G,������g�j˧�Z��vڭ���W�q�-�(���g��Y���I=:����g���~�K�f��r�Gn��_�o���� �[�M���>�i�>!٦�%���ݼgc)�ƾ|��ӻ�Ư.����m�%�K�T�#ھ��g��a�E�utݜd�4�S�3%,K���yG�U�{C���
���B8�_5q��}
p_uX4�oX@�Zn�n�����t�x��6�~�|[�����RF��?w�UpN���|8��J��
�
#�^�c�s�j_���&&�L�q��ҿi�B��b��<	Ԕ'�-�x�᮫�}?|��2X�1���٨4{�L�u�A��W��5���F�1�����id��[����n^Há�?Q�&EE��,��dϤ^7�l�tO4�:�~qӑ�x��1e��?��uK�
�K����+3�]�L��,p�[�l��+(C���"�bc9�����k��t�ų�Z�q��i�8.
���=7�*>���O�}S�>��pi1�F:n�;F'��t�\��J�� ���/�V�u����?h�/���E�l���p��'x5�4��y�鯾J�k]i�e���J�)��ʐ7�My᪪UV��滯O��3
�����֞_3�%���e���Z�W^Z�j��Ю�y��\��ۧ����w^7ZU���e}u���K�������6��I#�m�-R��G���~I���F�>��I5o���!�9h�8$W��Z���?‹�;5��X�`𤄬������
�G>�k�Qto*q�V�K�0��U�~��	�
~"��K/����n�o%��2��&H�1��Gs����
���f��[�o%�b��V?�HI��A+�Oa^y�cW��1�so�p�G(=+�'����MO�?��e���_𼻧����e�]�C��²z�\&%NP�-]7�U����]jN��J��OK7�S��Ў�Y+��+��N�fO/�;w�&��iji#�V���s_�R2��#�\.�8 �H<����o��</�h.m���M5�q��;29C��q]�ǎ��>�P���A]�AM΄q�,K�h5�9�F�L<W��GӪ����:��))�w�����G�)��N�4���$�$�#g%Ӹ��ZBG�w	<wqs}�J�,�r"RG�p7_L:ב��L�[k= �tm�J�]�"[��V��ѩ�Z�<%�߲�Yj1۫�4�-4'�yP���"6��|�X��'�����u�	�Iu�)��ރo�[\K4�|߹����m�>�_U�_ ���}J��R��u4
4hrR>�ξ3��x?^��o���h�ko0�0�&y�g��j���/�����[�6�p��$9��ÔL�	Ϡ��Y�a/d�d�~�Ǚ�rW����������[�^'�	nD��e��q�@���7�K���(�zu���~4�ſ�Z<!����^F%ݏ|W�~�_W������&�#� ���{u��x�/�:p�a�{v�#�.̦�*��ݭ~�������<��ǯ�9�з��fx9������!��b�("�7q�ߚrri�Ӕc�RT�����P���R�鞵,��%V�Z~�
D���jmr�:�i�������o��;�Ұ�����k	�b�E?:m(�ֺ�)�Z�4��e��I�p4��a�ɒ+���c�hR�2q]V�'�R4���2c��'�|�{�ĥyʚ��7�tCr����)�c#�S���7Ҽ��K��J�&Cb���	�W]�F��,L��y����GŊ2��1�X�6+�Ğ�᯾Y�L#���'�j4|���*�;S���875%%a�ҝQ�"��恊N:R�n��҂��N*E9�Q��S�p{P]�#<ԣ��c�jT�9�{��wt��i��Ω�K\��Be$cz���-*��t�Ep���}��K����a��9W���xӉ
�%�Iߥ���y��S���=��-�Gy��G���LQL��!���~(���CIb��k&!�
=��ޙ�����5�Y�Q_~���I����MeP�������-��ښ�T��mn�h�ʴUH�������MN��=_�_FxD;�_lW�Y�d�|]�YW�z4"R<�x�W��̇��_�������ږ�=�N�.b�=�y�zƭ��q[Ϫx~�[���ƍ(�#�Sʟc�_�Q�����qq��og�|'8Wp�f��iu�s�1��^�;��K	�3�yw*��2�=ԃL�w�a�����=#Q̒�҇���=M�l��Rs��Dlz9ϗ|L�=㈭i�S�HyTG*.:����i�w����t�OZМc,k5�Ժ��qҪr�a�8ƛ_'��Kg;��V���'�!mO�7�.��r�;Iks�{2�c�s(��S�)�q���Nm �zhuk8��!����'��k��:�A����jd����2H�v�mVP~�y��[�~*��}�X��s�˿.ݙfm�1�.���'����x�
m�K�t��qxkM(�۹�h��<��Zj0L,ݶܪE'����Xf zn8�'�k���[Z[�-����l�
G�����<�!�@���o?j-2�����Q����xn�Ԁ���#.*���ex��v��[X�߅z�yjn`�����
�񓜁�_z����8�E��u���)'$�����x�D7��h^=�j��\�1���
�<��"��_|Z�o.�}r��C{mJb�t*�uV8�x�[�Y�V�Yr�
��˺2�4m���qY�4���E7"���J<�r�|6UV�<��kЯI��
��KX��]���:�1MO�Ah��5���O�~��_�X�s���Gs�3`���DRv�4m�C#���gԵKK��=漵���7�N�(�g�q�f�]<#|��nE�!b[k�5.o-a"3a�<H6<m���3*���>#�[�t�";-B�Y.�UQ$?+&�<ݒ����c��r:1���eh�t���OO=��e\�Tj+������r���"�u�"����6��VP�z96m%z�z�zkIS��*�/�N�o6�e�i�>@���h�R@1ʬ8'�Y���H���K�;ۺ��\Ca#�֤�ŰV�#��8��x7�Qh�o����Wח^�o5{�L��CD�BW���$�{�\5iR�Z:?r_$�O���v��*���گ���J?���Zz��6�As
w���v��`6���-ߋ�C�cMg��e�xce*�y2D~��~�
a��2�a�x���T��L��m �ȿeº��0?��S�:��������H;�f�n�.e�aP99��@�99Nj[	��J5��3�W�n�����,D�;$�����_�W+�S�Sj�Wם&��M�!�=�Q���W	�J�Q�����J���Pܾ[
+g"�!Pq�y&�>-��+�=c`"M?M�Y�BG�۽�"���!FO`kwþ��Ӭ'��R�JD�5�*R'���n��� /'�=��-���a�E]�}��_Mq�IG�M���C��:��4Khf�bhn&O$�6���'�p�{��G��%���Zϭ�imo�ڼ���&����~����K'���ϊf��mˍTا���yq[�1b^K��増b2��C�jW�$�Ʃ�ߍU���-���iV*\�*-�m�
���r8L��6�XUw�ݼ�_Vw���V)+KK�_��������qֶ|o�C�x�U��IR/%H�V
"�s�1�\VC�G'��X:s�Gc�zr��R]U�O�`q�+O4��T3D�����4�s�\v�;=GzP1J8�P99�p����i���*�J��"@��$�s�8�j�c�ǭ�?�QR_)�Z�u��;R�My�~&f��li���FM~�~+}OT�u%$s]^��)�5�Z�͎y��÷e��}�,���I\WY�N89�ó+�]���A�c�ڍ�9�����+�KsH��ŒV��)�����qX���[�g3���W�f���+��^��D���*\�*��D���/^a�ϼ޵�^0�wҼ�ū����b���s=B*mUv�Nj�o�yrG��(l
r��Z����iĪ�<ԁ���OWȩ��)n(^O�Ig�Kx��R
�t/��_��c�\��e2�IX�u�O�fP��5�c�ۋ��½G�TV�R���m��;��3�S�%7vsV�rG�ly^�����W]��L�O�]u��6�
�x�]��95�b8���6>3�Y��,��S�y�º��rnlmj�3��-��E-��Q��(���l�G�����m���ۻ���eA�=+�.>��fu�
S��ti=>e�q���^�k���Mn�h3�
m:����k��x�ľ9��_��W�v#�$�B{�ѿ���]C��R6�0-�*q_x��&�����*�ޛX{�_���X�&+��:OE����v��3���*��^�?�&w����͸���L�>x�|��{�c��5���o����b���升e��DZ���ľ*�[Y��웲Z+��)�t��>�$Y���ڝ��
�D�K��}�${�磃�"��Ŵ��޺��璟�ɋj�n�_�?ڋ_��ء����\�w��d�Á�ɮ�J��y�i�����'�92�ֻ�'$�pS�_1��|:�f캧�bI6ɷm�@�1䊗V��f�y��e�ۛ�BtTkd�[��'�\�+h΍.g��SZ]6޿��h�D:r�J�|��V_�s��?���L����͞�n�nt��7:m�'����B{��|�Q�|�yi���'���l�C�&�@�l@�Ƹ2Dy��6;��^�9|@�>)o��ͽ���QӶ-�eϖPczq�7'��#�z�{k6�o�t/4(�.�10�,6�/qЫ`I�p��R���}��?��+�n�k����(���a�xs�"�M��j�G�^v��Ot>j��<�L���5�o��o�4�n,b�����R[�0<�v�nDa�L$І�>��ĨF�&������е+��#L����BCZ����0��b�W���F�c�܍nڊ@x����8ea�h6kYSP���kf�^W��9�Wm��-���܎\����徵&�����G��<��H�p�Wi��wS]]y���#��r̜��I��V�s��Ɵ�!�5��׷^+�v�Oi4�V�����&+�c�K�Hr0+�t�SO����xU�1���f�eou����p:�0�Z���ʸz��T���W����%���ݯ{"�(ԃ�e��g�z\��xV�g���i���)2$D������#O���4{�zc����Q��%���q,k�2'��@e!X��-R�:8�J��g!�F����+���4�v/(���ݼ���'�^���Hq����*��Qx�+�7��Ev�^W�i��0��ug�7�w�w���Q��7ÿ��oD��>U�1����
�!�%���[�o���7��o%��ƭ����n��̼G�+RPEy幷񯅗L��g�iq��NA��"c�hV_\
�#�	�#�j�_o�}%��'��6u �}ϥ|���ʨ�M^���u�I��٥���=�1/O�+5�U���7��i��7�Lֶ��ki�6��:e��€���O5�go�x��o�1�hM����'1F�Z1'��c�?��� u-O�u�l �67r�#
��x�[��}_���]�ɢ�$�msPH&-����H�hR[���FQ��9�$�k�j�����d�U\y^�y���F����+��z�5)5
6(�{�*��C�+�����'�+��5���u��\A�B'ڲ^�<a�JҜ�ܹ�<p�*��i4
'�e�H��y���`� )��1�G'$�@�S��:��<;k�_E
ݦ�����g� ��H���P��X��c��q�Vm���d��k����qNQ��;�gO��Ľ"�Y�Y��M>$cmm�}痑3��2�O W�__[ּ]�j:��
��!Y��e��>��d)�|ƾ?��C�w�!I�9
�j��Tu���A�{����O^>
�t�C,zu���wM��L���Ӟ��z
�Stp����W�˚�\U��w��?w��\G���fer�ŗ?{9��_ư�qַ�yu-߉f�]�7��)x�d������6�q_��^j��n�s�|<���Z�W�ZM��g9�c=���F��Q�sGSҤ13K��~�;��T皗�Q��!�a�x枩�iv�p֓c��	K�
pC�5&����,wT���F��̿J�ti�c�8'���h�g�BG�7;�I��u�i�����r����n4�L�O���D?(�Ï��w��T{�!����G
� U�2)4h�ӮA�m]p+nu�9�}]~SYL���E�J�/�۫�<H�{5�~*�*��3ӡ��&7�ח��r[�1B7漿ű���bO��nyְ�K�z����{Z�犢�rkʓ�=�-�R�����j���� ��S���&s�7ic-�b%5�x7�\���ob�8_�&*N�^��N;d>��_
�<MS	M�*��Є�d�M�e�����crqɭТ����ҙ'�T��˶P�}{V&���>L��F�+�ϯ��ڪ��|�k�ӕ����Xt�a��U=C��Sb����\���͜�U���ᱚ飕ӡ?i-Y�����͡��7��$]g�4��j�Ż���ל�wS{ق =q_L~�	���s�U�e��#�8�6Mny8Z3�+(GS�~xnO	�q���EO�G�u�ti�K6��i��j����G�E{�f���J�k����cmu4�Ol����',��ٜ��.\�mz��JP�R�5+X��?c�_��X_�����3\/��,�"@m4�fn���'���<��F����q
ی�4X>����F��O�T	�����J�Y}�{�G��
.�œ�x��I����x�T�$$��M�Z���~�־>���R��B]��b�Iy)�����;�����]�uM.�]��wY";�T���^����6��
=���0��?y���рǾk3���$�t����z<�4�?�FXm�����}���R�"��o��V��柼��J�e�cZ��X�k|�+s�(��LN8<w���>��>��h��cL�m-$ԣ.�F�@�9v*��Z�/�����J��`���N��!�{w]�+tʰ�3�^=�Y�,����S�[�t`�����PWΞ���m)P�N�[8s_�ةe�T(AJnI%����I}����\��p���Ut���9%vҒ��c�4�$��J�{G���W������T�Sb)��	m/,$*_Y��.ee������=Y����k~y�V�����OV�\��;��Eq����w���z
��>Z蓏xB��Q�l�/�%�=��.mՠ�����x�"��w��KS��5��>����q\À��V8c�\���}�[��U��颺����{X�|֕-18T��n���v�kd������J�Ѽyi}��j�$�������6e�!��d�UH$��j��~-i�����m����Qml��G�laVH��@)�~S�Ei�@��s�Ƒ�j�6�cqu��La��� 3�P2��*�
e�z�'�
"�<Mc�Z_kJ���H�)�,��+n#9�^���
J���N�M������m�&������~_
x��
�[}R�m睦��Q��">%����rG,�t;����Wƺn�]�:9#n��}`����]��zƉ4�j�e����`�up�=#��6�v�_��*��<%��5���\5��[�b��xTa�8⹳?�j�(r�����o�M��uf����}�?������䰋��M�c���e��ǡ8�ғYT�>��Zh��+`e9�{��v�6���1�n�}��FNٍ��=�
P[����堒��0U��p��g8aaCB񶷽�_��켒���֦�G*2��f{˭#�"y
��YTM�{r����1����!�j�\j��{�KY!U��v
NA����4x����ɪxJ�{m2�Jۣ�;�g�>��X���.t�t�
����z�̀���+�s�_	�X)&�M�.�ۤ�����'��n��
Ƥ}�w�tko�v����kk�7�V[�[��-�G
�H��b6��+��lj��'�}H9�[(�X�@	au�H٣?�ز*��B{S<%��|9�n��]2K��A�c!�|�Ȯj�Z��+m����H�q�.��K�=� =�Oz�si��~�ZM>�W���#��������O�_�=S�Z���O	-����/��D�W>Q��-��;�N��&�~Gi��BݼA���'y+
����a�~�nؠg.�$5`��.��D��4U��mm����m��+�C�FY؟rk��l-$�VW�l�s*�rߺ����c!�X�k��G	V�oQE6މ=�^w���h�ھXm�_�W�|2����%�[��U�ܱ��wm[�aC
^WTc�
�m��
X'��;U��U�{(.�.T���1k�U#h\N+��\h�F5����CC��j���R�8���)��/��4/cyo�s $����o��X�%Sh�ܚ�)�=�'*��Z�%��ޥ.Y�G�[�<�Ś��N��ݘL�u�֎abі��IS�qY�3���\�ٮ$%�y^R}K1c��"��_�Ւ�����(ӊ��W!�pԁ}iLx�X�R&_N)6s�J�I��Rƈ��n:b�+�z@��ACq�*�J~�sO�f��PG֞��:R�֡�D'�GO�E;v�tR.�S��5�hSc�i��$�p>��w���w
�6�!�\�;&���޹Oxi�A�Ƙ�����|8����ABg�r~��^=��`�U"�k��b��M�.M�ґ�J��Y����&\�d��
c#��<I��Ҽ��Q��+�Iޯ<�LY1\��Qg���3����,�*s�^��(��.�l|6+��#��Kc�5��y��p\r{V�dn%'�5��X��~��L);3��f4𱼙�}�s�0k:M{͔`��ҳ<Eq#�R,�v�`�4�?Z�����|i�3�ځ�KU{��I�^��{�l�y-����}��H�>��o��k�`ϵ~QĘz��s��y�63����uP�:7d��g��\��t���`���f�bo[Xi�30���k�^��@N��_����U���!���KK����������Vߙ\dt���W|��$<`�*{����k��ci#�E�x�5-9�d3K�lb��	;ѩZ��+ˡ���J��o�j�.x��(R�ȯ�~����-��
|u�+K���n�����S�v1��<Q�:��O�J�ݡ�7S��)Jr�^��ɩ�l�C�E�G��n
^)nv�����8�{��?�g�n�@g ����߆��MJ�k� [[��~eS_u�W�y�6�*S^������}na�����j��9�?�/�Y�����h��o����hZO�w��Z76�1"���;o�#�Z��v�փ2�][��{�ڴ��_��x]��N��Hs��}i���=����	Y�o5�τ�$��Z��e��kGp�~#ќ9ppӠ<�Я0����{�;]����ܷ���D�����va�]���]c²x���jB���w����>�W�m|i�P�ߋ�/4�����B�N����{��ps�W��*�S�e����s��Tx�����H����i2��ީh�nO�{����
�?ڟ��~��x:��tk�O�&7i�[F��e�š/��'�����]�/�����%�cc
HB�M�-!nx� ���
���Jt�4۔��v�[G{�]j�(8����W�cf����
��~2�W�W�+
)E�r��Zח�ɯ-�?F�<NO���*1�Ԗ��HK��d���F�z&|�x7T�|%����&���R�J�����4����CH�B�I�#>���ċ�S���2C\���s���>�b���KҼEg�ǮjZ��ވ�4zU���ౘ4���ƻ�s��l��>?��\����H���%x�$`v��q+�.�Fp��䙕\F1c=��R�����G��}��%�hp�\���iկ*�߻�2�d��i8���s�G�	S�ɺ�t2Œ��)�c�z��!���*���;���i6�]����ך|���>6�3D�+2�z�Ҿ|��|�x{{�μ6�#��;#��]�񝴫�5�6|����<�u��L�_��x�W$���Nݴg�5��k����ďj����6�!��@�jEͨ�NH�0�5���ݧĭx�ᨳ�����l����4��Ywp[����˯j!�_j�]�p����a�%ݧ=Wo'�jұ��,��V��%d��m��+�~a�
�ײ���/J��ު�gӕ�ռ����g����I�WZk��<gÖrIgp|)�b{I�lF��aʂs���Zc�w �	�nW���0�=+��{a/�a��/�kw�兵+y!b��K�f�?��z�]#U���������ȹ�����J�6gK'��R|��-�-[K���V��Ļ�Y�8x�O��-m���S����B�;_?P�"�vx�y`I���Ͻtsj�ͦ���aqj�M����៼cߡ�!Ѵ�˔���Գ�.U�0|����=k|Ng���R�ٻ|K�N�_[Y��hS�Pni5o�_��^��k�OR�urdc�&U���5͵��̐�h�c"����8�'ՈU�`3Y��K��p�!�������qϽu^*�=?Rm/C�h�h�v�A�;��k��M\V&���Z�$��m�[/=�s��-:p�*�~�V�9�{�-���c�G܈3������ȼ�sX����(���H�0��@xL�x�սGA��.p����$�vG'�_S�I�5[K��Ig��-�K���>�1�[�qӥg��S��N�_+߾�G���z�L=9+�M_���mi��xv����ig$�g�����n�Rpz�)�8��gay�5-R�	��_������9q�vw��0�<t���+���mBa�D"�� �5�o��4?�60�o��J�6�X��g�18�c���,�M�YOD���im��y�GFy�aF+T���_�b�Lt�@^i�riv���0͸�m�v:c�1�R�$FɁ�n�u�YI=�<��7+���4� әsC�!�E'<w�'�H'x4��I�U=�CI���c��D��E0��3E"�x���>_ӭu:��W�5��xW�z�A�xsh\��?KR���l��I#o�^�2+�Ѵ����f�V-�zqR8��H�Ž�V~��c
�4�=�8��Eo���8���qC��JL�&U�X�uH�5�uZ���8�&t��<IZ�����|D��}k�|Sw�j�#�<gP�� �ޥ�|�⽇�	��X�q_?|L�����2�9�;华f�r\�rp9�uY��+��Vf�f��g�WM���ޕ��N�#�b��%��3{��o	)߭XX�@��)��J	V{�&��F�Oq�DZ5�q�F+�͝*iS���[US�KC�����
���	��W�|�{w�]i!�q`:g�_�V�e�D�|� r����iQ��/%�b+Iԧ�a��w^3֔��<�נ|EH<!��V
�{נ|1�]�|8>Իd�q�|��R��Ρ-�nJv����]療��"~���,�XʿG���YmCV�R��M��/���=G|�G�Ժ
��t�{��R�sAF�H�~��s��K��7�q�ߵ^����g �Wغ-��yd.C_8~ķ�i�+�n���]��[��1�_�>#�=�n�C}�~���,_}O	��uY �[)%�3Ҿ~�>˥�ky���;\˽�_z�O��Y���[\]=k���7�Z�y�sє���Ù
���־%���f>�Y�=<�d�_V�L��V���,L߹�*�[x��o�b��V�bN�@���{W	q�_Gd[����1%~��|;�W�%��n�u�Ɵ}&��DG���ؠ�RK�R�g��⟴����d<+�um.�+��[�aPl�W��=	�����~<�-?����x�����gw�H���*x�*�����++_�[�rޑ���h�3ݢ|�5���6�G�\��Q�`;��������R�R<����2r�zRi����xGNִ������Ή�����G��_C�pk����d�:�𶫢�ji��qM(�;Bp@I	��ܧ;�q�Ӻ�����5Iu�F.��q{k2���)/��=������x���mN�U�B��hczRʽ1�2{�aK���S��g��/�]�dk��ʜ�ޱ{��.�#�S5���x��Rռ�E$|(F?�!`��;��t/�-������Hs�����)#�8U���e�7�ou��ĺ�ë�;��g��d��&b�pGoj�|y�L<ks����B1݈��H/Y�~_��|�7�����W�c2�nkͦ�맮����a/yk�p;���?�ǩ\�Ip��ga�i��L��p����`����Mmqq"��c,�& �@%}�H>��x2Tw��1%ǘ�K}e�nS�˶`3Z�N�e�	/�cl������'��\�;�& ��o�J�����t7���/�_c�m�B���Lk�'�-��$j�ԫ��=s��4�i�v��}�M��eC"�N7�m4e�A�.��P�$���Q�@9)��I�W��%�QҶ�"�$�F������LW�akO-���}����y�!C�F��gc�rn��x�����s�����kKwim��4��fK�O�:md�3��Z؃’��Wݪ�Am�U�\�-�ökӠ�֙?��O��{p��i@��q����W�f���ٵʕ�Gm<*��9-O1����.ê�zE��E���p��h�8�9�s~)�}{��o�bQ{b��G+�@�nx����w��m2���]��$�'),3���z7�|?}���|O��}zh���,�'�\�j���'�kȧ�U��]����t�8%��E�?�>}�-e�5D���[��ϘGFFU}Ny��[�a���&�gԦh�Ye�RHfv' sԊ�u]6#��s<o�X`M�Ƨ���GSY�\��"_Z��0$�3�}}���:�XrI������2���k����I.���6. ����#\	?�$
��M���H"�����m�1��׫Hǩ��Ӓ
@]ã$SO���x���ISц:�������	4���ry˄�9�t8�zY>e)*�Zj��&8�+��,�����l�'�-�����R����?ކ�{��.�A��s^����~
Ѵ���I���)�*{�f��U�.��b��ie�ü�S��U=�㞄r8�ѩ����n<�[���f�q�:|��g™Z�ޫ�`���9�����F8���>��{1�F�֞�N)B��-����WT�Sd�sWd�{�va��M'SH�|�G��ޓh�q��������3��=�5(�i-������������,���c����Nt�S�EI
�^���R2�t_/���3LFFsN�1Z)Ȭ٬Qr��)Vݔ@b���kY��Z|�)���XE⣕iH���i�j���5�v>SX���5���q� �9�J��ʖ��Mz�����n�t�	���.
-XH�$�Qּ�f!RD�q�
�Oę���'9�x���95)半W�k,���k���8'�y?�ύ�6vR-��������UeWc��f�12�g�[�t��BQT|�k�B��R�9�(�ś��M������5�?���;�j�O�) �##�k��K��J�ǫ�P�.J1՟}~�Z��p�pG�����g�%:4�D,�pvZ����ҭ!w���w�ׄmgӂ���q_��K�J�?��oS�P�}�D�~����|�39��T
ʃ�-}{�_xl`�v���K�}��@~���b��ö�:6�Q�1Ҽ|���*�����<2�r�������n��i�/�ȯ�~-x*�^�k���9o�~�|O�k�
i���0������Qo�/M�D
U{
���ZXis����z9�[[5�(7���?9.c�-ۤ�yI5���.�<v�1�70qX����kW-)�z֯¿]�[]�F��D{�rk��b�9Q�7/���>a�>����g}_�v+;Bʬ��^����;�z"(�'$�͟�o�����WaAQ�����/<E�Ks�~��`(n�����fe�9��k��?�s�L�F8HƇN�	������ˤ[m#nW1��	���
8�P0�M��TZ�
Ŭ��:��(����?
�"'��ˆ]R�u�$��?:��Ȳh�yu*J7I-�S­�x��^�׺���4ґ�-�k�o�!!OҫO�E�)����ie�@3!?�y�}Zg��˜��]G�~�j��m���\)����}A&��-z���J���5hR���Ok~3�I|5�^[*c]�}1�Y���෺��.�ewp�Ǻ�N�J���P��{�MԤ�O��ŭ��su/�ha~s��KQ�5)��_��[;	e���B��P;���JXy�L3n��o�<�i��bςi)�ŚTڒ��c�����`3�:�[~*�<5�[+6�u��.�72������p�0^��s1��5(�MS�z��r���%�
�P��\����厥t��];nV1cI8��ʠbMoQ�W��_m���Q�;~�5��i�z��{q,>�~��r��[��i�B�P)�o����ڎ�s'��m|7i6ո�dݹ�ł['�q���w�|m�{�
F��i��.������>��B4�ntvO�Wz���s$�m�rA?�տ�z湪F�LM���|������B�ih߫��Om�i��u�j�xr̬]�H��"�,�yڼ��[��,<4��[�D׃�ӡ�B^�ȱ�-���1��%�P�m�|xSM�m[ˊ`(�bv�O�`2j]t=mS�d�z��e�Gb��ONGz��9ӌ�~|ZZ�]�z�����ھ���yz�&�S٢��g��_2,x�ޑ�N;�(`��J����^G�p��$�,�[i#%���gA��?�,�Z��+ķ�J�Z�|݋�E�m��x?��n���)�8��c�$}w�^+�:������ݾ������7X��~�=�{�U��/��0C�Y]y['��x.J9
�y|�2MR�kvzP6V��3~��M����?J��
�ֺ}ͻ�_++�	�zb��ៈ4��l��]-���4
b��>�9��w,�*�|��#��"�^����O���'�ѼL��/�|Gwi�쩇;z�8ʮ;���?��.���������L�dew=|����?1���F֖��~���.�V�yv�[��r	?P+�w�4��& ���,�_64����h������T��w�]^�9�aci/���K#�T�K.�a�]ޘn�HQB`��\�>��F1�k�o;y�bi�.?�p�=s^����&�v��3���m��A�q�]o|:��)3��,M����y_�&�y,,�G�}F3Ì]
9bi�'ut�gxW���=��lgkcg$��������X1n����G�'�	����B�\D-�!XZ8;�~�@�w��C�
K��!�Y�v�&��sPwB���x?/������׬��M��|Q%��$�l� ���@��?8e=�>��_�dIc`�1W{�߱��oBymW����x����o	i1\(�q�*�V^��l�NE`�z��C2���O��˷��bs���yv29����\����_ԩ��i^��R����⼃�Hn2y�Q�=�q��ư SNi��0�!�D�'���*f_�S�����`zS�i��

<u�j�Lc�����EX�f��9��u�t�z*3��ۥ~���Q���#��g	�\M(��\�Ҏy�i�
���V��8"�m8�01Z6�D�D#���N
iBW��<�S"�bގ
a��,3�@�诠�5���H���^@�o<�5i�+��mO<���/[�|�eh<f����D�Ri|�N9�h��?h��YiR��q���^-?����1.���|�"^֥��G���*��u���PVa,�%�3�כ��>%�y����Q^�g�=��J���b�{�(4�F� 6�Ⳮ�Q�B�jVW���g��Gsɾ��3��@眒E}��.|)[Y�"*�¯��:��\��8�k鏅��t����q��_��gF�7M�3���Yl^'=Z��>�����6�21]��4Q���\g����X�?/LWC6��ٓ(���w��l�9��nmY�Xl#q���}Bk�C�����{��,–�^w������]M��
班~s�g5q��J�Ej��`�)]�v�9�^�f��o]�⾃��M圏Ƽ����ܤX9S\y6oW�ѡKnclM�FqK��U�&?�kw��5����k����y8��,^�;�de�G�|E��hX�q_�=,l��W�!��y�z�k���g�UŞ��<�y�t���he�2+<ڼ�|T[]I�Pv�p+_^���t�ʺ4H8Ul�^�Y�֖aM�f��w���2|$.n����� =�b>��h|/��� ү�Q��\����|N��Y@z�|Y�ZoL�b����U�#��(�˝��s�n�m+/-F����*���~��ݻa��Rk����9����
�Y؅�C��8�X�{��� f�e	�*�U��o4׍oC
�e�21���x֯^<��V8eJ�9]��k��ۿ��2����ҷ��i�\i��^��]����3}�P�c|>��V�����l��w��G�\��>}��`�O��s�Q�QZʭL"�|ߧ��N8��5kk�$Z�P�� X�x[=�>��i���t���r���S��yQ/����!GA��'Ң�t�+�zA��I��0���IS��9�9?J��,�oZ�q�B-�ȕ�I�����R{�C�C�Rn��j���ź��Z��:+Mv�⦡l���Ȗ�A{���n����=u��No�֗w�z��]YF�-Q�3���l<".r�MrV6���]��Y˂'8�=I8�sUŖ�udoGm>&&[���A��+9V�J�.z�Vߞ�]����	r�a�;kP�j�W���2vʨ�jI)�TF��,@'���ƥ��ֽt�"�,�ʋ�@��'�'�j֭�᎕q,���������@}�U� �t�=W-�LK�o)�yb����~��a�`��]"����5�s����W���.�
�Źt��c_ò�E�Ȼ�X�^�p8���MzO��?��]�rڳj����I��v*��8�G,Y'��*Tד|C���=C]B�u��łyJ˾FUW>�UN=N}+�τ~
m{ᖻY_����ǜ|�նetU�dRF��y���0�A��|L���C�f�x���W~��a�xLʆcB
Ѝ�7��I-o��o���$*�p��ϧ�]v��ɤ�%�ee�B
r����N׶�5�b�r�A����q�rs�J���f�đA�>��]H͑*1�p}_j���݋�S��5�7(�h���>��o�t�r��-򲗍���$�c>��	|So�\���Dv���u��W��W~���I-ݼ�
Y2G|�^+��U�g��f��1��2T�M�7���u9�4�N�O>��_�����'#pk��4i&�u���W��&�_^��Y����4�<:� ����ܗ�~���W��M��%�Cn ¨e���&���em�~�Z^���/�{�f�"������g0��f����|C�I��\j�����a�!s����'���|m�-l�6�5�P�8[���9v�ɞ��/��|M��{�[�ۋ{��
�.S!!O�J���pR�B��^�q�sq.7�jۮg�^�?�P+7�[�ud����5+���ݺK�ߴE�]��x��ҿ1�#lmMz��dR�S�"a�)=�Z���Ӆ5���y旨���ZM٩hkQY��Q��R��NJ�
�J�ϥH��=}h$a���ޝש�0�
_���&)��A�sJ樌�֊xOƊ.Q�F4L�&�4j놌A�S�����]��c�1�X�E���e�y�P:TZ�N�ZK�r3�ip��(*�)I��{)�R��
�8�&���Z���G�:�i6H�)5���fMN�{KIH���������=rU���
�����:�t��D�os��]|�y�����Yӧh��yW�|
�ީ%�'s=�д�`�Kx��y;GO�z_�پ�h�U��5��#o���G rv�k�\ˌ��O�wc�8W�MN�\c�xW���<���Z�l<2�ʏNk��o��0P	�a�W��M��B�i4���@�ϥ���t���w����b�����~Mj�B���y�~��S�w�u�3l:�	6�Ys�ʼ#��ǭH�������NO�^���'P)$�<y����q.k����7��p�0t��R	��hz�De'�WAu<�a�A��ᇆx�<�G"���������q�Ԧ�c�!N4��W���krC��{k��Ł/�
yЀ[����kr]LE��u�yU[�����c��U"mg_6�ba�Lו|��,�&���ظ�$�Ra&H'�kKQ��P��K��+�r�L��f����傇"�����)�'ҼG0Hʲ��3����w)�5���a�p꺌��E��A���~3�[w�)�;�ҿ��8ϡ��ӅYY��[�<7����a�x��1�e��F	�� ��k%(�鞕���&�(G�fKko,dE.6�����.�^����ɫRt"�!&���E�d��~��]��!�,l�K���I~G�+��4�)�I�F��oRִ�+v�IR_ݞ����g��f"J������Q HHS��>�`x���lj��S4">c�>�}G�y���Mmv�鋇��Ɍ��!��/,Ŷ�Z�&;���S�MkS7�]8%��ZL��7:�߷H�S7��3�aϠ�}뷰:_��O6y�V�
����>���?�:��"C���k��L�ܢ���x�N�д�.ť��2�1��7p>��^��ӝw��w�;�XƤ��Ey5W�yn59�u^wH��Iʯa��tqx�R��%m*7���¬͜	�#��0\_	xNo�I�=���N���~���-p�m��'X�m[ )��&�.zP��6����&�ڌU�T��]���PX[Yg8M�Py��`2q��5�kӛ�];�߼��}���2n�ǻ`g�
�����5[��=����$�'�|�}O�{���+o+Ħ���&�T��2~����U%jZ�v�t����y�E��s�SC7��modi�n��k�6��r#Q�|���)��=���4�V8\_P���nw�g��3�?�q:�����H�7�NӦ}�G�P]=�����I��Y-� �,�Þ���zW?�"�R���kz��k������u�:���\:���s�\-�l�yJ�0-�9�}�޾��w�ˡj[R�")�$�a��+�u���Z���ރ7ۯ����ZL1Ya8尡s�����ע���?��k}�rq|�w׭7x��ա��^oݒ��Z�{���1����N>�㧮��r��
��I4ǎ];PAwj��(Sá��O@Wַ~hP|T��N��[_Zڼ�-����v��~y����2��udž4��wSv����[����,�Vl���R�W�M�mGIլ���yn]v���.�	u���f�	T���^��~WG�D+Jt�`��Z	r�5���q}�݋W��jQD�$��*�rv�:�]?��
#�=��B�K֚�@�&�n�n#x���c���G�+[�$�*��v�7aGݮLbi����a�B�2�U�'�3�z��i�����P���$�V��y����MDb-'K��v��T��z~4��(�|�r��Z]MH|�D�m�RK})[�d�t��Mu��ٵ
kw$|?����8U�������^����o.o�[� ���I��A��'�_J��Cƺ��ݻ%��9$�\�U�^
�-����m�KWT�BpDh��G��_G�g[�ԗ�Y�<�
W���qF�w���8�z�En�
��5��|Xcf$F����y�9��|���w?�X�Պy�_����"sO��V_C�xS쁈4�n9�c�S�"W;g��R1�zo �G-�{
X��I�y�M/�H/q�SQHž͞�u��!��q�4�:��mIi
��Ҝ�'�
�*��
����%�QV9$}(�q���J�Daګ����g��T,qO�N*��VcD����^*	.qޫ�y��2��fœ�6�u��䞂�]^qֹ�j]��=Ee'dh���ko��[�M|��-�
4���r���S5䁻f�SC��+�1�prp+�1SPP�S�+��x�{.��+k%P
eߵ�r��H��1x�X�v=.kw�Ϩ뷋���/�ƿ�s,�9˕z��d�T��sҵ-ջ7�{��\7�`�����_���]��&�L-rp;�����u#���9�̖�k����qi;���I��W�X�9��m!����:�7ᗆ�ˤ��=�}+���N�F���rzןŘeFMJ�l��)��ivz֝pƦ�v�sj�����C4ۋ�p����s����^Z�_PS�ǯOZ�V����y�f��E��Tu�o�R��+�x7
��Z��Q�S�/�թ:�1���[�����m>��i�D\�
s�\׎�gy0X���׻��7좷���b�����>-jݤ� ��xO�M��Sx���z/��jR�O��cR�����~���q�u=,}��2�єj�|e��Iyp��0	�q^W���ray)<���)x=��.C.C��ohRXj�N9ϵdp�o�cg�G�p�\�8�D�V��qYFm�x�Oߐ���Lmf;i?|��'5�5á�f��Үiz%���u�?�1<G�?�7Zu-��r�6��	o�S�a��r�Fѯ<U*}���F�0�|u�S%򵋘������W�{֯��(��4��}��1����������R�ih�.��VRiAj��I�}��-�;1��	���|W�#�^�֢q9��p�=�j���Ҕ���p�4�3d�UHu_���r�[�c���,BT��D]#���CӾ-[h~��Op��0�>�}M�!o�� _K�	�!'P;�W �
mZ�f����5����]Kټ��C���k���a%	U��N�N�*ɨ;3�<] �Z�g�i����mV���v'�~�W��&���Z�ܼ�ncY��A��W-��\�6z�q)�4�vƧ�X��g�ڰ�Mr�O��.�]��s޼�ٌ�����m��K��徝�����|Y6�=���X��`p�.?ϽZ�'�ω�罶�2L�:��@	���|;�i^�������s�8}��{*��?n�{��>���>�f��m-������d�vьp�qϭ:�����Z��X�I.��B�K-^�xU���^'�y-_O��Žp��[���|
x��y�{�
ג�T� ���h�g����ߴ%���|X��g{���yqɧ�HK��a��@�9���F�����Q��L�`�I�،��`�~u���=�=m8��>�/>����|U.̣�J�+n�>�u�l~ſ���u�F�;�^��u@G�5�|��nRQ���'�5��'�<g��X��5��X��o����EܛZAk�&�uA�8�5���e��^#D��c�[�|s�	�⍂=����4��񆝨�=��A$���Q��)��"��*�pG��1�e�!��A(�'�G����]�?�����ެ��(��QũA5iI�ΚmZ�k_5����V7�)s�[����m9����������Y�N̶�Ã��+�j/����>$xg���ƣm�x�nd��>TK!_�'�0f�}3^n�W�;�6�C-��mVnLè|�����Ӆ(�2�r�o4�4��S���$y�8ΔZ�����7-�5�ֆhm-�!r��T�$�<^����t����9�����M�&&x�$���q�Ҹϋ��i�(c	W���t�d��zW���}_�9o�sW�kH&�oO��Ǽ�a�?�'�I%�Z��	�_E6��6��NŽ������9��?��)D�YY���a�s��Z�"��o���?-n��w��.���K19��]��V��������yg�k:�Z#-�s�i�0)w~t�+����y�ٿ:q<�a�!��M�u7�Z	r~��5!�4�0*yC�kt�F�=)�t���M
��M��I��͢���zz?�Z~q�CF���z)��(�*��+ρ�Uy�⢒犯-�{����柯5J{�
Oך�q!9�e�af��z�5�3�Q\Js֩O1楖�5��A��^gO�'�_���s~5���=A�j�X�Q�?�G�����8Q�^5��W��o0�<V��㵲K����%Ey�E��$py�~5�t����8ON�d�6���W���o*��rk��O��!�R�rޝ��׋��cmr��6�=�t����u��?½M~�aҧ:s����S^�/g%�=����V��Aڼ�\�"����X����_����Pq�yw�|D�ӳ���M|���i���P狍��Þ>:}���`z��>!\�"�P�ھG��6�@D�p8��߆��H�8=���}�.���o����F���(��5��N�bI�𗌃�����P�Ơ.�Ha�W�y����E'I�֟i����x�Ix���pj��,��'1pq_;G5�\���tk%��it�J͓���s�<U
�(_z�]�KMU����z�|Es�J�
�Ҿ������<
r��\�|W|��eĨA�5�w�,����W<q�D��s�r�ᛇ�gG��~����%9l~���RWg�B��Ο3��(���mB׊�=zkIRN[`ז�K,3Ikp@����1������?5�|�5j;7�5��}|����,�
�sڰ�����]ߏt�*��X�ָB��9�~�f�%+���E��
��#.k�O#B�[��<�ѷ�������'e�=+RKX��9|qPͮ�p��L��Z��b(�ݻ��ҩM����<j,�����M�K���=��ic���싸�@Ѡ�
~��F�U�KB�b�+7�˹��̈́{_n鏥r�X.��%�~�Y��Z>$�\�J��?��8�5�o�r�`�8�z����0~�G-(�[��Ot���DKO'�Ú�=��–Ӵ@]�!ǰۜ*���H�s,K��"w�rk;S�n/,b�G%��#�=k��RWm}�d':�;�64]`�o� ����)_�kb�I�L����0YܕU �?���l��I�<rI��}�]7�'Y��;�2��7�����5�Z�N�m��+Sњ�W�f���kO/"c��m�W�9�3Ut��O��M�KB�.�:��=����1m���e`�����Pzf��!���mդiaa�̝[�7z��㏵�����\���]O>��f���&�����#n\�{���x����x��[���=
�
ݖ�+�W
�A�_�F�NU��1�w�
������-���Z2�\ w%���A^��*
N�uOȂ��6�����(���CC5N5aA�M_���s|VSQV�U�&�Ŵ��o�c�~��Í���Ѽ%��+E7v��ԓ���!LI��8V~X�1����ij�hX�����t�+���vB<g��Z���e�.�đ�2���8<�����Ք��Ҭ-�~Qs����k��Č<�����h�N��n�KWm9C�¾4��G*Uޮn��-��_C����s�j��K�i�Ϡ��=�`�5��1�_3j���;�d�@�����	u}��|��2{Q�\����mDuRJ�v�	$��L>�|R���5�e���H��*����_����|H��:�/�ih����"?��Y.2��`�~��7y���&�'���f*x�ҩQ��	(҂�~���9�ϭ#?<�:[�����1��sA��M+��ƟҐ���׭6�ț�bi��ӛ�Fi8��#�<�N������Li5`LJ'�3��SA~
fՋ�&S�֔�]��2穬�6D�'<b���QJ�s��!5���$�ޫ�zS_��Zē5S�A��m�����D�)\�k6������@�H���iy�6,����>!K�Y��ֵu=}T��_���	������ʲ�I�gV|�m�~پ-:����w�I������S�F!sȫ������%�o���`iw&�M���}f��ٟ+�Ŀ����æ��"+o�#�+��|t�&إ?\�W����{n�9�SG��c�`��Y��T��~��<WC
��'�=��xQ�.Os�q�2�ɺ�p1��{��b����b{qNѴ�j!c)<���_�"�NR����K���U`�t^�]��U��^���F�	�Z����ش�9ZU���"�9-������l�5eJ#ԣ���[��x]�T�幯e�k�<
n�Wh��7�)�#�+���F��ϓ�l�c�t/��͏Ưk^%[�F��⼮�S{h7�`G�W��/4��־W��K�D�%���J&w�����̢�tv��'��5����,��9�kͼG��������_��x{?g3�2(AC�f����;e��k9'���V�%V,:W9��
ifS$\Eֵs%�#m=k����B��I�_��s�$�>*�w\HcMy��xL�� ��]��m�b@8��5yR۲GҿV�1/
���C��a)�h{��o���.o��^Y%��y<W�k~�XB����x��2YH�
oj�{��zx�J�?�8˅k��n[����'�lŇ�j����Gʃ׽m�&(�ܩ.?JÚw�픀��y}y�j�C�"����+>���$���B�[�U�X�L�X�G�Ig���3�
3Qэ�|�6����γ��z�%\=5V[2����,��;w��
������9PkHnǚs�Z��nD�OLW�N�K���<�FM�%�6��+��o.�ۘ����_�|�c���Ӯ��w�Kd���a_ef�E�x�Z��SM4�F���h0�&��[g(��߰��lլ�7�풠u�+��2YZ��8nq�F�5?j�!�@����������aBm�޻�U����g�h/��>���")�Lf�p���b��]�y��Mli�}�rX;C��jՋ��l�	-w;���XCu �/}��-;�WzƦ����`8T�}j���Gt�j�_n�ږ��-CQ�m��<�+���%KO/�2�T�ԏ���:���_����մ�F�L��)�o�_P���ŷ���|�2Kw�V��I� �Dq%�/u��b��~f�����ٿ�k�|1kv��kq�&ky�b�PA� A�9�Ml�E���ڷ[�������
&6���d���F9o-��q�fbp:W�\O�Xl�<�w��.�5G�t�k��}M��}Ye�(�i&���G�5��jR���d2�+��NK9�"I�&�����!���Z��ޡ��DQ0�^zT^օ�N�Ma�g2�o(|'�a�H�S�*;��u}����ץ(#�#��r�g�'���Q���!�)sZ"$)���P{Rgw�ݎ�D6.>����Z��L�P@9�5��t��⡑��@	#�2HI�S�oJ�����b$�H?z�i�����[M)'�-z_�O�3�^9��Ϸxbb	�NM8НGh��U�Ҡ�9e�h�:��;��Q��-�������L�����g/�'զ�ijv����I���+��0.�$�ֽz�+���OF��M��_�?��-����I��h�Y��p-#�h���w8�֪��V�\U�!Y�>"U�*�o�h���o�r9z��c���:�
Y7�,U��^{�x�/G�=G���JE���MC�g-��6�����y����J�/�\�?�H����x�B�?J������dW�A�j~>g��^�]k�b�<W��Mg
.+���M›>m�$��	I9ɬ�6�;zԺ�Ǚ�H�Ξc��_�����������Mi�kC��d�T>��&���8���ɢ��	�.N�Ǚ殜]:[��p�A����VV����vP�/�+�~xfѧO" �=My>����[t'�s^�����r�'�S_��j���9j�ꜢT�aU:]�d�׆ݭ�-�TZ�|9y��98����.�-�Wg���]@W�����le|E)7�G��)nc鱝�)���]֑�-���ָ�n4��G�kO�ڜv��i0G���t��������[��$��@�6k����<W<M���)Ȯ~MT]?<�F�
P�G�DӚ�]DY���\Ʒt��zV���W�A�0����z�5�͞��Ե�s��M���;u�?�4�K����o�Җk��x�J�_�p/�]�g<��\�2䓦�~p���jWkmo��s�^$��1�=��48�%p�a^Q�{�5 +9 W��������Wu�4m��7S�x�C�
+����w�ﵭ�И$U��D�|ǚ�yal���`i�#�5sͼi�#�{e
��^i��C+��}	v�t�p�j�����=x���x�+�]��8���9���Vx��,�h���j�����f��t�E���P~*���ս�pE}}%�7��+�b<6�R�U��ӱ�Ũ�e��*k��/b%Z�.~��c�7a��O�7��Z寧��>X�]o����Es�v�ѥ{���\��1�/sP�o5����]�xP���!W��R���əP�t�b�&�H�-}O��e8�4����P��"�������k���~Z�O��%f<�iW�Mm6���n�-�tG�ڋT�fdV���d�{V���pعp1�U����č�r)�o{���c�E<B�nC���b�`��R[���<��^+�����c��kk�Bu���t?Iy*�����s�3*8ʭIX�ʸo�W�=6��п�-mn�5;�c���;�+᭱��ӥ`|5��pΆ5�{����ǣ�r�`	^+�*��e���O�����u�>j�j�z3�h�7�ʙ�<V��}_�*Kg&�S�lj���3�p��?�H�����p�������l���I7��x�MЃ�wnj��&�U�T��%�>�?
��1�i7s�Mc���D�c���3�����\��ͫ��Lv����ۍN@�P�+�5�C�w�'��_�YI7vZ�S�ߺ�aV�:Z�V8&n)�zUƧ Kd���M}[�	�}�4o�,�OPG��Ÿ�'����FkP�1�<ץG)�WW�<\NB��՟�	��|I�9�Ci$H��M}�	�s��R�$��w+�_���a�Ƃ4\w�^�Ꮑ��t��^�%�
e��x�"�WHh�����?��(�Y�#�^��/�~�C��ڢ��?K�uoh�dc�h<'C�@?
��բ��2�WyH��|6�JU!�Wm�1�3Z+��\(�����w��5�F��M��Br(��7?�� ��1������p�$<�Օ{�<�s]��\�q�x�#q�k�����k���f#?�g��L��^�]{�9��'޲n�K�9c��5.��ƫM��rs�E�ۻ�`���yŝ[�1�I�u7z�ț=�y�ĽTy2���'��g���(E�K��R��j����zS�K��}Nj��|u��-���ݚ�?�
���N���澟��z�&��9�)r���v�QS� �qּ�u�9F;�q�8ړj2�d��V/ss�z���������@PzW;�X���~�'����K銤8-�(=>���{�VžX��G�q���>��ĖѠ,v���ks�3�3�g=q_3x{�:ۙnd;3�\�k��Ʒ(��K�䞙�W�cxw�&��>�BS\�G���yi������e9߄����lNA#��t���,��-��J�:7
����n��$Zյ�t8'ڠ�1�NJ��Q}߼9�i�_i�>��<'���z�����J���f2)y>�j�N����P^x�8���+�4[���9J�Я�x���	����įy����Mhx�ZV��X?J��u����&��/�E%'O������g�_hs��W?�u���ƍZ���.�I�T���L;f��N����M�D��O"V��=2kI�� �=1Z��X��<��/uh���}k顊m'��V�a���f�E�9ZK�B����_ll7N�����U5c�($�߲9#��ۣ�ry>��4���5�*����V7kR����[�tNp9�U!�r8��Y	�s֜�R�AG���*�]y	5���P>�Vm6+�1�y�V^�W$��Q@��[��꣏��Z5lj�rپiQO�C'��c�O}&(Hd�j�s��q�VE���;�j�s	G��v<o�w&�7RuA�$�NU9���Td��R�\y��ПZu��A�<��3U)����̟/��t��I��:le��Z�Й�-A#�|��ܵ��	9������P�u�0�kb.�+����2�O�&z�b�G�9j�����~�k2����[����#~��'ƿ��4�1 �9��%�cUI��Gg��5ͫ<�[�mW���/^��g)�5�u��V��{��+r�^~ɘ%N���~�',C��{����)��*fl�*�K�h�$gc��eៃ:׉�U��u�܃_+Jn�G�N�i��g$�ۚ|�^��7��e��>��Z��,m�$�	�+韃��O{;-��T������շV<lV}����>�O��U�����Xs^��	ߨ��&��0<�����u�$X��M�.?ٯb��kOܨ�5�a�8CY�|�/�j��#⿅�O=?H�#-�'�ᯠ��!�i
�]��z�}�x��׏jݶ��*��)`��>z�>�WyH�����E�*����I�mok�ݨ�+�����N}���#��l�c��U��G�S�d���R!���T�&��lRq�&9,վ�J���ԗ��)���(���=襠����Wf�MP�T995�6�ב��s��~�Y�\ڟU��˩�:��	���[��.�3�b�W��O�`��.��
s�렏��3���-X�k�wX�u��yw��c3��]cX�	�s���)��f<�>�Zן)�y���8�nBd8�	��nN1W5F�I'��|G��;N
yXJ^�ѱ��˕����lT��cV\�$zטj� ��m�95��;v�Ui�95�K)��3�)e�N���a�.$�XՏ�n.�c����)j�V+�ڻ�0����2E|>p���q��1�XI���|%p֤4�B'A�����e�kKw�4W�w���Cgr�!]��W�chƫrj����_��W+��W�&�mk�6�v�H���'�y� �-�������C�]�"B�5��3�T璴F��RrG���:�O���8ݛ{���+�|)�Ʒ�Ӷ��]E��E�{���ϯ�ʌ�KAIʓ�='J���#�L������*�+1!`�Ҩ��I��$�5�C+�g�c:t��h����$�0�A\�$	ț���0��9��������kڡJ4�٣��b-fk�Ԣ����U���M�އ�C��t��x�kޘ/-�F�v+Y?d�z3ا�/����1�?�<��������ֹw-��V��a�W����+]s	;�ЊD�wz�H��f�������$�k��N��մ)#�l� �ͫ4C�9�ӜF[ �Y���N���ITj�%LB��C�r@�:�V��	"�/���QZx�#q��T�/�qK�@�������j�D=�>$�+�5����UϔF+:q��nS��T��ӽ�䕉v�k6�Qا�����!�
S:��7�I�FIu0�au:[{�4��֍�
?߮oM���֭����汫N{D㭘�]3��-R,g�����N���5��)��oϬ��1�>Y^��h�L׈�a�&婵�o<�0V<�kŖr�n�c�ֽ�ßo�i,j�!�W�|;��g�V3yf�v9)��/'�V
	%�?�x�6�ӫ)7�>!���W�:�}���Ԋ��v���mt��p����>�>��f�I�@�?r��=�/�xv�ۨ#�_CS��x||���>e�'�
GA��PN%k����5����������0���?v�j�]3ö�1����
*+Dc���Wwl�|������^�umb��5�\�gK���SG��l���k�l�ެ��F��@UV�*���
�������Mth�5e�lԊ���Rb!��R|�
W<X�YiE=[�Yq֗��CwԒ�i��T�i'� -�z��g�Ty�ix��b�2n=js�9��y~n�+Nwb��E�4�ds����ހ�E$�������}y�>#��ֹ���qY�>$#9z����[s�<g�֨O�L�\�׉:��N��q�^N[��Ú�g?��?=Q��'9�\]Lj�n5Jos�5Kw��s�^}���k��%�	=�Vҵ�=��ڛyq�6zu�͸�~�C�s7f�9�j*6oJ�O�m4�G�+��!��O"��P���Mvdtl��80��|�[+$�����zV=����u>�;c��19�1�1\��;(�A����O�^���Þ�$W����q���;ũo"�rz�|�&�X:�W?B�."TZ�ݏ_��O��lz�=jDwp�ɪ�2�
۟jν�7sp~Pk��8	R��G�~Q��J*iݱo�k��.�g�t�\�y$c5��Tt5��#'ڷ&vֵ��{&����'�Ж1
�<�z�j�q��^٬�5���u3�,i�����ξ[�JZ���R�2�5ζ�r��*����j�[�"���Q�Ş�P��Q�,BOB՞���]��NO�\��A
ki�+�ج�4a%���I�M�L��ެi��ӥ�Z���YH�s�aG�s��|55)rIho���f>�][�w�&�.��j�{�߂{ջ6��5����]f>�h�ͬ\s�Tn�"#��yc9��wP[PA#��ۆ��;E�u�I;
f��G��<VM����sf�n5�f;H������<�_$�e�c^��KqX�x��~f���Sյ�*r�>��j��X�د����j�)��Gu#���{��O�E��
�V����)����;�zة��y��=���z#��zB���A5�#��*�:�jH5K���y�VM��n4���zx�g"�\x�I�e�<�\晣��.
ϵzO��sk7I�#���i�T������W��.X|�^���p���J�C���s��M�#����O���%��:����7»mc
���W���;�|v;V�|�3?g�ٞ�I��}Vّ����~
�?����m�J����>S2ax\q^��_�2�8��#��w�J
74�5�_�iro���D�P
�q\Β�֢YA�ih�#�n� {ק
�QW<�ғz��p�/ɓQ�2���`K��G����B�J���P��j���n#+a�E*�b��
R}���W&@n��`�j�/x�5]=]W��B�ɡ�sp��2["���_�u� �g�$��Nk:rq��*q授���~V��('�5Fo�g(0�b}댾'T��s.��j�4���������7���]OG��_���H�����ʁ�q^%��Zf�P�[}+�4
xɣ�#/��_�]0�K�R]KP�(<�U �K�ҳ��Yn�I��9�*!��_Pk���h�y՛�QVjT�2*���4`�������cR�Tc(.�إ���5bk�)���>ќ����]������z�$�t��m?7J��R��cZj);Fɫ�O��z��M|��8Vw�{�*�.M��b��'��k2��Y���n�]'?5f��d���Y9�v:{�u���ƿ��W3q��ުI�pj%2�N�}w9�Ui5Þ[�5�>����B���Z���B�xKQ3F9�[����ٳ�q^��푉��OT�nFs�|q	b1��pr��'��I�A�5�ghd�{���B��]r3Lk1G�a��p��p�+�n@�]~�U`]������]��I�W|@�[ʄ��c���uW1��O�bF+��Бo6�~�Mn�
y�YZtbI�F��ʔ(��z=NJ�Rf�!kD
��
�g���k�׵?%�4�SC�rk�e�Rŧ&����]�-[�����#��^,���*�ǽxŧ���Kpz�x��~s��|�+�]ge��8ښ����<Lu�@ls�j����7Z�
�J���5��$YHP�ך��Y,�˗�D{�N#�⡤�=��Nr��k!"���޸�#�	{c9�R�����a^L�MQ�qi��t�� ����]aY2k�b�vK�֤Z�*[�ʾ\�k
x�N��-%��z�5���Gb�
�'��峚�u�u���{��6��F�g��X�V�|P#k��[
�b���/8c�W���WK��`��]���\�<K����\���l�s��a�]��,|����^� pjL��V~���-_�J\�{�
牂���O
jw�+��S�|"�/y�$?���
t֬�\gΣ�+�4��{VmΠ�9�=q^�o�R�r�H3��_������F�DžS���y)�INv���B���^������WM���W�:�v�1=^�O�U�?����.YX|��b��	|6iʗ\~���uMF�8��A��^���o�'d���:��VrO��u�Q�(Rë͟1�6�>�#k[v|��ֽ��k�.H�ؿ���'���m"�[x��*�x��X|0�툀Ypp~Z���#�x�R��|!�$�$iunPv��|�h�ˌ�Ê�o���5����p1Vc�M:�]�R��N�,t<��}�нG����5�鷑\*I!�2��
�����W�_�Ķq��+�b9�c
��U��WVS�U�:���ǟ�}jDѝ�@��^��կ�6�DG�V~��7ȷ
=��eo�V��U�+a�N�nz�3�O�Z�im���'8�y��Mw-�M&��q�����@k����x�R�R�Lԡ�5i�@��0HS�W�W^�ű�OB*�j|�-ψ~#x�i:l�-pX@�����F�ះ ēHO�T�֝nj��"q�͡�i,
�:��`�����/��%�m�.9�p�x�vu/'��>+��,���������V�=��:mEg\q]S�2�-�Y�kW��4�Q�r�M{�
-�{x�=�s��[Ԏu��ʁc��n�466��5PzUk]4�/-̹
�V�)��1�Np���O�~^�kJ��Ct�#�4}����%�f��	&�Vy�V��TܴF���VJ�;�9lf���W��8Y���v����w���*���)�b
)��R��g]��Y\L����S�gDF���#�W�x?�$�ωo�"��m�0� ����y���G�&��AK�Ӧ��24wh�F�"��V�)%{�2�*1��އN����>�#*ݶ����8�{��X�œ�����[{2��m�%f�J��f�ܩS���g:�机#�h��S<�SEu$���o>�q��Yu2�n���f�I�k�s��*e�/�w���~�
��RGC��PB�g�y��,T���m�D�t�����ƶD�`@5��LaU�-<�=s^6
-���ѻ��Y��R�$-Ҷ�5��6�Mq��3��N��u�Lq��E�<�mƹ����Ic/�i�_Q���EW�QW�W�[�Q�]->n��
n�Ϲ��]@�Oj���PG�dTc	)2��u,�Gz��G�L��ϸ$�|*6��hSJ)I��;�,���G�(]M���N�TL8�:XxKty�Uir������U�7��G ����b;}h^�U�˨VV�M��8�<��&z^��Q�
��l���
���#��x*MiZx�Hq�Ҿg�p�r�}V��Q�j��k��l���[�[���כX����	�:ס��o��#*�N�dn�P�~��򘼂t�>�
�4�M$�'��.5����Jv�������#��d�m ��dTV������m;T��X�U�B7}s_���π�/
x��LHd�0����ՁɣV�v}3.%����u?�0~ƾ1�]��K�+��m���S�;���[����dS�)�����zO�H\k�q;�m���/�:h>�>�g��>@+��_**�w<ʜC*�M�	�(����V��IZ�?�)d����ܮk�Y�kb�`��'�Bօ���bA����X{�y�sF���?��{��`ğ�ת��	+cu᧼�����q���/�@β\ģi�ع�M*�ɜ�G@+�XEݜ�4�k������U䑥��F�;i�߰�
s�E��k��j���r���Sxw���J
��ҝ<59-V��iQlτ,�b+he��=�Z�?�^�bEƧj�b����	 �C��Z�W��ymv�0+O��-"e,�o�,��t��:|`tN��c�K���(*�8�6�𽦑�Dj��������=
eK�gWu�8?j��[]�ML��/���h��y�:��=7��I�aW��-����D\�L�'Qr�K��ce�˨Y��\g�_|5�_�H��y�k���O�di�z
n��+Yc���ܚ!��2�>��G�W�qauxg�̓19�w~
�r��[}.�}�"q���Oģ��{��Os�"���t���"�*3�6m4�V�K��Ua���d�V���X�A���4�}>�ӵ��@JI>��^Ae
�b����tMrks�2�Яol�xPk�zֹf��j��`�:Wa��U�ët�:қ��E���5t��+�Y��Z��4�jQ���M�;3�+�>��Z�����q�t�
��8%i�猰��Q	�g	'v&��e�zRs����T�֨�$��P�#mHї�P��lL���0+�M*%�G��5[T𽞨����&�*�C�J7ԡoq�zM)s��5GW���[e��IF��;V嶉�g��
�S!�c,aڵP����Q��"3:1#����tiLg�d�u�Z:�"��A�ozx����M�[�u{lMƵ�I��WwS�MD-���1�FK8'����@�y$��k�����2B<'i�m��H��=	�JƲ�c}
)^N�o�>�tK���-�K
	��rN�~���~2x�ᙆxz�ó��4�S�ZNٕIL�F���u��lo`�/��N��o1���9?�{u�_^�.�5��Z��][8�,s((��x5���J�Z���8�<�/�o�u,�����T.���Wk�+I��<�
�GJ�)�>��z��"Mo�%����|������j��"�h0]�jR�nn�>"�eeb�ٌQZd���rX�8�?Zr�O4�J�n{�
X�U��sOQ��Ke%Me�#�5WӽK����-��k[D
�+�ғtx�X�G!}�҆��}+����1��	n8��k��,�B+~�|Frk��5�\�����3�o$��g�w��Z��_)�~�p��sZqͺ>;��a#�#ЩF�I�/�fjȽ�<�Z�����N�完J�=��9�@ISREs�sH��|ӥM5s��R�z���7$���"$q�]��k�?���]�3�L��Eo	��vʒ�Rf��x�'�5�W��U���kyu=.M�\ҡ݊�
��?��MC�=���P�`��V�q�ڜ��6��o��
x�������������}A�;���?⇗6�a5��H*s���>��3>|��=E�C��:�=�.���#�������&���E����?����T��gn]S�;��	������2�J�ycn(
}z<'gg&��E?J�,�Ő�,7��+��J��5c�|3�_K��@[�Ļ}�[w~�m��5�v�\G�9>�n��c\��Z***�"U����5��g*Ld�_�W7��]t[b�=@ɯk���N@5�jڅ��^In��;�*$e�Ϡ�5�[
�d٬1.:�o����$��2���\�Z�r�
Rx�P0r@���/���tKH�e�$�l1��k'H�+چ��{>�s����e�Ƶ����U�J�O��$��-|H���V�>���ֈ�0������-�z=�6�1�N�����I�9�*R���D+I{��O��O���^*
1�P:Wc`%�l�][In�
���G[��uu�#E'̄�Kfr��<�݁��jŵ��p��]�v#l���Y�a��Ғ�Nx�HPG]���-�<�L��Gk�Y���LMn� �p�t
d�\S"�Rً�C�ir���s(��@9�=��[*�2I�����&����uB�=������A��3�����7u�N���Opzn�%��_S�"���R��	U���Ě�
�����9ɦ��h\�&D��fq<��9��W�V�L��\����S�Id��A�"0@?������5���tYe>V~�y#������=Fäj0:���*����֫K�ȭ$�7�'vOҺUM�=��\���B�G�������0X{��eZ�Rr��R��剒�t[MA��/�q�9�nM�*�#�wk�9��q����|K{'Ġ<�j�#���%��Y�$$�u�@�zG�����[ͯ�f����u*K�H�H���8�*�e6�N)]�p�c6�g�Zj�xa�H�Yc�U7����V��>Q������I��k0�^��޲�|ɕ�D�UQ�����0'uv�Up3�^���B�Meh*r�]�HY�h#��d����䞀ⴖ��@����ǽt�a�T&�������l��2p?*� \,K�	��)��u|�T��k�Imz0:JD��\��ű�s�kE#�����q��4ęUa|��ڟ��*�U���x�'�M&5s��Z^��-"���j����.�㠐�(�	�tA
<-G��cNyw!������(�aU��~����ӄuz"^�BQR��\�S�Z�.
�"��^;=�s�i�s�J��O�Ơ`��N�ޚ��5*�jY�z�xʮ}kz���ǥaim���g�~�����.V�g�u���t�WU�?�}���g�)#ִ�a��i�e ��P+f��VN��t�v���Rff�2I����u;��Q���e�X%K?C_G�	��q|^����O�����b?Үb0��Xd��F�d_�5sQ�~ͨ~�:�T8f��W�X�jeUT�������c�B��;Զ�,�o's�c�2�O�W��/���?�,�z}"�b?}v�N=v��=�6��~͖0/��5`�łfx�;RM}9�i^�X�K+xD�y�e������*����N�%���ٵ)F�?,LW��?�&���t1x[��@
�%,�e�\�(��e���RTwa,D��s�/��/B�SJ�� � �I4�Te
1Zb'88�>r
ZIlf���(�ʠ���P�x��둒�S<����㧩�"��_!Fr�J�8M.�7*D�%�`����L�J�Mi�A�qO:c�*�$����N�s�-{�l�ۖ;ɳ>�R�O�l�'&O�kV��0�6^��ܣ��R]iz��Z�5L7MÑ�[Im�*��5�UE
��N? �Zy�N�����(�A��6}*��Yd�32t'���<�k|���H��G#��
E�g��;`@=�*�Ƥ4�i;�1�´dP��~�ϳ1�W�Œ�
��|M�僟Lu�� ��t�6HI��c�5I�4O;�'�;�?��&霃�Nj�]�;��s�U��[,�=01�� 3��"|F�c}�>���
',ř�㓓��zV�[��~g���?�(�q�\�zq��w3ΐ�t�aܒi�Kq7����}��M�O�Ϋ�(��鰔�vUTLrIl��d�vW��y�bclz�ۜ������4�y�+M� c>�ME �*y�sK1=x��U�'�c��݊�-[ݴ�fm���Bo!�=�W�<F�N8<�bʃBگ�I�,}�U�D"��?œ�)ɦ�e�;��
7*
��p1OHJ��M_Aܤ�-���%m"��
�3��T.}�����>�Ew��f�P*���H�f�4�vJ���������;�p�MO�֏-��~�����!�
r'<-XX��G��P�D#�)���<S�Y�@Xj"����z�N�P��j��8'�=W4픜�G�S��p�KS�BzӀ�R��(�wҞӭ"���9⼛j{���4��<�“�ҰǨ�s�SUsҦ�OL�H.�zd� 
�Iv���o������5�p�|%�|Cq+����??_���;��͵����?�����y��S��yx�.��w�y��^�D~ek�x�OA[?�c�����
����ѝ����)�2�L��i�0�����m{��6_j��M��
�~Q�
�S��7�N��:6����@�+��V��+#ȧ�Pw�����?���'�
j���m�?��~�|3�[6r=7���S�!�?�m���}={T�n��|���+�q���Tk3/�p
z��(�Z�*0Z���s�Y�x� �ig*�\W@c�V*+��2`�[�쐮���SZ��	��!셲GԎ+�1Q��帎�w��?뺏�--��-Ưyv�#�'X�p9i$s�Q�������B��$�zԊ7.�֛�`Ql��,L�:k���ɳ,�B;.��s�=�\*��ɧ�;��\�i���ԽKJ�a��O֗o�Á��"�y��BBU����1T��lZV�;�(��֚H��*Ql���'��~����02��J��$���74Ӕ_��ӊ-`�Ǹrs�ґ�EZ����i����'a�C�?����h�l=qȫOG[�eLb"��
��T��EqlT�8�T��p�}�H��\!.AC&��1���?�F��y��}
L"L�zӉ |�n�T\T^ʽ�E���S� d���9�ʖ���@
p�"�cD�EO\ML�7���r���
��l��dRO|u�"<Pi���9�L{Fiȧ��L}�B��*vD��a	>Ԫ�?5L�;Ҝv�""�t�r*]���z�	�LqCJ�s�
��@E?o<R������x�=�r�j�SҜ8F�
J` �֜:QJ��ӂR��-HQ@Q@Q@��P��PKÉ	[#��//#329_imagick_getImageBlob_empty.phptnu�[���--TEST--
Imagick::getImageBlob behaviour on invalid images
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

// Fails due to image having no format
$imagick = new Imagick();
try {
    $imagick->newPseudoImage(200, 200, "xc:red");
	$result = $imagick->getImageBlob();
	echo "Imagick failed to throw exception" . PHP_EOL;
} catch (ImagickException $e) {
	echo "ImagickException: " . $e->getMessage() . PHP_EOL;
}

echo "Fin.\n";

?>
--EXPECTF--
ImagickException: Failed to get the image contents (empty or invalid image?)
Fin.PKĉ	[VQ�4��$101_Imagick_quantizeImage_basic.phptnu�[���--TEST--
Test Imagick, quantizeImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$numberColors = 64;
$colorSpace = 1;
$treeDepth = 0;
$dither = 1;

function quantizeImage($numberColors, $colorSpace, $treeDepth, $dither) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->quantizeImage($numberColors, $colorSpace, $treeDepth, $dither, false);
    $imagick->setImageFormat('png');
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

quantizeImage($numberColors, $colorSpace, $treeDepth, $dither) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�E[*tt#154_Imagick_textureImage_basic.phptnu�[���--TEST--
Test Imagick, textureImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function textureImage() {
    $image = new \Imagick();
    $image->newImage(640, 480, new \ImagickPixel('pink'));
    $image->setImageFormat("jpg");
    
    $texture = new \Imagick();
    $texture->newPseudoImage(640, 480, "magick:logo");
    $texture->scaleimage($image->getimagewidth() / 4, $image->getimageheight() / 4);
    $image = $image->textureImage($texture);
    $bytes = $image;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

textureImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�ۅ�cc(029_Imagick_adaptiveBlurImage_basic.phptnu�[���--TEST--
Test Imagick, adaptiveBlurImage
--SKIPIF--
<?php 
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$channel = Imagick::CHANNEL_DEFAULT;

function adaptiveBlurImage($radius, $sigma, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->adaptiveBlurImage($radius, $sigma, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

adaptiveBlurImage($radius, $sigma, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[N��DD&282_ini_settings_set_falsy_string.phptnu�[���--TEST--
OpenMP segfault hacks

--INI--
imagick.shutdown_sleep_count=Off
imagick.set_single_thread=0
--SKIPIF--
<?php 


require_once(dirname(__FILE__) . '/skipif.inc');
 
?>
--FILE--
<?php


// So, this can't be tested for properly. ini values are stored as strings internally
// to PHP, and are not normalised to the actual type used by an extension. Which means
// you can't easily get the actual value being used by an extension, when the input
// type isn't the same type as the extension is going to use it as.
// aka 'Off' is stored as '' not 0.
//
//$sleepCount = ini_get('imagick.shutdown_sleep_count');
//if ($sleepCount !== 0) {
//    echo "imagick.shutdown_sleep_count is not set to 0 but instead " . var_export($sleepCount, true) ."\n";
//}

$setSingleThread = ini_get('imagick.set_single_thread');

// This should be a strict compare but can't be because
// it's stored as a string...
if ($setSingleThread != 0) {
    echo "imagick.set_single_thread setting is not 0 but instead " . var_export($setSingleThread, true) ."\n";
}


echo "Complete".PHP_EOL;
?>
--EXPECTF--
Complete
PKĉ	[���uMM$299_Imagick_rangeThresholdImage.phptnu�[���--TEST--
Test Imagick, rangeThresholdImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('rangeThresholdImage'));
?>
--FILE--
<?php


function rangeThresholdImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');

    $imagick->rangeThresholdImage(
		32,
		64,
		192,
		228
	);

    $imagick->writeImage(__DIR__ . '/rangeThresholdImage_output_image.png');
//    $imagick->getImageBlob();
}

rangeThresholdImage() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/rangeThresholdImage_output_image.png');
?>
--EXPECTF--
Ok
PKĉ	[c>=�--*168_Imagick_whiteThresholdImage_basic.phptnu�[���--TEST--
Test Imagick, whiteThresholdImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$color = 'rgb(127, 127, 127)';

function whiteThresholdImage($color) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    //TODO needs a control
    $imagick->whiteThresholdImage($color);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

whiteThresholdImage($color) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[ݞ�``179_ImagickDraw_line_basic.phptnu�[���--TEST--
Test ImagickDraw, line
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function line($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->line(125, 70, 100, 50);
    $draw->line(350, 170, 100, 150);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

line($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[� L��"259_Imagick_colorPoints_basic.phptnu�[���--TEST--
Test Imagick, Imagick::evaluateImages
--SKIPIF--
<?php

require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

function im_check($value) {
	static $count = 0;

	if (abs($value - 0.5) > 0.0000001) {
		echo "Unexpected value of $value for check $count\n";
	}

	$count++;
}


$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");

$imagick->setImageFormat('png');
$v = Imagick::getVersion();
if ($v['versionNumber'] < 0x700) {
	$imagick->setImageRedPrimary(0.5, 0.5);
	$imagick->setImageGreenPrimary(0.5, 0.5);
	$imagick->setImageBluePrimary(0.5, 0.5);
	$imagick->setImageWhitePoint(0.5, 0.5);

	$color = $imagick->getImageRedPrimary();
	im_check($color['x']);im_check($color['y']);

	$color = $imagick->getImageGreenPrimary();
	im_check($color['x']);im_check($color['y']);

	$color = $imagick->getImageBluePrimary();
	im_check($color['x']);im_check($color['y']);

	$color = $imagick->getImageWhitePoint();
	im_check($color['x']);im_check($color['y']);
}
else {
	$imagick->setImageRedPrimary(0.5, 0.5, 0.5);
	$imagick->setImageGreenPrimary(0.5, 0.5, 0.5);
	$imagick->setImageBluePrimary(0.5, 0.5, 0.5);
	$imagick->setImageWhitePoint(0.5, 0.5, 0.5);

	$color = $imagick->getImageRedPrimary();
	im_check($color['x']);im_check($color['y']);im_check($color['z']);

	$color = $imagick->getImageGreenPrimary();
	im_check($color['x']);im_check($color['y']);im_check($color['z']);

	$color = $imagick->getImageBluePrimary();
	im_check($color['x']);im_check($color['y']);im_check($color['z']);

	$color = $imagick->getImageWhitePoint();
	im_check($color['x']);im_check($color['y']);im_check($color['z']);
}


echo "Ok";
?>
--EXPECTF--
OkPKĉ	[h�\�>
>
014-setresourcelimit.phptnu�[���--TEST--
Imagick::setResourceLimit test
--SKIPIF--
<?php 
$imageMagickRequiredVersion=0x692;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php


$k = 1024;
$m = $k * $k;

// These tests are flaky as the values ImageMagick will accept
// are limited by the policy.xml of the system.
// Also, it appears that some versions of ImageMagick will
// reject overly large values. e.g. setting RESOURCETYPE_WIDTH
// to a billion fails. Which is not totally unreasonable.

$tests = array(
	Imagick::RESOURCETYPE_AREA =>  100000000,

	// Set maximum amount of disk space in bytes permitted for use by the pixel cache. When this limit is exceeded, the pixel cache is not be created and an error message is returned.
	Imagick::RESOURCETYPE_DISK =>  100,

	//Set maximum number of open pixel cache files. When this limit is exceeded, any subsequent pixels cached to disk are closed and reopened on demand. This behavior permits a large number of images to be accessed simultaneously on disk, but with a speed penalty due to repeated open/close calls.
	Imagick::RESOURCETYPE_FILE => 100,

	// Set maximum amount of memory map in bytes to allocate for the pixel cache. When this limit is exceeded, the image pixels are cached to disk
	Imagick::RESOURCETYPE_MAP => 123 * $m,

	// Set maximum amount of memory in bytes to allocate for the pixel cache from the heap. When this limit is exceeded, the image pixels are cached to memory-mapped disk
	Imagick::RESOURCETYPE_MEMORY => 234 * $m,
);

if (defined('Imagick::RESOURCETYPE_TIME')) {
	$tests[Imagick::RESOURCETYPE_TIME] = 30;
}

if (defined('Imagick::RESOURCETYPE_THROTTLE')) {
	$tests[Imagick::RESOURCETYPE_THROTTLE] = 1;
}
if (defined('Imagick::RESOURCETYPE_THREAD')) {
	$tests[Imagick::RESOURCETYPE_THREAD] = 1;
}
if (defined('Imagick::RESOURCETYPE_WIDTH')) {
	$tests[Imagick::RESOURCETYPE_WIDTH] = 15 * $k;
}
if (defined('Imagick::RESOURCETYPE_HEIGHT')) {
	$tests[Imagick::RESOURCETYPE_HEIGHT] = 15 * $k;
}

$reflection_class = new ReflectionClass(Imagick::class);
$constants = $reflection_class->getConstants();
$resource_constants = [];
foreach ($constants as $name => $value) {
    if (strpos($name, "RESOURCETYPE") === 0) {
        $resource_constants[$value] = $name;
    }
}


foreach ($tests as $resourceType => $value) {
	Imagick::setResourceLimit($resourceType, $value);
	$actualValue = Imagick::getResourceLimit($resourceType);

	if ($actualValue != $value) {
		$resourceTypeString = $resource_constants[$resourceType];
		echo "Error testing $resourceTypeString, value returned $actualValue is not $value \n";
	}
}

echo 'success';

?>
--EXPECTF--
successPKĉ	[��c���$099_Imagick_oilPaintImage_basic.phptnu�[���--TEST--
Test Imagick, oilPaintImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;

function oilPaintImage($radius) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->oilPaintImage($radius);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

oilPaintImage($radius) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�$�:��018-clone-length.phptnu�[���--TEST--
Test clone length, this is expected upstream behaviour
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc');

checkFormatPresent('png');

$v = imagick::getversion ();

if ($v ['versionNumber'] >= 0x640 && $v ['versionNumber'] < 0x650)
	die ('skip seems to be different in this version of ImageMagick');
?>
--FILE--
<?php

$im = new Imagick ('magick:rose');
$im->setImageFormat ('png');
if ($im->getImageLength()) {
	echo "Image created has length" . PHP_EOL;
}
else {
	echo "Image created has zero length" . PHP_EOL;
}

$cloned = clone $im;
$cloned->setImageFormat ('png');

var_dump ($cloned->getImageLength ());

?>
--EXPECT--
Image created has length
int(0)
PKĉ	[.7T���%033_Imagick_autoLevelImage_basic.phptnu�[���--TEST--
Test Imagick, autoLevelImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');

?>
--FILE--
<?php


function autoLevelImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->autoLevelImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

autoLevelImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�~�;��!136_Imagick_shadeImage_basic.phptnu�[���--TEST--
Test Imagick, shadeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function shadeImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->shadeImage(true, 45, 20);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

shadeImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�_�ss077_Imagick_frameImage_im7.phptnu�[���--TEST--
Test Imagick, frameImageWithComposite
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$color = 'rgba(255,0,255,50)';
$width = 5;
$height = 5;
$innerBevel = 3;
$outerBevel = 3;

function frameImage($color, $width, $height, $innerBevel, $outerBevel, $blendOption) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $width = $width + $innerBevel + $outerBevel;
    $height = $height + $innerBevel + $outerBevel;

    if ($blendOption === null) {
        $imagick->frameimage(
            $color,
            $width,
            $height,
            $innerBevel,
            $outerBevel
        );
    }
    else {
        $imagick->frameImageWithComposite(
                $color,
                $width,
                $height,
                $innerBevel,
                $outerBevel,
                $blendOption
        );
    }

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) {
        echo "Failed to generate image.";
    }

    return $imagick;
}

$blendOptions = [
    "null" => null,
    "COMPOSITE_NO" => Imagick::COMPOSITE_NO,
    "COMPOSITE_BLEND" => Imagick::COMPOSITE_BLEND,
    "COMPOSITE_COPYRED" => Imagick::COMPOSITE_COPYRED,
    "COMPOSITE_ATOP" => Imagick::COMPOSITE_ATOP,
    "COMPOSITE_OVER" => Imagick::COMPOSITE_OVER,
];

foreach ($blendOptions as $name => $blendOption) {
    $imagick = frameImage($color, $width, $height, $innerBevel, $outerBevel, $blendOption) ;
    $filename = "077_frame_" . $name . ".png";
    // $imagick->writeImage($filename);
}

echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�H&__$167_Imagick_vignetteImage_basic.phptnu�[���--TEST--
Test Imagick, vignetteImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$blackPoint = 10;
$whitePoint = 10;
$x = 10;
$y = 10;

function vignetteImage($blackPoint, $whitePoint, $x, $y) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->vignetteImage($blackPoint, $whitePoint, $x, $y);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

vignetteImage($blackPoint, $whitePoint, $x, $y) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�8��246_antialias_image.phptnu�[���--TEST--
Test pseudo formats
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$im = new Imagick();
$im->newPseudoImage(10, 10, "magick:logo");
//On by default
var_export($im->getAntiAlias());
echo PHP_EOL;

//Turn off
$im->setAntiAlias(false);
var_export($im->getAntiAlias());
echo PHP_EOL;

//Turn back on
$im->setAntiAlias(true);
var_export($im->getAntiAlias());
echo PHP_EOL;

?>
--EXPECTF--
true
false
true
PKĉ	[��Y**$043_Imagick_colorizeImage_basic.phptnu�[���--TEST--
Test Imagick, colorizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$color = 'rgb(127, 127, 127)';
$opacity = 100;

function colorizeImage($color, $opacity) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $opacity = $opacity / 255.0;
    $opacityColor = new \ImagickPixel("rgba(0, 0, 0, $opacity)");
    $imagick->colorizeImage($color, $opacityColor);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

colorizeImage($color, $opacity) ;

$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");
$opacity = $opacity / 255.0;
$opacityColor = new \ImagickPixel("rgba(0, 0, 0, $opacity)");
// TODO - legacy mode of setting fraction as transparency needs
// to be removed.
$imagick->colorizeImage($color, 0.5, true);
$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image for legacy mode.";}

echo "Ok";
?>
--EXPECTF--
OkPKĉ	[u�<��064_cropThumbNailImage.phptnu�[���--TEST--
Test for round issues
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc'); 
if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
?>
--FILE--
<?php

//Test the the calculated values are actually correct.
$desired_height = 250;
$imageWidth = 1128;

//Test the the calculated values are actually correct.
$desired_height = 250;
$imageWidth = 1128;
$imageHeight = 1128;

$legacySettings = array(0, 1);

foreach($legacySettings as $legacy) {
	for ($desired_width = 245; $desired_width < 255; $desired_width++) {
		$imagick = new Imagick();
		$imagick->newPseudoImage($imageWidth, $imageHeight, 'xc:white');

		$imagick->cropThumbnailImage(
			$desired_width, $desired_height,
			$legacy
		);
		$error = false;

		$thumbnailImageWidth = $imagick->getImageWidth();
		$thumbnailImageHeight = $imagick->getImageHeight();

		if ($thumbnailImageHeight != $desired_height) {
			echo "Incorrect height for desired_width $desired_width imageHeight $imageHeight".PHP_EOL;
			$error = true;
		}

		$expectedWidth = $desired_width;
		$expectedHeight = $desired_height;

		if ($legacy == true && 
			$desired_width == 250 &&
			$desired_height == 250) {
			// Thumbnail size of 249 x 250 does not matched desired size 250 x 250 for source image of 1128 x 1128
			$expectedWidth = 249;
		}

		if ($thumbnailImageWidth != $expectedWidth) {
			echo "Incorrect width for desired_width $desired_width imageHeight $imageHeight".PHP_EOL;
			$error = true;
		}

		if ($thumbnailImageHeight != $expectedHeight) {
			echo "Incorrect width for desired_width $desired_width imageHeight $imageHeight".PHP_EOL;
			$error = true;
		}

		if ($error) {
			printf(
				"Thumbnail size of %d x %d does not matched expected size %d x %d for source image of %d x %d. Legacy is %d\n",
				$thumbnailImageWidth, $thumbnailImageHeight,
				$desired_width, $desired_height,
				$imageWidth, $imageHeight,
				$legacy
			);
		}
	}
}


echo "Done" . PHP_EOL;

?>
--EXPECTF--
DonePKĉ	[�j�N��"176_ImagickDraw_ellipse_basic.phptnu�[���--TEST--
Test ImagickDraw, ellipse
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function ellipse($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->ellipse(125, 70, 100, 50, 0, 360);
    $draw->ellipse(350, 70, 100, 50, 0, 315);

    $draw->push();
    $draw->translate(125, 250);
    $draw->rotate(30);
    $draw->ellipse(0, 0, 100, 50, 0, 360);
    $draw->pop();

    $draw->push();
    $draw->translate(350, 250);
    $draw->rotate(30);
    $draw->ellipse(0, 0, 100, 50, 0, 315);
    $draw->pop();

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

ellipse($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�6���274_imagick_setImageAlpha.phptnu�[���--TEST--
Imagick::setImageAlpha
--SKIPIF--
<?php 
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php

require_once __DIR__ . "/../util/functions.php";

$imagick = new Imagick();
$imagick->newPseudoImage(256, 256, 'xc:purple');
$imagick->setImageAlpha(0.5);

$imagick->setImageFormat('png');
$imagick->writeImage(__DIR__ . "/setAlphaTest.png");

$pixelTypes = array(
	Imagick::PIXEL_CHAR => array(128, 0, 128, 128),
	Imagick::PIXEL_FLOAT => array(0.50196081399918, 0, 0.50196081399918, 0.5),
    Imagick::PIXEL_DOUBLE => array(0.50196078431373, 0, 0.50196078431373, 0.5),
	Imagick::PIXEL_SHORT => array(32896, 0, 32896, 32768),
);

function getColorError($type, $expected, $actual) {

    if ($type == Imagick::PIXEL_CHAR ||
        $type == Imagick::PIXEL_SHORT) {
        $string  = "Expected: " . $actual . "\n";
        $string .= "Actual  : " . $actual . "\n";

        return $string;
    }

    if ($type == Imagick::PIXEL_FLOAT) {
        return float_compare_32($expected, $actual);
    }

    if ($type == Imagick::PIXEL_DOUBLE) {
        return float_compare($expected, $actual);
    }

    echo "Unknown type: $type \n";
    exit(-1);
}


foreach ($pixelTypes as $pixelType => $expectedValues) {
	$pixels = $imagick->exportImagePixels(0, 0, 1, 1, "RGBA", $pixelType);
	$channelNames = ['R', 'G', 'B', 'A'];

	// Loop over the colours
	for ($channel = 0; $channel < 4; $channel++) {
		$actual = $pixels[$channel];
		$expected = $expectedValues[$channel];
		if (abs($actual - $expected) > get_epsilon_for_off_by_half_errors()) {
		    $channelName = $channelNames[$channel];

			echo "Pixel values appear incorrect for pixelType $pixelType channel:$channelName\n";
            echo getColorError($pixelType, $expected, $actual);
			break;
		}
	}
}

echo "Ok";

?>
--CLEAN--
<?php
$f = __DIR__ . '/setAlphaTest.png';
if (file_exists($f)) {
    @unlink($f);
}
?>
--EXPECTF--
Ok
PKĉ	[J
d�~~=182_ImagickDraw_pathCurveToQuadraticBezierAbsolute_basic.phptnu�[���--TEST--
Test ImagickDraw, pathCurveToQuadraticBezierAbsolute
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function pathCurveToQuadraticBezierAbsolute($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50,250);

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is the first two params, and the end point is the last two params.
    $draw->pathCurveToQuadraticBezierAbsolute(
        150,50, 
        250,250
    );

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is mirrored from the previous curves control point
    // and the end point is defined by the x, y values.
    $draw->pathCurveToQuadraticBezierSmoothAbsolute(
        450,250
    );

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is mirrored from the previous curves control point
    // and the end point is defined relative from the current position by the x, y values.
    $draw->pathCurveToQuadraticBezierSmoothRelative(
        200,-100
    );

    $draw->pathFinish();

    $imagick = new \Imagick();
    $imagick->newImage(700, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

}

pathCurveToQuadraticBezierAbsolute($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[d���[[#107_Imagick_recolorImage_basic.phptnu�[���--TEST--
Test Imagick, recolorImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('recolorImage'));
?>
--FILE--
<?php


function recolorImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $remapColor = array(
        1, 0, 0,
        0, 0, 1,
        0, 1, 0,
    );

    @$imagick->recolorImage($remapColor);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

recolorImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[z�&192_ImagickDraw_setClipPath_basic.phptnu�[���--TEST--
Test ImagickDraw, setClipPath
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setClipPath($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $clipPathName = 'testClipPath';

    $draw->pushClipPath($clipPathName);
    $draw->rectangle(0, 0, 250, 250);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);
    $draw->rectangle(100, 100, 400, 400);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setClipPath($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�ugG%%191_ImagickDraw_push_basic.phptnu�[���--TEST--
Test ImagickDraw, push
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$fillModifiedColor = 'LightCoral';

function push($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillModifiedColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->push();
    $draw->translate(50, 50);
    $draw->rectangle(200, 200, 300, 300);
    $draw->pop();
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

push($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[���K��311_Imagick_channelFxImage.phptnu�[���--TEST--
Test Imagick, channelFxImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('channelFxImage'));
?>
--FILE--
<?php

// MagickChannelFxImage() applies a channel expression to the specified image.
// The expression consists of one or more channels, either mnemonic or numeric
// (e.g. red, 1), separated by actions as follows:
//
//   <=>     exchange two channels (e.g. red<=>blue)
//   =>      transfer a channel to another (e.g. red=>green)
//   ,       separate channel operations (e.g. red, green)
//   |       read channels from next input image (e.g. red | green)
//   ;       write channels to next output image (e.g. red; green; blue)

function whiteBalanceImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $result = $imagick->channelFxImage("red<=>blue");
    //    $result->writeImage(__DIR__ . '/complexImages_output_image.png');

    $result->getImageBlob();
}

whiteBalanceImage() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKĉ	[ӌn��!114_Imagick_scaleImage_basic.phptnu�[���--TEST--
Test Imagick, scaleImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


$tests = array(
    array(200, 200, true, 200, 150),
    array(200, 200, false, 200, 200),
    array(200, 0, false, 200, 150),
);

foreach ($tests as $test) {
    list($width, $height, $bestFit, $expectedWidth, $expectedHeight) = $test;

    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->scaleImage($width, $height, $bestFit);

	$imageWidth = $imagick->getImageWidth();
	$imageHeight = $imagick->getImageHeight();

	$error = false;

	if ($imageWidth != $expectedWidth) {
		echo "Width $imageWidth does not match expected.\n";
		$error = true;
	}

	if ($imageHeight != $expectedHeight) {
		echo "Height $imageHeight does not match expected.\n";
		$error = true;
	}

	if ($error) {
		echo "test was ".var_export($test, true)."\n";
	};
}


echo "Ok";
?>
--EXPECTF--
OkPKĉ	[M�um#184_ImagickDraw_polyline_basic.phptnu�[���--TEST--
Test ImagickDraw, polyline
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function polyline($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(5);

    $points = array(
        array('x' => 40 * 5, 'y' => 10 * 5),
        array('x' => 20 * 5, 'y' => 20 * 5),
        array('x' => 70 * 5, 'y' => 50 * 5),
        array('x' => 60 * 5, 'y' => 15 * 5)
    );

    $draw->polyline($points);

    $image = new \Imagick();
    $image->newImage(500, 300, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

polyline($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�;9�
�

skipif.incnu�[���<?php

if (!extension_loaded("imagick")) die("skip imagick not loaded");

require_once(dirname(__FILE__) . '/functions.inc');

if (isset($imageMagickRequiredVersion)) {
	$versionInfo = \Imagick::getVersion();

	if (array_key_exists("versionNumber", $versionInfo) == false) {
		die("skip unable to determine ImageMagick version.");
	}

	$versionInstalled = $versionInfo["versionNumber"];

	if ($versionInstalled < $imageMagickRequiredVersion) {
		$message = sprintf(
			"skip ImageMagick installed %x <= required %x",
			$versionInstalled,
			$imageMagickRequiredVersion
		);
		die($message);
	}
}


if (isset($imageMagickBelowVersion)) {
	$versionInfo = \Imagick::getVersion();

	if (array_key_exists("versionNumber", $versionInfo) == false) {
		die("skip unable to determine ImageMagick version.");
	}

	$versionInstalled = $versionInfo["versionNumber"];

	if ($versionInstalled >= $imageMagickBelowVersion) {
		$message = sprintf(
			"skip ImageMagick installed %x >= limit check %x",
			$versionInstalled,
			$imageMagickBelowVersion
		);
		die($message);
	}
}


if (isset($imageMagickBelowVersion)) {
	$versionInfo = \Imagick::getVersion();

	if (array_key_exists("versionNumber", $versionInfo) == false) {
		die("skip unable to determine ImageMagick version.");
	}

	$versionInstalled = $versionInfo["versionNumber"];

	if ($versionInstalled >= $imageMagickBelowVersion) {
		$message = sprintf(
			"skip ImageMagick installed %x >= %x",
			$versionInstalled,
			$imageMagickBelowVersion
		);
		die($message);
	}
}

function checkClassMethods($class, $methods)
{
	foreach ($methods as $method) {
		if (method_exists($class, $method) == false) {
			die("skip Class method $class::$method not present");
		}
	}
}

function checkFormatPresent($format)
{
	$result = Imagick::queryFormats(strtoupper($format));
	if (count($result) == false) {
		die("skip format $format not supported by ImageMagick as compiled.");
	}
}

function requirePHP($required)
{
	if (version_compare(PHP_VERSION, $required) < 0) {
		die("skip PHP version $required required, but have ".PHP_VERSION.".");
	}
}

function requireFormat($requiredFormat)
{
	$formats = \Imagick::queryformats();

	foreach ($formats as $format) {
		if (strcasecmp($format, $requiredFormat) === 0) {
			return;
		}
	}

	die("skip test suite requires format $requiredFormat but not available");
}

requireFormat("png");
requireFormat("jpg");

if (isset($minimumVersions) === true) {
    if (isVersionGreaterEqual($minimumVersions[0], $minimumVersions[1]) !== true) {

        $message = sprintf(
            "skip either version '%s' or '%s' is minimum reliable for test.\n",
            $minimumVersions[0],
            $minimumVersions[1]
        );

        die($message);
    }
}

?>
PKĉ	[Y�9���3057_Imagick_distortImage_PerspectiveProjection.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        //X-of-destination = (sx*xs + ry+ys +tx) / (px*xs + py*ys +1)
        //Y-of-destination = (rx*xs + sy+ys +ty) / (px*xs + py*ys +1)

        // sx   ry   tx
        // rx   sy   ty
        // px   py
        
        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array(
            1.945622, 0.071451, 
            -12.187838, 0.799032, 
            1.276214, -24.470275, 0.006258, 0.000715
        );
        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
        $imagick->distortImage(\Imagick::DISTORTION_PERSPECTIVEPROJECTION, $points, TRUE);
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�l����$034_Imagick_annotateImage_basic.phptnu�[���--TEST--
Test Imagick, annotateImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'rgb(232, 227, 232)';

function annotateImage($strokeColor, $fillColor) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(1);
    $draw->setFontSize(36);
    
    $text = "Imagick is a native php \nextension to create and \nmodify images using the\nImageMagick API.";

    setFontForImagick($imagick);
    setFontForImagickDraw($draw);
    $imagick->annotateimage($draw, 40, 40, 0, $text);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

annotateImage($strokeColor, $fillColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[:���+240_Tutorial_imagickCompositeGen_basic.phptnu�[���--TEST--
Test Tutorial, imagickCompositeGen
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$contrast = 10;
$blendMidpoint = 0.5;

function generateBlendImage($height, $overlap, $contrast = 10, $midpoint = 0.5) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage($height, $overlap, 'gradient:black-white');
    $quantum = $imagick->getQuantum();
    $imagick->sigmoidalContrastImage(true, $contrast, $midpoint * $quantum);

    return $imagick;
}


function mergeImages($outputSize, $overlap, $contrast = 10, $blendMidpoint = 0.5, $horizontal = true) {

    $images = array();
    $newImageWidth = 0;
    $newImageHeight = 0;

    if ($horizontal == true) {
        $resizeWidth = 0;
        $resizeHeight = $outputSize;
    }
    else {
        $resizeWidth = $outputSize;
        $resizeHeight = 0;
    }

    $blendWidth = 0;

    $srcImages = array(1, 2, 3);

    foreach ($srcImages as $srcImage) {
        $nextImage = new \Imagick();
        $nextImage->newPseudoImage(640, 480, "magick:logo");
        
        
        $nextImage->resizeImage($resizeWidth, $resizeHeight, \Imagick::FILTER_LANCZOS, 0.5);

        if ($horizontal == true) {
            $newImageWidth += $nextImage->getImageWidth();
            $blendWidth = $nextImage->getImageHeight();
        }
        else {
            //$newImageWidth = $nextImage->getImageWidth();
            $blendWidth = $nextImage->getImageWidth();
            $newImageHeight += $nextImage->getImageHeight();
        }

        $images[] = $nextImage;
    }

    if ($horizontal == true) {
        $newImageWidth -= $overlap * (count($srcImages) - 1);
        $newImageHeight = $outputSize;
    }
    else {
        $newImageWidth = $outputSize;
        $newImageHeight -= $overlap * (count($srcImages) - 1);
    }

    if ($blendWidth == 0) {
        throw new \Exception("Failed to read source images");
    }

    $fadeLeftSide = generateBlendImage($blendWidth, $overlap, $contrast, $blendMidpoint);

    if ($horizontal == true) {
        //We are placing the images horizontally.
        $fadeLeftSide->rotateImage('black', -90);
    }

    //Fade out the left part - need to negate the mask to
    //make math correct
    $fadeRightSide = clone $fadeLeftSide;
    $fadeRightSide->negateimage(false);

    //Create a new canvas to render everything in to.
    $canvas = new \Imagick();
    $canvas->newImage($newImageWidth, $newImageHeight, new \ImagickPixel('black'));

    $count = 0;

    $imagePositionX = 0;
    $imagePositionY = 0;

    /** @var $image \Imagick */
    foreach ($images as $image) {
        $finalBlending = new \Imagick();
        $finalBlending->newImage($image->getImageWidth(), $image->getImageHeight(), 'white');

        if ($count != 0) {
            $finalBlending->compositeImage($fadeLeftSide, \Imagick::COMPOSITE_ATOP, 0, 0);
        }

        $offsetX = 0;
        $offsetY = 0;

        if ($horizontal == true) {
            $offsetX = $image->getImageWidth() - $overlap;
        }
        else {
            $offsetY = $image->getImageHeight() - $overlap;
        }

        if ($count != count($images) - 1) {
            $finalBlending->compositeImage($fadeRightSide, \Imagick::COMPOSITE_ATOP, $offsetX, $offsetY);
        }

        $image->compositeImage($finalBlending, \Imagick::COMPOSITE_COPYOPACITY, 0, 0);
        $canvas->compositeimage($image, \Imagick::COMPOSITE_BLEND, $imagePositionX, $imagePositionY);

        if ($horizontal == true) {
            $imagePositionX = $imagePositionX + $image->getImageWidth() - $overlap;
        }
        else {
            $imagePositionY = $imagePositionY + $image->getImageHeight() - $overlap;
        }
        $count++;
    }

    return $canvas;
}

function imagickCompositeGen($contrast = 10, $blendMidpoint = 0.5) {

    $size = 160;

    //Load the images 
    $output = mergeImages(
        $size,
        0.2 * $size, //overlap
        $contrast,
        $blendMidpoint,
        true);

    //$output = generateBlendImage(200, 200, 5, 0.5);
    $output->setImageFormat('png');

    $bytes = $output->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

imagickCompositeGen($contrast = 10, $blendMidpoint = 0.5) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�����308_Imagick_levelizeImage.phptnu�[���--TEST--
Test Imagick, levelizeImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('levelizeImage'));
?>
--FILE--
<?php


function levelizeImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->levelizeImage(0.1, 2.0, 0.95);
//    $imagick->writeImage(__DIR__ . '/claheImage_output_image.png');
    $imagick->getImageBlob();
}

levelizeImage();
echo "Ok";
?>
--EXPECTF--
Ok
PKĉ	[�����/161_Imagick_transformImageColorspace_basic.phptnu�[���--TEST--
Test Imagick, transformImageColorspace
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$colorSpace = 1;
$channel = Imagick::CHANNEL_DEFAULT;

function transformImageColorspace($colorSpace, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->transformimagecolorspace($colorSpace);
    $imagick->separateImageChannel($channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

transformImageColorspace($colorSpace, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[���̚�.038_Imagick_brightnessContrastImage_basic.phptnu�[���--TEST--
Test Imagick, brightnessContrastImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$brightness = -20;
$contrast = -20;
$channel = Imagick::CHANNEL_DEFAULT;

function brightnessContrastImage($brightness, $contrast, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->brightnessContrastImage($brightness, $contrast, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

brightnessContrastImage($brightness, $contrast, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[_�'285_ini_settings_set_truthy_string.phptnu�[���--TEST--
OpenMP segfault hacks

--INI--
imagick.shutdown_sleep_count=On
imagick.set_single_thread=On
--SKIPIF--
<?php 


require_once(dirname(__FILE__) . '/skipif.inc');
 
?>
--FILE--
<?php


$sleepCount = intval(ini_get('imagick.shutdown_sleep_count'));
$setSingleThread = ini_get('imagick.set_single_thread');

if ($sleepCount != 1) {
    echo "imagick.shutdown_sleep_count is not set to 1 but instead " . var_export($sleepCount, true) ."\n";
}

if ($setSingleThread != 1) {
    echo "imagick.set_single_thread setting is not true but instead " . var_export($setSingleThread, true) ."\n";
}


echo "Complete".PHP_EOL;
?>
--EXPECTF--
Complete
PKĉ	[��Mx��!087_Imagick_levelImage_basic.phptnu�[���--TEST--
Test Imagick, levelImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$blackPoint = 50;
$whitePoint = 100;
$gamma = 2.2;

function levelImage($blackPoint, $gamma, $whitePoint) {
    $imagick = new \Imagick();
    $imagick->newPseudoimage(500, 500, 'gradient:black-white');

    $imagick->setFormat('png');
    $quantum = $imagick->getQuantum();
    $imagick->levelImage($blackPoint / 100 , $gamma, $quantum * $whitePoint / 100);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

levelImage($blackPoint, $gamma, $whitePoint) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[B�|���022-writeimagefileformat.phptnu�[���--TEST--
Test format support in writeImageFile
--SKIPIF--
<?php 
	require_once(dirname(__FILE__) . '/skipif.inc'); 
	checkFormatPresent('png');
	checkFormatPresent('jpg');
?>
--FILE--
<?php

define ("JPEG_FILE", dirname (__FILE__) . "/imagick_test.jpg");
define ("PNG_FILE",dirname (__FILE__) . "/imagick_test.png");

$im = new imagick ('magick:rose');
$im->writeImage (JPEG_FILE);
$im->clear ();

// This is the problematic case, setImageFormat doesn't really
// affect writeImageFile. 
// So in this case we want to write PNG but file should come out
// as JPEG
$fp = fopen (PNG_FILE, "w+");
$im->readImage (JPEG_FILE);
$im->setImageFormat ('png');
$im->writeImageFile ($fp);
$im->clear ();
fclose ($fp);

// Output the format
$identify = new Imagick (PNG_FILE);
echo $identify->getImageFormat () . PHP_EOL;

// Lets try again, setting the filename rather than format
// This should cause PNG image to be written
$fp = fopen (PNG_FILE, "w+");
$im->readImage (JPEG_FILE);
$im->setImageFilename ('png:');
$im->writeImageFile ($fp);
$im->clear ();
fclose ($fp);

// If all goes according to plan, on second time we should get PNG
$identify = new Imagick (PNG_FILE);
echo $identify->getImageFormat () . PHP_EOL;

// Lastly, test the newly added format parameter
$fp = fopen (PNG_FILE, "w+");
$im->readImage (JPEG_FILE);
$im->writeImageFile ($fp, 'png');
$im->clear ();
fclose ($fp);

// If all goes according to plan, on second time we should get PNG
$identify = new Imagick (PNG_FILE);
echo $identify->getImageFormat () . PHP_EOL;

unlink (PNG_FILE);
unlink (JPEG_FILE);

echo 'done' . PHP_EOL;
?>
--CLEAN--
<?php
@unlink(dirname (__FILE__) . "/imagick_test.jpg");
@unlink(dirname (__FILE__) . "/imagick_test.png");
?>
--EXPECT--
JPEG
PNG
PNG
donePKĉ	[96W���253_getHdri.phptnu�[���--TEST--
Test ImagickPixelIterator, construct
--SKIPIF--
<?php

require_once(dirname(__FILE__) . '/skipif.inc');

checkClassMethods('Imagick', array('getHDRIEnabled'));


?>
--FILE--
<?php

$enabled = Imagick::getHDRIEnabled();

if ($enabled === true || $enabled === false) {
    echo "Ok";
}
else {
    echo "Unexpected value for Imagick::getHDRIEnabled:\n";
    var_dump($enabled);
}

?>
--EXPECTF--
OkPKĉ	[V�b�..%226_ImagickDraw_setViewBox_basic.phptnu�[���--TEST--
Test ImagickDraw, setViewBox
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setViewBox($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    /*
     
    Sets the overall canvas size to be recorded with the drawing vector data. Usually this will be specified using the same size as the canvas image. When the vector data is saved to SVG or MVG formats, the viewbox is use to specify the size of the canvas image that a viewer will render the vector data on.
    
     */

    $draw->circle(250, 250, 250, 0);
    $draw->setviewbox(0, 0, 200, 200);
    $draw->circle(125, 250, 250, 250);
    $draw->translate(250, 125);
    $draw->circle(0, 0, 125, 0);


    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setViewBox($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[I%rkk&199_ImagickDraw_setClipRule_basic.phptnu�[���--TEST--
Test ImagickDraw, setClipRule
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setClipRule($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);
    //\Imagick::FILLRULE_EVENODD
    //\Imagick::FILLRULE_NONZERO

    $clipPathName = 'testClipPath';
    $draw->pushClipPath($clipPathName);
    $draw->setClipRule(\Imagick::FILLRULE_EVENODD);

    $draw->rectangle(0, 0, 300, 500);
    $draw->rectangle(200, 0, 500, 500);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);
    $draw->rectangle(200, 200, 300, 300);
    
    $clipRule = $draw->getClipRule();
    if ($clipRule != \Imagick::FILLRULE_EVENODD) {
        echo "Failed to get correct clipRule $clipRule != \Imagick::FILLRULE_EVENODD \n";
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setClipRule($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[T��WW*166_Imagick_waveImageWithMethod_basic.phptnu�[���--TEST--
Test Imagick, waveImageWithMethod
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$amplitude = 5;
$length = 20;

function waveImageWithMethod($amplitude, $length) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->waveImageWithMethod($amplitude, $length, Imagick::INTERPOLATE_BILINEAR);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

waveImageWithMethod($amplitude, $length) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[H??!137_Imagick_shearImage_basic.phptnu�[���--TEST--
Test Imagick, shearImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$shearX = 15;
$shearY = 5;
$color = 'rgb(127, 127, 127)';

function shearImage($color, $shearX, $shearY) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->shearimage($color, $shearX, $shearY);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

shearImage($color, $shearX, $shearY) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[\�0cc*125_Imagick_setImageOrientation_basic.phptnu�[���--TEST--
Test Imagick, setImageOrientation
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$orientationType = \Imagick::ORIENTATION_LEFTTOP;

//Doesn't appear to do anything
function setImageOrientation($orientationType) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setImageOrientation($orientationType);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setImageOrientation($orientationType) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[��>�;;317_Imagick_getImageMean.phptnu�[���--TEST--
Test Imagick, getImageMean
--SKIPIF--
<?php
// mean calculation seems unstable on earlier versions
// lets only check modern versions, and see if it breaks
$imageMagickRequiredVersion=0x710;
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getImageMean'));
?>
--FILE--
<?php

require_once(__DIR__ . '/functions.inc');

function getImageMean() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $values = $imagick->getImageMean();

    check_value_with_epsilon($values, "mean", 29267.518515000003, 0.2);
    check_value_with_epsilon($values, "standard_deviation", 18075.35838235082, 0.2);
}

getImageMean();
echo "Ok";
?>
--EXPECTF--
Value for 'mean' is %f which is close enough to expected %f
Value for 'standard_deviation' is %f which is close enough to expected %f
Ok
PKĉ	[�N�||026_phpinfo.phptnu�[���--TEST--
Test Imagick module hasn't broken phpinfo
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

ob_start();
phpinfo();
$contents = ob_get_contents();
ob_end_clean();

if (strpos($contents, 'imagick module => enabled') !== false) {
	echo "Ok";
}
else {
	echo "Imagick was not reported as enabled?";
	var_dump($contents);
}

?>
--EXPECTF--
OkPKĉ	[6���!174_ImagickDraw_affine_basic.phptnu�[���--TEST--
Test ImagickDraw, affine
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function affine($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);

    $PI = 3.141592653589794;
    $angle = 60 * $PI / 360;

    //Scale the drawing co-ordinates.
    $affineScale = array("sx" => 1.75, "sy" => 1.75, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0);

    //Shear the drawing co-ordinates.
    $affineShear = array("sx" => 1, "sy" => 1, "rx" => sin($angle), "ry" => -sin($angle), "tx" => 0, "ty" => 0);

    //Rotate the drawing co-ordinates. The shear affine matrix
    //produces incorrectly scaled drawings.
    $affineRotate = array("sx" => cos($angle), "sy" => cos($angle), "rx" => sin($angle), "ry" => -sin($angle), "tx" => 0, "ty" => 0,);

    //Translate (offset) the drawing
    $affineTranslate = array("sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 30, "ty" => 30);

    //The identiy affine matrix
    $affineIdentity = array("sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0);

    $examples = array($affineScale, $affineShear, $affineRotate, $affineTranslate, $affineIdentity,);

    $count = 0;

    foreach ($examples as $example) {
        $draw->push();
        $draw->translate(($count % 2) * 250, intval($count / 2) * 250);
        $draw->translate(100, 100);
        $draw->affine($example);
        $draw->rectangle(-50, -50, 50, 50);
        $draw->pop();
        $count++;
    }

    //Create an image object which the draw commands can be rendered into
    $image = new \Imagick();
    $image->newImage(500, 750, $backgroundColor);
    $image->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object 
    //into the image.
    $image->drawImage($draw);

    //Send the image to the browser
    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

affine($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[U9uv&102_Imagick_radialBlurImage_basic.phptnu�[���--TEST--
Test Imagick, radialBlurImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('radialBlurImage'));
?>
--FILE--
<?php


function radialBlurImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->radialBlurImage(3);
    $imagick->radialBlurImage(5);
    $imagick->radialBlurImage(7);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

radialBlurImage() ;
echo "Ok";
?>
--EXPECTF--
Deprecated: %s Imagick::radialBlurImage() is deprecated in %s

Deprecated: %s Imagick::radialBlurImage() is deprecated in %s

Deprecated: %s Imagick::radialBlurImage() is deprecated in %s
Ok
PKĉ	[9l����
bug20636.phptnu�[���--TEST--
Test PECL bug #20636
--SKIPIF--
<?php

$imageMagickRequiredVersion=0x680;

require_once(dirname(__FILE__) . '/skipif.inc'); 

checkClassMethods('Imagick', array('roundCorners'));

?>
--FILE--
<?php
// This test fails to work as expected on 32bit Ubuntu. Instead of the
// image being created and then roundCorners failing, instead the image
// fails to be created with the error message "unable to acquire cache 
// view `No such file or directory' @ 
// fatal/cache-view.c/AcquireAuthenticCacheView/121"

$image = new Imagick();
$image->newImage(0, 0, '#dddddd', 'png' );

try {
    $image->roundCorners(5, 5);
    echo "fail\n";
} catch (ImagickException $e) {
    echo "success\n";
}

?>
--EXPECTF--
success
PKĉ	[�,o�~~318_Imagick_getImageRange.phptnu�[���--TEST--
Test Imagick, getImageRange
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getImageRange'));
?>
--FILE--
<?php

require_once(__DIR__ . '/functions.inc');

function getImageRange() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(320, 240, "gradient:red-blue");
    $values = $imagick->getImageRange();

    check_value($values, "minima", 0);
    check_value($values, "maxima", 65535.0);
}

getImageRange() ;
echo "Ok";
?>
--EXPECTF--
Value for 'minima' is %f which is close enough to expected %f
Value for 'maxima' is %f which is close enough to expected %f
Ok
PKĉ	[���@@005_bestfit.phptnu�[���--TEST--
Test thumbnail bestfit
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$im = new Imagick();
$im->newImage(50, 100, 'white');

$im->thumbnailImage(100, 50, true);
var_dump($im->getImageGeometry());

?>
--EXPECTF--
array(2) {
  ["width"]=>
  int(25)
  ["height"]=>
  int(50)
}PKĉ	[��c���%065_Imagick_despeckleImage_basic.phptnu�[���--TEST--
Test Imagick, despeckleImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function despeckleImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->despeckleImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

despeckleImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[мx�  297_Imagick_meanShiftImage.phptnu�[���--TEST--
Test Imagick, meanShiftImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('meanShiftImage'));
?>
--FILE--
<?php


function meanShiftImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->meanShiftImage(
		10,
		10,
		5
	);

    $imagick->writeImage(__DIR__ . '/meanShiftImage_output_image.png');
//    $imagick->getImageBlob();
}

meanShiftImage() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/meanShiftImage_output_image.png');
?>
--EXPECTF--
Ok
PKĉ	[�E�'��%158_Imagick_transposeImage_basic.phptnu�[���--TEST--
Test Imagick, transposeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function transposeImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->transposeImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

transposeImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[)�(�>>$270_imagick_restoreErrorHandler.phptnu�[���--TEST--
Imagick don't borg the error handler
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
error_reporting( E_ALL ); 

ini_set( "display_errors", true );

try {
    $f = new Imagick('http://any/url/here');
}
catch(ImagickException $ie) {
    echo "Normal exception".PHP_EOL;
}

try {
	$x = @file ('non_existent_file');
	echo "Normal warning is suppressed".PHP_EOL;
}
catch(\Exception $e) {
	echo "Abnormal exception of type: ".get_class($e)."\n";
	echo $e->getMessage();
}

?>
--EXPECTF--
Normal exception
Normal warning is suppressed
PKĉ	[cvח��291_reflection.phptnu�[���--TEST--
Test that reflection can get default values
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$class_list = [
    'Imagick',
    'ImagickDraw',
    'ImagickPixel',
    'ImagickPixelIterator',
];

if (class_exists('ImagickKernel') === true) {
    $class_list[] = 'ImagickKernel';
}

foreach ($class_list as $class) {
    $rc = new ReflectionClass($class);
    foreach ($rc->getMethods() as $reflectionMethod) {
        $parameters = $reflectionMethod->getParameters();
        foreach ($parameters as $parameter) {
            if ($parameter->isDefaultValueAvailable() !== true) {
                continue;
            }

            try {
                $value = $parameter->getDefaultValue();
            }
            catch (ReflectionException $re) {
                $method_name = $reflectionMethod->getName();
                echo "Exception for $class::$method_name : " . $re->getMessage() . "\n";
            }
        }
    }
}

echo "Ok";
?>
--EXPECTF--
Ok

PKĉ	[ܷr���%319_Imagick_getInterpolateMethod.phptnu�[���--TEST--
Test Imagick, getInterpolateMethod/setInterpolateMethod
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getInterpolateMethod'));
?>
--FILE--
<?php

function getInterpolateMethod() {
    $imagick = new \Imagick();


    $value = $imagick->getInterpolateMethod();
    echo "Interpolate method is " . $value . "\n";
    $imagick->newPseudoImage(640, 480, "gradient:red-blue");

    $imagick->setInterpolateMethod(Imagick::INTERPOLATE_BILINEAR);

    $value = $imagick->getInterpolateMethod();
    echo "Interpolate method is now " . $value . "\n";
}

getInterpolateMethod() ;
echo "Ok";
?>
--EXPECTF--
Interpolate method is 0
Interpolate method is now 5
Ok
PKĉ	[E�n..-216_ImagickDraw_setStrokeDashArray_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeDashArray
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeDashArray($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(4);

    $draw->setStrokeDashArray(array(10, 10));
    $draw->rectangle(100, 50, 225, 175);

    $draw->setStrokeDashArray(array(20, 5, 20, 5, 5, 5,));
    $draw->rectangle(275, 50, 400, 175);

    $draw->setStrokeDashArray(array(20, 5, 20, 5, 5));
    $draw->rectangle(100, 200, 225, 350);

    $draw->setStrokeDashArray(array(1, 1, 1, 1, 2, 2, 3, 3, 5, 5, 8, 8, 13, 13, 21, 21, 34, 34, 55, 55, 89, 89, 144, 144, 233, 233, 377, 377, 610, 610, 987, 987, 1597, 1597, 2584, 2584, 4181, 4181,));

    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeDashArray($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�m7�>>255_getFeatures.phptnu�[���--TEST--
Test Imagick::getfeatures
--SKIPIF--
<?php

require_once(dirname(__FILE__) . '/skipif.inc');

checkClassMethods('Imagick', array('getfeatures'));


?>
--FILE--
<?php

$features = Imagick::getFeatures();

if (!is_string($features)) {
	echo "Features failed to return a string";
}

echo "Ok";

?>
--EXPECTF--
OkPKĉ	[���� 109_Imagick_rollImage_basic.phptnu�[���--TEST--
Test Imagick, rollImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$rollX = 100;
$rollY = 100;

function rollImage($rollX, $rollY) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->rollimage($rollX, $rollY);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

rollImage($rollX, $rollY) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[���1$099_Imagick_oilPaintImage_sigma.phptnu�[���--TEST--
Test Imagick, oilPaintImageWithSigma
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;

function oilPaintImage($radius) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->oilPaintImageWithSigma($radius, 2.0);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
}

oilPaintImage($radius) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[��:l��&094_Imagick_motionBlurImage_basic.phptnu�[���--TEST--
Test Imagick, motionBlurImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 20;
$sigma = 20;
$angle = 45;
$channel = Imagick::CHANNEL_DEFAULT;

function motionBlurImage($radius, $sigma, $angle, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->motionBlurImage($radius, $sigma, $angle, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

motionBlurImage($radius, $sigma, $angle, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�'�L290_imagick_profileimage.phptnu�[���--TEST--
Imagick::profileImage test
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$imagick = new Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");
$imagick->profileImage('*', null);

echo "Ok";
?>
--EXPECTF--
OkPKĉ	[l�^S""+116_Imagick_separateImageChannel_basic.phptnu�[���--TEST--
Test Imagick, separateImageChannel
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$channel = Imagick::CHANNEL_DEFAULT;

function separateImageChannel($channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->separateimagechannel($channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

separateImageChannel($channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[u
"C))002_thumbnail.phptnu�[���--TEST--
Different types of thumbnailing
--SKIPIF--
<?php require_once dirname(__FILE__) . '/skipif.inc'; ?>
--FILE--
<?php
echo "--- Source Image: 400x200, Imagick::thumbnailImage( 100, null, false )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
$imagick->thumbnailImage( 100, null, false );
$g = $imagick->getImageGeometry();
echo "{$g['width']}x{$g['height']}\n";

echo "--- Source Image: 400x200, Imagick::thumbnailImage( null, 100, false )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
$imagick->thumbnailImage( null, 100, false );
$g = $imagick->getImageGeometry();
echo "{$g['width']}x{$g['height']}\n";

echo "--- Source Image: 400x200, Imagick::thumbnailImage( 100, 100, false )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
$imagick->thumbnailImage( 100, 100, false);
$g = $imagick->getImageGeometry();
echo "{$g['width']}x{$g['height']}\n";

echo "--- Source Image: 400x200, Imagick::thumbnailImage( null, null, false )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
try
{
	$imagick->thumbnailImage( null, null, false );
	echo "FAILED TEST\n";
}
catch ( ImagickException $e )
{
	echo $e->getMessage() . "\n";
}

echo "--- Source Image: 400x200, Imagick::thumbnailImage( 100, 100, true )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
$imagick->thumbnailImage( 100, 100, true );
$g = $imagick->getImageGeometry();
echo "{$g['width']}x{$g['height']}\n";

echo "--- Source Image: 400x200, Imagick::thumbnailImage( 100, null, true )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
try
{
	$imagick->thumbnailImage( 100, null, true );
	echo "FAILED TEST\n";
}
catch ( ImagickException $e )
{
	echo $e->getMessage() . "\n";
}

echo "--- Source Image: 400x200, Imagick::thumbnailImage( null, 100, true )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
try
{
	$imagick->thumbnailImage( null, 100, true );
	echo "FAILED TEST\n";
}
catch ( ImagickException $e )
{
	echo $e->getMessage() . "\n";
}

echo "--- Source Image: 400x200, Imagick::thumbnailImage( null, null, true )\n";
$imagick = new Imagick();
$imagick->newImage( 400, 200, "white" );
try
{
	$imagick->thumbnailImage( null, null, true );
	echo "FAILED TEST\n";
}
catch ( ImagickException $e )
{
	echo $e->getMessage() . "\n";
}

// Legacy version
$imagick = new Imagick();
$imagick->newImage(2961, 2592, "white" );
$imagick->thumbnailImage(300, 0, false, false, true);

if ($imagick->getImageWidth() != 300) {
	echo "Error in height for 2961, 2592: actual is ".$image->getImageWidth()." not 300.".PHP_EOL;
}
if ($imagick->getImageHeight() != 262) {
	echo "Error in height for 2961, 2592: actual is ".$image->getImageHeight()." not 262.".PHP_EOL;
}

// Correct version
$imagick = new Imagick();
$imagick->newImage(2961, 2592, "white" );
$imagick->thumbnailImage(300, 0);

if ($imagick->getImageWidth() != 300) {
	echo "Error in height for 2961, 2592: actual is ".$image->getImageWidth()." not 300.".PHP_EOL;
}
if ($imagick->getImageHeight() != 263) {
	echo "Error in height for 2961, 2592: actual is ".$image->getImageHeight()." not 263.".PHP_EOL;
}

?>
--EXPECTF--
--- Source Image: 400x200, Imagick::thumbnailImage( 100, null, false )
100x50
--- Source Image: 400x200, Imagick::thumbnailImage( null, 100, false )
200x100
--- Source Image: 400x200, Imagick::thumbnailImage( 100, 100, false )
100x100
--- Source Image: 400x200, Imagick::thumbnailImage( null, null, false )
Invalid image geometry
--- Source Image: 400x200, Imagick::thumbnailImage( 100, 100, true )
100x50
--- Source Image: 400x200, Imagick::thumbnailImage( 100, null, true )
Invalid image geometry
--- Source Image: 400x200, Imagick::thumbnailImage( null, 100, true )
Invalid image geometry
--- Source Image: 400x200, Imagick::thumbnailImage( null, null, true )
Invalid image geometry
PKĉ	[7]���%212_ImagickDraw_setGravity_basic.phptnu�[���--TEST--
Test ImagickDraw, setGravity
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setGravity($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(24);

    $gravitySettings = array(\Imagick::GRAVITY_NORTHWEST => 'NorthWest', \Imagick::GRAVITY_NORTH => 'North', \Imagick::GRAVITY_NORTHEAST => 'NorthEast', \Imagick::GRAVITY_WEST => 'West', \Imagick::GRAVITY_CENTER => 'Centre', \Imagick::GRAVITY_SOUTHWEST => 'SouthWest', \Imagick::GRAVITY_SOUTH => 'South', \Imagick::GRAVITY_SOUTHEAST => 'SouthEast', \Imagick::GRAVITY_EAST => 'East');


    foreach ($gravitySettings as $type => $description) {
        $draw->setGravity($type);
        $draw->annotation(50, 50, '"' . $description . '"');
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setGravity($fillColor, $strokeColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[kv)ABB$103_Imagick_readImageBlob_basic.phptnu�[���--TEST--
Test Imagick, readImageBlob
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function readImageBlob() {

    // Image blob borrowed from:
    // http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/
    $base64 = "iVBORw0KGgoAAAANSUhEUgAAAM0AAAD
 NCAMAAAAsYgRbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5c
 cllPAAAABJQTFRF3NSmzMewPxIG//ncJEJsldTou1jHgAAAARBJREFUeNrs2EEK
 gCAQBVDLuv+V20dENbMY831wKz4Y/VHb/5RGQ0NDQ0NDQ0NDQ0NDQ0NDQ
 0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0PzMWtyaGhoaGhoaGhoaGhoaGhoxtb0QGho
 aGhoaGhoaGhoaGhoaMbRLEvv50VTQ9OTQ5OpyZ01GpM2g0bfmDQaL7S+ofFC6x
 v3ZpxJiywakzbvd9r3RWPS9I2+MWk0+kbf0Hih9Y17U0nTHibrDDQ0NDQ0NDQ0
 NDQ0NDQ0NTXbRSL/AK72o6GhoaGhoRlL8951vwsNDQ0NDQ1NDc0WyHtDTEhD
 Q0NDQ0NTS5MdGhoaGhoaGhoaGhoaGhoaGhoaGhoaGposzSHAAErMwwQ2HwRQ
 AAAAAElFTkSuQmCC";

    $imageBlob = base64_decode($base64);

    $imagick = new Imagick();
    $imagick->readImageBlob($imageBlob);

    $bytes = $imageBlob;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

readImageBlob() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[taj%%-269_ImagickPixel_setColorFromPixel_basic.phptnu�[���--TEST--
Test ImagickPixel, setColor
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('ImagickPixel', array('setColorFromPixel'));
?>
--FILE--
<?php


$backgroundColor = new \ImagickPixel('green');

$red = new \ImagickPixel('red');

$backgroundColor->setColorFromPixel($red);

$expected = array(
  "r" => 255,
  "g" => 0,
  "b" => 0,
  "a" => 1
);

$actualColor = $backgroundColor->getColor();

if ($actualColor != $expected) {
	echo "Not as expected :\n";
	var_dump($actualColor);
}


echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�{v##!015-imagickdrawsetresolution.phptnu�[���--TEST--
Test ImagickDraw->setResolution
--SKIPIF--
<?php 
	require_once(dirname(__FILE__) . '/skipif.inc');
	checkFormatPresent('png');
?>
--FILE--
<?php

$im = new Imagick();
$im->newImage(1000,1000, "white","png");

$draw = new ImagickDraw();
$draw->setFont (dirname (__FILE__) . '/anonymous_pro_minus.ttf');
$draw->setFontSize(72);

$draw->setResolution(10, 10);
$small = $im->queryFontMetrics($draw, "Hello World");

$draw->setResolution(300, 300);
$large = $im->queryFontMetrics($draw, "Hello World");

if ($small['textWidth'] < $large['textWidth']) {
	echo "Small font _is_ smaller than big font.".PHP_EOL;
}

//These will both be one line.
$oneLine = $im->queryFontMetrics($draw, "Hello Hello");
$forceOneLine = $im->queryFontMetrics($draw, "Hello \nHello", false);

//These will both be multiline
$forceMultiLine = $im->queryFontMetrics($draw, "Hello \nHello", true);
$guessLine = $im->queryFontMetrics($draw, "Hello\nHello");

if (abs($oneLine["textHeight"] - $forceOneLine["textHeight"]) > 0.1) {
	//Reaching this is bad
	echo "One line and forced one line are not the same height.".PHP_EOL;
	echo $oneLine["textHeight"]." ".$forceOneLine["textHeight"].PHP_EOL;
}

if ($forceMultiLine["textHeight"] - (2 * $forceOneLine["textHeight"]) + 2 > 0) {
	echo "Two lines are 2 times one line.".PHP_EOL;
}

if ($guessLine["textHeight"] - (2 * $forceOneLine["textHeight"]) + 2 > 0) {
	echo "Two lines are 2 times one line.".PHP_EOL;
}

echo "OK\n";

?>
--EXPECT--
Small font _is_ smaller than big font.
Two lines are 2 times one line.
Two lines are 2 times one line.
OK
PKĉ	[�]MPP 324_Imagick_polynomialImage.phptnu�[���--TEST--
Test Imagick, polynomialImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('polynomialImage'));
?>
--FILE--
<?php

function polynomialImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick_gradient = new \Imagick();
    $imagick_gradient->newPseudoImage(
        $imagick->getImageWidth(),
        $imagick->getImageHeight(),
        "gradient:black-white"
    );

    $imagick->addImage($imagick_gradient);

    $terms = [1, 1, 0.1, 0.1];

    // is 2 x (number_terms + 1 (the constant).
    $imagick->polynomialImage($terms);
    $imagick->writeImage(__DIR__ . '/polynomialImage_output_image.png');
    $imagick->getImageBlob();
}

polynomialImage() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/polynomialImage_output_image.png');
?>
--EXPECTF--
Ok
PKĉ	[����NN145_imagickkernel_coverage.phptnu�[���--TEST--
ImagickKernel::fromMatrix test
--SKIPIF--
<?php 

$imageMagickRequiredVersion = 0x680;
require_once(dirname(__FILE__) . '/skipif.inc');
 
?>
--FILE--
<?php


$kernel = array(
	array(1, 0, -1),
	array(1, 0, -1),
	array(1, 0, -1),
);

$kernel = ImagickKernel::fromMatrix($kernel);
$kernel->scale(1, \Imagick::NORMALIZE_KERNEL_VALUE);
$kernel->addUnityKernel(0.50);
$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");
$imagick->morphology(
	\Imagick::MORPHOLOGY_CONVOLVE,
	1,
	$kernel
);


$tests = array();

$tests[] = array( 
	"Cannot create kernel, matrix is empty.",
	array()
);

$tests[] = array(
	"Values must be matrix, with the same number of columns in each row.",
	array(0, 1, 1)
);

//Should fail, matrix needs to have same number columns in each row
$tests[] = array(
	"Values must be matrix, with the same number of columns in each row.",
	array(
		array(1, 0, 1),
		array(1, 0, 1),
		array(1, 0),
	)
);

//Should fail, value instead of second row
$tests[] = array(
	"Values must be matrix, with the same number of columns in each row.",
	array(
		array(0, 1),
		1
	)
);

//Should fail, value instead of second row
$tests[] = array( 
	"Only numbers or false are valid values in a kernel matrix.",
	array(
		array(0, 1),
		array(0, new StdClass),
	)
);

$tests[] = array(
	"For kernels with even numbered rows or columns, the origin position must be specified.",
	array(
		array(1, 0),
	),
);


foreach ($tests as $test) {

	list($expectedMessage, $testValue) = $test;

	try {
		$kernel = ImagickKernel::fromMatrix($testValue);
		echo "Failed to throw exception".PHP_EOL;
	}
	catch(ImagickKernelException $e) {
		if ($e->getMessage() != $expectedMessage) {
			echo "Unexpected message ".$e->getMessage()." for test:".PHP_EOL;
			var_dump($test);
		}
	}
}


try {
	$kernel = ImagickKernel::fromBuiltin(\Imagick::KERNEL_DIAMOND, "CestNestPasUneKernel");
	//echo "builtIn OK".PHP_EOL;
}
catch(Exception $e) {
	echo "Unexpected exception: ".$e->getMessage().PHP_EOL;
}


//Test adding unity kernel works.
$matrix1 = array(
	array(1, 1, 1),
	array(0, 0, 0),
	array(-1, -1, -1),
);
$kernel = ImagickKernel::fromMatrix($matrix1);
$kernel->addUnityKernel(0.5);
$matrix = $kernel->getMatrix();

if ($matrix[1][1] != 0.5) {
	echo "center point should be 0.5 but is actually ".$matrix[1][1].PHP_EOL;
	var_dump($matrix);
}
//echo "Adding unity kernel ok".PHP_EOL;

// Test adding kernel works and you can get the values back
$matrix1 = array(
	array(1, 1),
	array(0, 0),
);
$matrix2 = array(
	array(0, 0),
	array(1, 1),
);
$kernel1 = ImagickKernel::fromMatrix($matrix1, array(0, 0));
$kernel2 = ImagickKernel::fromMatrix($matrix2, array(0, 0));
$kernel1->addKernel($kernel2);

$kernelList = $kernel1->separate();
if (count($kernelList) != 2) {
	echo "Incorrect number of matrixes returned.";
}
else {
	if ($kernelList[0]->getMatrix() != $matrix1) {
		echo "Matrix 1 does not match".PHP_EOL;
		var_dump($kernelList[0]);
	}
	if ($kernelList[1]->getMatrix() != $matrix2) {
		echo "Matrix 2 does not match".PHP_EOL;
		var_dump($kernelList[1]);
	}
}

//Test Scaling
$matrixIn = array(
	array(-1, 0, -1),
	array( 0, 8,  0),
	array(-1, 0, -1),
);
$kernel = ImagickKernel::fromMatrix($matrixIn);
$kernel->scale(1, \Imagick::NORMALIZE_KERNEL_VALUE);
$matrixOut = $kernel->getMatrix();

if ($matrixOut[1][1] != 2) {
	echo "Matrix was not normalised correctly.";
	var_dump($matrixOut);
}



//Test single line kernel works
$matrixIn = array(
	array(1, 0),
);
$kernel = ImagickKernel::fromMatrix($matrixIn, array(1, 0));
if ($kernel->getMatrix() != $matrixIn) {
	echo "Values do not match for 'Test single line kernel works'".PHP_EOL;
}

//Test even sized kernel works
$matrixIn = array(
	array(-1, 0),
	array( 0, 1)
);
$kernel = ImagickKernel::fromMatrix($matrixIn, array(0, 1));
if ($kernel->getMatrix() != $matrixIn) {
	echo "Values do not match for 'Test even sized kernel works'".PHP_EOL;
}

//Test 'wrong' order matrix is converted correctly.
$matrix = array(
	array(0.0, 1.0),
	array(0.5, false)
);
 
$outOfOrderMatrix = array();
$outOfOrderMatrix[1][1] = $matrix[1][1];
$outOfOrderMatrix[1][0] = $matrix[1][0];
$outOfOrderMatrix[0][1] = $matrix[0][1];
$outOfOrderMatrix[0][0] = $matrix[0][0];

$kernel = ImagickKernel::fromMatrix($outOfOrderMatrix, array(0, 0));
$kernelMatrix = $kernel->getMatrix();
if ($kernelMatrix !== $matrix) {
	echo "Kernel generated from 'out of order' matrix is incorrect.".PHP_EOL;
	var_dump($matrix);
	echo "vs".PHP_EOL;
	var_dump($kernelMatrix);
}




//Test Scaling, and with null origin
$matrixIn = array(
	array(-1, 0, -1),
	array( 0, 8,  0),
	array(-1, 0, -1),
);
$kernel = ImagickKernel::fromMatrix($matrixIn, null); // <-- line under test
$kernel->scale(1, \Imagick::NORMALIZE_KERNEL_VALUE);
$matrixOut = $kernel->getMatrix();

if ($matrixOut[1][1] != 2) {
	echo "Matrix was not normalised correctly.";
	var_dump($matrixOut);
}


echo "Complete".PHP_EOL;
?>
--EXPECTF--
Complete
PKĉ	[�ugG%%187_ImagickDraw_push_basic.phptnu�[���--TEST--
Test ImagickDraw, push
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$fillModifiedColor = 'LightCoral';

function push($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillModifiedColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->push();
    $draw->translate(50, 50);
    $draw->rectangle(200, 200, 300, 300);
    $draw->pop();
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

push($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�<{�� 039_Imagick_borderImage_im7.phptnu�[���--TEST--
Test Imagick, borderImageWithComposite
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$width = 50;
$height = 20;
$color = 'rgb(200, 64, 127)';

function borderImage($color, $width, $height, $blendOption) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->borderImage($color, $width, $height);

    if ($blendOption === null) {
        $imagick->borderImage($color, $width, $height);
    }
    else {
        $imagick->borderImageWithComposite($color, $width, $height, $blendOption);
    }

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) {
        echo "Failed to generate image.";
    }

    return $imagick;
}

$blendOptions = [
    "null" => null,
//    "COMPOSITE_NO" => Imagick::COMPOSITE_NO,
//    //"COMPOSITE_ADD" => Imagick::COMPOSITE_ADD,
    "COMPOSITE_ATOP" => Imagick::COMPOSITE_ATOP,
//    "COMPOSITE_BLEND" => Imagick::COMPOSITE_BLEND,
//    "COMPOSITE_BUMPMAP" => Imagick::COMPOSITE_BUMPMAP,
//    "COMPOSITE_CLEAR" => Imagick::COMPOSITE_CLEAR,
//    "COMPOSITE_COLORBURN" => Imagick::COMPOSITE_COLORBURN,
//    "COMPOSITE_COLORDODGE" => Imagick::COMPOSITE_COLORDODGE,
//    "COMPOSITE_COLORIZE" => Imagick::COMPOSITE_COLORIZE,
//    "COMPOSITE_COPYBLACK" => Imagick::COMPOSITE_COPYBLACK,
//    "COMPOSITE_COPYBLUE" => Imagick::COMPOSITE_COPYBLUE,
//    "COMPOSITE_COPY" => Imagick::COMPOSITE_COPY,
//    "COMPOSITE_COPYCYAN" => Imagick::COMPOSITE_COPYCYAN,
//    "COMPOSITE_COPYGREEN" => Imagick::COMPOSITE_COPYGREEN,
//    "COMPOSITE_COPYMAGENTA" => Imagick::COMPOSITE_COPYMAGENTA,
//    "COMPOSITE_COPYALPHA" => Imagick::COMPOSITE_COPYALPHA,
//    "COMPOSITE_COPYOPACITY" => Imagick::COMPOSITE_COPYOPACITY,
//    "COMPOSITE_COPYRED" => Imagick::COMPOSITE_COPYRED,
//    "COMPOSITE_COPYYELLOW" => Imagick::COMPOSITE_COPYYELLOW,
//    "COMPOSITE_DARKEN" => Imagick::COMPOSITE_DARKEN,
//    "COMPOSITE_DSTATOP" => Imagick::COMPOSITE_DSTATOP,
//    "COMPOSITE_DST" => Imagick::COMPOSITE_DST,
//    "COMPOSITE_DSTIN" => Imagick::COMPOSITE_DSTIN,
//    "COMPOSITE_DSTOUT" => Imagick::COMPOSITE_DSTOUT,
//    "COMPOSITE_DSTOVER" => Imagick::COMPOSITE_DSTOVER,
//    "COMPOSITE_DIFFERENCE" => Imagick::COMPOSITE_DIFFERENCE,
// "COMPOSITE_DISPLACE" => Imagick::COMPOSITE_DISPLACE,
//    "COMPOSITE_DISSOLVE" => Imagick::COMPOSITE_DISSOLVE,
//    "COMPOSITE_EXCLUSION" => Imagick::COMPOSITE_EXCLUSION,
//    "COMPOSITE_HARDLIGHT" => Imagick::COMPOSITE_HARDLIGHT,
//    "COMPOSITE_HUE" => Imagick::COMPOSITE_HUE,
//    "COMPOSITE_IN" => Imagick::COMPOSITE_IN,
//    "COMPOSITE_LIGHTEN" => Imagick::COMPOSITE_LIGHTEN,
//    "COMPOSITE_LUMINIZE" => Imagick::COMPOSITE_LUMINIZE,
//    //"COMPOSITE_MINUS" => Imagick::COMPOSITE_MINUS,
//    "COMPOSITE_MODULATE" => Imagick::COMPOSITE_MODULATE,
//    "COMPOSITE_MULTIPLY" => Imagick::COMPOSITE_MULTIPLY,
//    "COMPOSITE_OUT" => Imagick::COMPOSITE_OUT,
    "COMPOSITE_OVER" => Imagick::COMPOSITE_OVER,
//    "COMPOSITE_OVERLAY" => Imagick::COMPOSITE_OVERLAY,
//    "COMPOSITE_PLUS" => Imagick::COMPOSITE_PLUS,
//    "COMPOSITE_REPLACE" => Imagick::COMPOSITE_REPLACE,
//    "COMPOSITE_SATURATE" => Imagick::COMPOSITE_SATURATE,
//    "COMPOSITE_SCREEN" => Imagick::COMPOSITE_SCREEN,
//    "COMPOSITE_SOFTLIGHT" => Imagick::COMPOSITE_SOFTLIGHT,
//    "COMPOSITE_SRCATOP" => Imagick::COMPOSITE_SRCATOP,
//    "COMPOSITE_SRC" => Imagick::COMPOSITE_SRC,
//    "COMPOSITE_SRCIN" => Imagick::COMPOSITE_SRCIN,
//    "COMPOSITE_SRCOUT" => Imagick::COMPOSITE_SRCOUT,
//    "COMPOSITE_SRCOVER" => Imagick::COMPOSITE_SRCOVER,
//    // "COMPOSITE_SUBTRACT" => Imagick::COMPOSITE_SUBTRACT,
//    "COMPOSITE_THRESHOLD" => Imagick::COMPOSITE_THRESHOLD,
//    "COMPOSITE_XOR" => Imagick::COMPOSITE_XOR,
//    "COMPOSITE_CHANGEMASK" => Imagick::COMPOSITE_CHANGEMASK,
//    "COMPOSITE_LINEARLIGHT" => Imagick::COMPOSITE_LINEARLIGHT,
    // "COMPOSITE_DIVIDE" => Imagick::COMPOSITE_DIVIDE,
//     "COMPOSITE_DISTORT" => Imagick::COMPOSITE_DISTORT,
//    //"COMPOSITE_BLUR" => Imagick::COMPOSITE_BLUR,
//    "COMPOSITE_PEGTOPLIGHT" => Imagick::COMPOSITE_PEGTOPLIGHT,
//    "COMPOSITE_VIVIDLIGHT" => Imagick::COMPOSITE_VIVIDLIGHT,
//    "COMPOSITE_PINLIGHT" => Imagick::COMPOSITE_PINLIGHT,
//    "COMPOSITE_LINEARDODGE" => Imagick::COMPOSITE_LINEARDODGE,
//    "COMPOSITE_LINEARBURN" => Imagick::COMPOSITE_LINEARBURN,
//    "COMPOSITE_MATHEMATICS" => Imagick::COMPOSITE_MATHEMATICS,
//    "COMPOSITE_MODULUSADD" => Imagick::COMPOSITE_MODULUSADD,
//    "COMPOSITE_MODULUSSUBTRACT" => Imagick::COMPOSITE_MODULUSSUBTRACT,
//    "COMPOSITE_MINUSDST" => Imagick::COMPOSITE_MINUSDST,
//    "COMPOSITE_DIVIDEDST" => Imagick::COMPOSITE_DIVIDEDST,
//    "COMPOSITE_DIVIDESRC" => Imagick::COMPOSITE_DIVIDESRC,
//    "COMPOSITE_MINUSSRC" => Imagick::COMPOSITE_MINUSSRC,
//    "COMPOSITE_DARKENINTENSITY" => Imagick::COMPOSITE_DARKENINTENSITY,
//    "COMPOSITE_LIGHTENINTENSITY" => Imagick::COMPOSITE_LIGHTENINTENSITY,
//    "COMPOSITE_HARDMIX" => Imagick::COMPOSITE_HARDMIX,
//    "COMPOSITE_STEREO" => Imagick::COMPOSITE_STEREO,
//    "COMPOSITE_FREEZE" => Imagick::COMPOSITE_FREEZE,
//    "COMPOSITE_INTERPOLATE" => Imagick::COMPOSITE_INTERPOLATE,
//    "COMPOSITE_NEGATE" => Imagick::COMPOSITE_NEGATE,
//    "COMPOSITE_REFLECT" => Imagick::COMPOSITE_REFLECT,
//    "COMPOSITE_SOFTBURN" => Imagick::COMPOSITE_SOFTBURN,
//    "COMPOSITE_SOFTDODGE" => Imagick::COMPOSITE_SOFTDODGE,
//    "COMPOSITE_STAMP" => Imagick::COMPOSITE_STAMP,
//    "COMPOSITE_RMSE" => Imagick::COMPOSITE_RMSE,
];

foreach ($blendOptions as $name => $blendOption) {
    // echo "name: $name \n";
    $imagick = borderImage($color, $width, $height, $blendOption);
    $filename = "039_border_" . $name . ".png";
    // $imagick->writeImage($filename);
}

echo "Ok";
?>
--EXPECTF--
OkPKĉ	[��i�� 156_Imagick_tintImage_basic.phptnu�[���--TEST--
Test Imagick, tintImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$r = 100;
$g = 50;
$b = 100;
$a = 100;

function tintImage($r, $g, $b, $a) {
    $a = $a / 100;

    $imagick = new \Imagick();
    $imagick->newPseudoImage(400, 400, 'gradient:black-white');

    $tint = new \ImagickPixel("rgb($r, $g, $b)");
    $opacity = new \ImagickPixel("rgb(128, 128, 128, $a)");
    $imagick->tintImage($tint, $opacity);
    $imagick->setImageFormat('png');
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

tintImage($r, $g, $b, $a) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[W趺PP263_autoGammaImage.phptnu�[���--TEST--
Test autoGammaImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('autoGammaImage'));
?>
--FILE--
<?php

$im = new Imagick("magick:logo");
$im->autoGammaImage();


$im = new Imagick("magick:logo");
$im->autoGammaImage(\Imagick::CHANNEL_RED);

echo "Ok";

?>
--EXPECT--
Ok
PKĉ	[��ޑ��bug_71742.phptnu�[���--TEST--
Bug #71742	polyline touched by array_walk
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$coordinates = array();

foreach (range (0, 100) as $index) {
	$coordinates[] = array(
		'x' => 2 * $index,
		'y' => pow($index, 2)
	);
}

$callback = function (&$coordinate) {
	$coordinate['y'] = 200 - $coordinate['y'] / 50;
};

array_walk($coordinates, $callback);

$imagick = new Imagick();
$imagick->newImage(200, 200, "white");

$draw = new ImagickDraw ();
$draw->setFillColor("none");
$draw->setStrokeColor("black");

//Fatal error in PHP 7, but not in PHP <= 5.6
$draw->polyline($coordinates);

$draw->translate(0, -20);
////Works in PHP 7
$draw->polyline (array_values($coordinates));
$imagick->drawImage($draw);
//$imagick->writeImage(getcwd()."/test.png");
$imagick->setImageFormat('png');
$bytes = $imagick->getImageBlob();

if (strlen($bytes) <= 0) { 
	echo "Failed to generate image.";
}

//$imagick->writeImage("./bugTest.png");

echo "Ok";

?>
--EXPECT--
OkPKĉ	[,$�5��$177_ImagickDraw_composite_basic.phptnu�[���--TEST--
Test ImagickDraw, composite
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function composite($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    setFontForImagickDraw($draw);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setFillOpacity(1);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(140);
    $draw->rectangle(0, 0, 1000, 300);
    $draw->setFillColor('white');
    $draw->setfillopacity(1);
    $draw->annotation(50, 180, "Lorem Ipsum!");

//    $imagick = new \Imagick(realpath("../images/TestImage.jpg"));
//    $draw->composite(\Imagick::COMPOSITE_MULTIPLY, -500, -200, 2000, 600, $imagick);

    //$imagick->compositeImage($draw, 0, 0, 1000, 500);
    //$draw->composite(Imagick::COMPOSITE_COLORBURN, -500, -200, 2000, 600, $imagick);

    //Create an image object which the draw commands can be rendered into
    $imagick = new \Imagick();
    $imagick->newImage(1000, 302, $backgroundColor);
    $imagick->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object 
    //into the image.
    $imagick->drawImage($draw);

    //Send the image to the browser
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

composite($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[���l012-clone-separation.phptnu�[���--TEST--
Testing that cloned object does not affect the original
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
$im = new Imagick();
$im->newImage(100, 100, new ImagickPixel("white"));

$new = clone $im;
$new->thumbnailImage(200, null);
var_dump($im->width, $new->width);

$new2 = $im->clone();
$new2->thumbnailImage(200, null);
var_dump($im->width, $new2->width);

?>
--EXPECTF--
int(100)
int(200)

%s: Imagick::clone method is deprecated and it's use should be avoided in %s on line %d
int(100)
int(200)PKĉ	[S�<��,224_ImagickDraw_setTextUnderColor_basic.phptnu�[���--TEST--
Test ImagickDraw, setTextUnderColor
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$textUnderColor = 'DeepPink2';

function setTextUnderColor($strokeColor, $fillColor, $backgroundColor, $textUnderColor) {
    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->annotation(50, 75, "Lorem Ipsum!");
    $draw->setTextUnderColor($textUnderColor);
    $draw->annotation(50, 175, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setTextUnderColor($strokeColor, $fillColor, $backgroundColor, $textUnderColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[`\�^^
bug59378.phptnu�[���--TEST--
Test PHP bug #59378 writing to php://memory is incomplete
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
<?php if (substr(PHP_OS, 0, 3) == 'WIN') {  die("skip php://memory can't be used as filehandle on Windows"); } ?>
--FILE--
<?php

$imagick = new Imagick();
$imagick->newPseudoImage(640, 480, "LOGO:");
$imagick->setFormat("png");

$fp = fopen("php://memory", 'r+');
$imagick->writeImageFile($fp);
rewind($fp);
$memoryBlob = stream_get_contents($fp);
fclose($fp);

//This test depends on getImageBlob working correctly.
$imageBlob = $imagick->getImageBlob();

//Read the images from the data blobs.
$imageReopened = new Imagick();
$imageReopened->readImageBlob($imageBlob);
$memoryReopened = new Imagick();
$memoryReopened->readImageBlob($memoryBlob);

//Compare to see if they are identical.
$result = $imageReopened->compareImages($memoryReopened, \Imagick::METRIC_MEANABSOLUTEERROR);

if ($result[1] == 0) {
    echo "Reopened images are identical.";
}
else {
    echo "Error, reopened images have changed.";
    var_dump($result);
}

?>
--EXPECTF--
Reopened images are identical.
PKĉ	[�K$ 042_Imagick_clutImage_basic.phptnu�[���--TEST--
Test Imagick, clutImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc'); 
?>
--FILE--
<?php

$draw = new \ImagickDraw();
$draw->setStrokeOpacity(0);
$draw->setFillColor('black');
$points = [
	['x' => 40 * 3, 'y' => 10 * 5],
	['x' => 20 * 3, 'y' => 20 * 5],
	['x' => 70 * 3, 'y' => 50 * 5],
	['x' => 80 * 3, 'y' => 15 * 5],
];
$draw->polygon($points);
$imagick = new \Imagick();

$imagick->setColorspace(\Imagick::COLORSPACE_GRAY);

$imagick->newPseudoImage(
	300, 300,
	"xc:white"
);

$imagick->drawImage($draw);
$imagick->blurImage(0, 10);

$draw = new \ImagickDraw();
$draw->setStrokeOpacity(1);
$draw->setFillColor('red');
$draw->point(0, 2);
$draw->setFillColor('yellow');
$draw->rectangle(0, 0, 1, 1);
$gradient = new Imagick();
$gradient->newPseudoImage(1, 5, 'xc:black');
$gradient->drawImage($draw);
$gradient->setImageFormat('png');



$imagick->setImageFormat('png');

// This test is for IM < 7 so setInterpolate not available
// Which probably means the clutImage method isn't usuable...
//$imagick->setInterpolateMethod(Imagick::INTERPOLATE_BILINEAR);
$imagick->clutImage($gradient);

$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image.";}


echo "Ok";
?>
--EXPECTF--
OkPKĉ	[����pp,219_ImagickDraw_setStrokeLineJoin_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeLineJoin
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeLineJoin($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(20);

    $offset = 220;

    $lineJoinStyle = array(\Imagick::LINEJOIN_MITER, \Imagick::LINEJOIN_ROUND, \Imagick::LINEJOIN_BEVEL,);

    for ($x = 0; $x < count($lineJoinStyle); $x++) {
        $draw->setStrokeLineJoin($lineJoinStyle[$x]);
        $points = array(
            array('x' => 40 * 5, 'y' => 10 * 5 + $x * $offset),
            array('x' => 20 * 5, 'y' => 20 * 5 + $x * $offset),
            array('x' => 70 * 5, 'y' => 50 * 5 + $x * $offset),
            array('x' => 40 * 5, 'y' => 10 * 5 + $x * $offset),
        );

        $draw->polyline($points);
    }

    $image = new \Imagick();
    $image->newImage(500, 700, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeLineJoin($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[D.�kkk 047_Imagick_convolveImage_6.phptnu�[���--TEST--
Test Imagick, convolveImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
$imageMagickBelowVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$bias = 0.5;
$kernelMatrix = array (
  0 => -1,
  1 => -1,
  2 => -1,
  3 => -1,
  4 => 8,
  5 => -1,
  6 => -1,
  7 => -1,
  8 => -1,
);

function convolveImage($bias, $kernelMatrix) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    
    //$edgeFindingKernel = [-1, -1, -1, -1, 8, -1, -1, -1, -1,];
    
    $imagick->setImageBias($bias * \Imagick::getQuantum());
    $imagick->convolveImage($kernelMatrix);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

convolveImage($bias, $kernelMatrix) ;
echo "Ok";
?>
--EXPECTF--
Deprecated: %s Imagick::setImageBias() is deprecated in %s
Ok
PKĉ	[�'�5,,"141_Imagick_sketchImage_basic.phptnu�[���--TEST--
Test Imagick, sketchImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$angle = 45;

function sketchImage($radius, $sigma, $angle) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->sketchimage($radius, $sigma, $angle);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

sketchImage($radius, $sigma, $angle) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�4E�BB 037_Imagick_blurImage_basic.phptnu�[���--TEST--
Test Imagick, blurImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$channel = Imagick::CHANNEL_DEFAULT;

function blurImage($radius, $sigma, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->blurImage($radius, $sigma, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

blurImage($radius, $sigma, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[{�s��-252_ImagickPixelIterator_construct_basic.phptnu�[���--TEST--
Test ImagickPixelIterator, construct
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function construct() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imageIterator = new \ImagickPixelIterator($imagick);

    /* Loop through pixel rows */
    foreach ($imageIterator as $pixels) { 
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) { 
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {
                /* Paint every second pixel black*/
                $pixel->setColor("rgba(0, 0, 0, 0)");
            }
        }
        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

construct() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKĉ	[�G�00"110_Imagick_resizeImage_basic.phptnu�[���--TEST--
Test Imagick, resizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$filterType = 22;
$width = 200;
$height = 200;
$blur = 1;
$bestFitSettings = array(0, 1);
$cropZoom = 1;

function resizeImage($width, $height, $filterType, $blur, $bestFit, $cropZoom) {
    //The blur factor where &gt; 1 is blurry, &lt; 1 is sharp.
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $imagick->resizeImage($width, $height, $filterType, $blur, $bestFit);

    $cropWidth = $imagick->getImageWidth();
    $cropHeight = $imagick->getImageHeight();

    if ($cropZoom) {
        $newWidth = $cropWidth / 2;
        $newHeight = $cropHeight / 2;

        $imagick->cropimage(
            $newWidth,
            $newHeight,
            (int)(($cropWidth - $newWidth) / 2),
            (int)(($cropHeight - $newHeight) / 2)
        );

        $imagick->scaleimage(
            $imagick->getImageWidth() * 4,
            $imagick->getImageHeight() * 4
        );
    }


    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

foreach ($bestFitSettings as $bestFit) {
	resizeImage($width, $height, $filterType, $blur, $bestFit, $cropZoom);
}
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[J����'201_ImagickDraw_setFillAlpha_basic.phptnu�[���--TEST--
Test ImagickDraw, setFillAlpha
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFillAlpha($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);
    $draw->rectangle(100, 200, 200, 300);
    @$draw->setFillAlpha(0.4);
    $draw->rectangle(300, 200, 400, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFillAlpha($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[�[-���&162_Imagick_transverseImage_basic.phptnu�[���--TEST--
Test Imagick, transverseImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function transverseImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->transverseImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

transverseImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[\����#309_Imagick_orderedDitherImage.phptnu�[���--TEST--
Test Imagick, orderedDitherImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('orderedDitherImage'));
?>
--FILE--
<?php


function orderedDitherImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->orderedDitherImage("o3x3,6");
//    $imagick->writeImage(__DIR__ . '/claheImage_output_image.png');
    $imagick->getImageBlob();
}

orderedDitherImage() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKĉ	[C���$170_ImagickPixel_setColor_basic.phptnu�[���--TEST--
Test ImagickPixel, setColor
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function setColor() {
    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel('green');
    $fillColor = new \ImagickPixel();
    $fillColor->setColor('rgba(100%, 75%, 0%, 1.0)');

    $draw->setstrokewidth(3.0);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);

    $image = new \Imagick();
    $image->newImage(500, 500, "SteelBlue2");
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setColor() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[|�"��(207_ImagickDraw_setFontFamily_basic.phptnu�[���--TEST--
Test ImagickDraw, setFontFamily
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFontFamily($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);

    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    //TODO - actually use setFontFamily
    $draw->setStrokeWidth(2);

    $draw->setFontSize(24);
    $draw->annotation(50, 50, "Lorem Ipsum!");

    $draw->setFontSize(36);
    $draw->annotation(50, 100, "Lorem Ipsum!");

    $draw->setFontSize(48);
    $draw->annotation(50, 150, "Lorem Ipsum!");

    $draw->setFontSize(60);
    $draw->annotation(50, 200, "Lorem Ipsum!");

    $draw->setFontSize(72);
    $draw->annotation(50, 250, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFontFamily($fillColor, $strokeColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[��H%%$061_Imagick_distortImage_Barrel.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;


// The arguments needed for the 'Barrel' distort method. Generally you supply
// 3 or 4 values only...
// A   B   C   [ D   [ X , Y ] ]
// The optional X,Y arguments provide an optional 'center' for the radial distortion,
// otherwise it defaults to the exact center of the image given (regardless of its virtual offset).
// The coefficients are designed so that if all four A to D values, add up to '1.0', the minimal
// width/height of the image will not change. For this reason if D (which controls the overall
// scaling of the image) is not supplied it will be set so all four values do add up to '1.0'.
    
        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
     
        $points = array(
            //0.2, 0.0, 0.0, 1.0
            0.4, 0.6, 0.0, 1.0
        );

        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_EDGE);
        $imagick->distortImage(\Imagick::DISTORTION_BARREL, $points, TRUE);
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKĉ	[d�[303_Imagick_averageImages.phptnu�[���--TEST--
Test Imagick, averageImages
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('averageImages'));
?>
--FILE--
<?php


function averageImages() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:LOGO");
    $imagick2 = new \Imagick();
    $imagick2->newPseudoImage(640, 480, "gradient:black-white");


    $imagick->addImage($imagick2);
    $imagick->setIteratorIndex(0);

    $result_imagick = $imagick->averageImages();
    $result_imagick->setImageFormat('png');
    $result_imagick->writeImage(__DIR__ . '/averageImages_output_image.png');
    $result_imagick->getImageBlob();
}

averageImages() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/averageImages_output_image.png');
?>
--EXPECTF--
Ok
PKĉ	[�!��LL,225_ImagickDraw_setTextDecoration_basic.phptnu�[���--TEST--
Test ImagickDraw, setTextDecoration
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$textDecoration = 2;

function setTextDecoration($strokeColor, $fillColor, $backgroundColor, $textDecoration) {

    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->setTextDecoration($textDecoration);
    $draw->annotation(50, 75, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setTextDecoration($strokeColor, $fillColor, $backgroundColor, $textDecoration) ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[W�õ
bug81235.phptnu�[���--TEST--
Bug #81235 (Imagick::newPseudoImage gives open_basedir restriction error)
--SKIPIF--
<?php require_once(__DIR__ . '/skipif.inc'); ?>
--FILE--
<?php
ini_set('open_basedir', __DIR__);
$imagick = new \Imagick();
$imagick->newPseudoImage(10, 10, "canvas:white");
?>
--EXPECT--
PKĉ	[��g��skipprobefourier.incnu�[���<?php

$canCallFourier = false;

ob_start();

echo("skip failed to probe fourier functions");

try {
	$imagick = new \Imagick();
	$imagick->newPseudoImage(640, 480, "magick:logo");
	$imagick->resizeimage(512, 512, \Imagick::FILTER_LANCZOS, 1);
	$imagick->forwardFourierTransformImage(true);
	$canCallFourier = true;
}
catch(\Exception $e) {
	//fftw probably not available.
}

ob_end_clean();

if ($canCallFourier == false) {
	die("skip fourier function seems unavailable");
}

?>PKĉ	[,	 ;��!149_Imagick_sparseColorImage.phptnu�[���--TEST--
Test Imagick, sparseColorImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x653;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php




function createGradientImage($width, $height, $colorPoints, $sparseMethod, $absolute = false) {

    $imagick = new \Imagick();
    $imagick->newImage($width, $height, "rgba(255, 255, 255, 1)");
    $imagick->setImageFormat("png");

    $barycentricPoints = array();

    foreach ($colorPoints as $colorPoint) {

        if ($absolute == true) {
            $barycentricPoints[] = $colorPoint[0];
            $barycentricPoints[] = $colorPoint[1];
        }
        else {
            $barycentricPoints[] = $colorPoint[0] * $width;
            $barycentricPoints[] = $colorPoint[1] * $height;
        }

        if (is_string($colorPoint[2])) {
            $imagickPixel = new \ImagickPixel($colorPoint[2]);
        }
        else if ($colorPoint[2] instanceof \ImagickPixel) {
            $imagickPixel = $colorPoint[2];
        }
        else{
            $errorMessage = sprintf(
                "Value %s is neither a string nor an ImagickPixel class. Cannot use as a color.",
                $colorPoint[2]
            );

            throw new \InvalidArgumentException(
                $errorMessage
            );
        }

        $red = $imagickPixel->getColorValue(\Imagick::COLOR_RED);
        $green = $imagickPixel->getColorValue(\Imagick::COLOR_GREEN);
        $blue = $imagickPixel->getColorValue(\Imagick::COLOR_BLUE);
        $alpha = $imagickPixel->getColorValue(\Imagick::COLOR_ALPHA);

        $barycentricPoints[] = $red;
        $barycentricPoints[] = $green;
        $barycentricPoints[] = $blue;
        $barycentricPoints[] = $alpha;
    }

    $imagick->sparseColorImage($sparseMethod, $barycentricPoints);

    return $imagick;
}

function renderImageBarycentric() {
    $points = array(
        array(0, 0, 'skyblue'),
        array(-1, 1, 'skyblue'),
        array(1, 1, 'black'),
    );
    $imagick = createGradientImage(600, 200, $points, \Imagick::SPARSECOLORMETHOD_BARYCENTRIC);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
    echo "Ok".PHP_EOL;
}
function renderImageVoronoi() {
    $points = array(
        array(0.30, 0.10, 'red'),
        array(0.10, 0.80, 'blue'),
        array(0.70, 0.60, 'lime'),
        array(0.80, 0.20, 'yellow'),
    );
    $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_VORONOI);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
    echo "Ok".PHP_EOL;
}
function renderImageShepards() {
    $points = array(
            array(0.30, 0.10, 'red'),
            array(0.10, 0.80, "RGBA(0, 255, 0, 0.5)"),
            array(0.70, 0.60, "RGBA(0, 255, 0, 1)"),
            array(0.80, 0.20, 'yellow'),
        );
    $imagick = createGradientImage(600, 600, $points, \Imagick::SPARSECOLORMETHOD_SPEPARDS);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
    echo "Ok".PHP_EOL;
}

function renderImageBilinear() {
    $points = array(
        array(0.30, 0.10, 'red'),
        array(0.10, 0.80, 'blue'),
        array(0.70, 0.60, 'lime'),
        array(0.80, 0.20, 'yellow'),
    );
    $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_BILINEAR);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
    echo "Ok".PHP_EOL;
}

try {
	renderImageBilinear() ;
}
catch (\Exception $e) {
	echo "renderImageBilinear failed ".$e->getMessage().PHP_EOL;
}
try {
	renderImageShepards();
}
catch (\Exception $e) {
	echo "renderImageShepards failed ".$e->getMessage().PHP_EOL;
}
try {
	renderImageVoronoi();
}
catch (\Exception $e) {
	echo "renderImageVoronoi failed ".$e->getMessage().PHP_EOL;
}
try {
	renderImageBarycentric();
}
catch (\Exception $e) {
	echo "renderImageBarycentric failed ".$e->getMessage().PHP_EOL;
}

?>
--EXPECTF--
Ok
Ok
Ok
OkPKĉ	[�O�-084_Imagick_getPixelRegionIterator_basic.phptnu�[���--TEST--
Test Imagick, getPixelRegionIterator
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function getPixelRegionIterator() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imageIterator = $imagick->getPixelRegionIterator(100, 100, 200, 200);

    /** @noinspection PhpUnusedLocalVariableInspection */
    foreach ($imageIterator as $row => $pixels) { /* Loop trough pixel rows */
        foreach ($pixels as $column => $pixel) { /* Loop through the pixels in the row (columns) */
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {
                $pixel->setColor("rgba(0, 0, 0, 0)"); /* Paint every second pixel black*/
            }
        }
        $imageIterator->syncIterator(); /* Sync the iterator, this is important to do on each iteration */
    }

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

getPixelRegionIterator() ;
echo "Ok";
?>
--EXPECTF--
OkPKĉ	[*�Z���,098_Imagick_orderedPosterizeImage_basic.phptnu�[���--TEST--
Test Imagick, orderedPosterizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');

checkClassMethods('Imagick', array('orderedPosterizeImage'));
?>
--FILE--
<?php

$orderedPosterizeType = "o8x8";

function orderedPosterizeImage($orderedPosterizeType) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    
  
    $imagick->orderedPosterizeImage($orderedPosterizeType);
    $imagick->setImageFormat('png');
    
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

orderedPosterizeImage($orderedPosterizeType) ;
echo "Ok";
?>
--EXPECTF--
Deprecated: %s Imagick::orderedPosterizeImage() is deprecated in %S
Ok
PKʼn	[��v���)171_ImagickPixel_setColorValue_basic.phptnu�[���--TEST--
Test ImagickPixel, setColorValue
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function setColorValue() {
    $image = new \Imagick();
    $draw = new \ImagickDraw();

    $color = new \ImagickPixel('blue');
    $color->setcolorValue(\Imagick::COLOR_RED, 128);

    $draw->setstrokewidth(1.0);
    $draw->setStrokeColor($color);
    $draw->setFillColor($color);
    $draw->rectangle(200, 200, 300, 300);

    $image->newImage(500, 500, "SteelBlue2");
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setColorValue() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�x��22$142_Imagick_solarizeImage_basic.phptnu�[���--TEST--
Test Imagick, solarizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$solarizeThreshold = 0.2;

function solarizeImage($solarizeThreshold) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->solarizeImage($solarizeThreshold * \Imagick::getQuantum());
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

solarizeImage($solarizeThreshold) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[Rq�SMM 164_Imagick_trimImage_basic.phptnu�[���--TEST--
Test Imagick, trimImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$color = 'rgb(39, 194, 255)';
$fuzz = 0.1;

function trimImage($color, $fuzz) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    
    $imagick->borderImage($color, 10, 10);
    $imagick->trimImage($fuzz * \Imagick::getQuantum());

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

trimImage($color, $fuzz) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[f���%258_Imagick_evaluateImages_basic.phptnu�[���--TEST--
Test Imagick, Imagick::evaluateImages
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x687;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$imagick = new \Imagick();
$imagick->newPseudoImage(256, 256, "gradient:black-white");

$imagick2 = new \Imagick();
$imagick2->newPseudoImage(256, 256, "gradient:red-white");

$imagick->addImage($imagick2);
$imagick->setImageFormat('png');

$imagick->setIteratorIndex(0);

$evaluated = $imagick->evaluateImages(\Imagick::EVALUATE_MEAN);

$evaluated->setImageFormat('png');
// $evaluated->writeImage("./evaluateTest.png");
$data = $evaluated->getImageBlob();

if (strlen($data) < 50) {
	echo "Image data seems too short.";
}

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�� ���262_autoOrient.phptnu�[���--TEST--
Test autoOrient
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc');

$v = Imagick::getVersion();
if ($v['versionNumber'] < 0x693)
	die ('skip too old ImageMagick');

// if ($v ['versionNumber'] >= 0x660 && $v ['versionNumber'] < 0x670)
//	die ('skip seems to be broken in this version of ImageMagick');
?>
--FILE--
<?php

$im = new Imagick("magick:logo");
$im->autoOrient();

echo "Ok";

?>
--EXPECT--
OkPKʼn	[[��mm006_cropthumbnail.phptnu�[���--TEST--
Test cropthumbnail
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$im = new Imagick("magick:rose");
$im->cropThumbnailImage(200, 200);
var_dump($im->getImageGeometry());

$im = new Imagick("magick:rose");
$im->cropThumbnailImage(170, 120);
var_dump($im->getImageGeometry());

$im = new Imagick("magick:rose");
$im->cropThumbnailImage(50, 50);
var_dump($im->getImageGeometry());

$im = new Imagick("magick:rose");
$im->cropThumbnailImage(60, 120);
var_dump($im->getImageGeometry());

$im = new Imagick("magick:logo");
$im->cropThumbnailImage(100, 100);
var_dump($im->getImageGeometry());

$im = new Imagick("magick:rose");
$im->cropThumbnailImage(200, 10);
var_dump($im->getImageGeometry());

?>
--EXPECTF--
array(2) {
  ["width"]=>
  int(200)
  ["height"]=>
  int(200)
}
array(2) {
  ["width"]=>
  int(170)
  ["height"]=>
  int(120)
}
array(2) {
  ["width"]=>
  int(50)
  ["height"]=>
  int(50)
}
array(2) {
  ["width"]=>
  int(60)
  ["height"]=>
  int(120)
}
array(2) {
  ["width"]=>
  int(100)
  ["height"]=>
  int(100)
}
array(2) {
  ["width"]=>
  int(200)
  ["height"]=>
  int(10)
}PKʼn	[��+���
functions.incnu�[���<?php

/**
 *
 * Gets the installed version of ImageMagick and compares the
 * appropriate version to the installed version. *
 *
 * @param $testIm6Version
 * @param $im7Version
 * @return int
 */
function version_compare_imagemagick($testIm6Version, $im7Version)
{
    $versionInfo = \Imagick::getVersion();

    if (array_key_exists("versionString", $versionInfo) == false) {
        die("skip unable to determine ImageMagick version.");
    }

    $versionInstalledStringComplete = $versionInfo["versionString"];

    $firstSpace = strpos($versionInstalledStringComplete, ' ');
    if ($firstSpace === false) {
        die("Failed to understand version string [$versionInstalledStringComplete] - finding first space");
    }

    $secondSpace = strpos($versionInstalledStringComplete, ' ', $firstSpace + 1);
    if ($secondSpace === false) {
        die("Failed to understand version string [$versionInstalledStringComplete] - finding second space");
    }

    $versionInstalledString = substr($versionInstalledStringComplete, $firstSpace + 1, $secondSpace - $firstSpace - 1);
    // echo "versionInstalledString is $versionInstalledString \n";

    $versionToCompare = $im7Version;
    if (substr($versionInstalledString, 0, 1) === '6') {
        $versionToCompare = $testIm6Version;
    }

    return version_compare($versionInstalledString, $versionToCompare);
}

/**
 *
 * Compares the installed version of ImageMagick and returns true if the appropriate
 * version is greater
 *
 * @param $testIm6Version
 * @param $im7Version
 * @return bool
 */
function isVersionGreaterEqual($testIm6Version, $im7Version)
{
    $versionCompare = version_compare_imagemagick($testIm6Version, $im7Version);
    // echo "version compare for $testIm6Version, $im7Version is $versionCompare \n";

    if ($versionCompare >= 0) {
        return true;
    }

    return false;
}

/**
 * On some systems, where the standard fonts aren't available, trying
 * to draw any text fails as the ImageMagick default font is null.
 *
 * This function just find a 'sensible' font to use, either from the
 * preferred list, or just the first one from queryFonts(). That 'probably'
 * is the right thing to do, as it makes the tests more stable.
 */
function findDefaultFont()
{
    $knownFonts = [
        'Courier',
        'Helvetica',
        'Times-Roman',
        'Liberation-Mono',
        'Utopia',
    ];

    $fontList = \Imagick::queryFonts();

    foreach ($knownFonts as $knownFont) {

        if (in_array($knownFont, $fontList, true) === true) {
            return $knownFont;
        }
    }

    if (count($fontList) !== 0) {
        return $fontList[0];
    }

    throw new \Exception("No fonts available on system, apparently.");
}

// Find and set a font for the Imagick object
function setFontForImagick(\Imagick $imagick)
{
    $font = findDefaultFont();

    $imagick->setFont($font);
}

// Find and set a font for the ImagickDraw object
function setFontForImagickDraw(\ImagickDraw $imagickDraw)
{
    $font = findDefaultFont();

    $imagickDraw->setFont($font);
}

/**
 * Checks that a named value exists in an array and it matches
 * an expected value.
 */
function check_value(array $values, $name, $expected_value)
{
	if (array_key_exists($name, $values) !== true) {

		$message = "Expected key '$name' not set. Array contains:\n";
		$message .= var_export($values, true);

		throw new \Exception($message);
	}


	$value = $values[$name];

	$epsilon = 0.01;

	if (($value < $expected_value - $epsilon) || ($value > $expected_value + $epsilon)) {
		$message = "Value for $name doesn't match expected. Expected: $expected_value, actual: $value";
		throw new \Exception($message);
	}

	echo "Value for '$name' is $value which is close enough to expected $expected_value\n";
}


/**
 * Checks that a named value exists in an array and it matches
 * one of a number of expected values.
 * This function exists because the expected values for Kurtosis can
 * change when the underlying maths changes: https://github.com/ImageMagick/ImageMagick/issues/6924
 */
function check_value_posibilities(array $values, $name, array $expected_values)
{
    if (array_key_exists($name, $values) !== true) {

        $message = "Expected key '$name' not set. Array contains:\n";
        $message .= var_export($values, true);

        throw new \Exception($message);
    }


    $value = $values[$name];

    $epsilon = 0.01;

    foreach ($expected_values as $expected_value) {
        if (($value > $expected_value - $epsilon) && ($value < $expected_value + $epsilon)) {
            echo "Value for '$name' is $value which is close enough to expected $expected_value\n";
            return;
        }
    }

    $expected_string = implode(", ", $expected_values);

    $message = "Value for $name doesn't match expected possibilities. Expected one of: $expected_string, actual: $value";
    throw new \Exception($message);
}


function check_value_with_epsilon(array $values, $name, $expected_value, $epsilon)
{
	if (array_key_exists($name, $values) !== true) {

		$message = "Expected key '$name' not set. Array contains:\n";
		$message .= var_export($values, true);

		throw new \Exception($message);
	}


	$value = $values[$name];

	if (($value < $expected_value - $epsilon) || ($value > $expected_value + $epsilon)) {
		$message = "Value for $name doesn't match expected. Expected: $expected_value, actual: $value, epsilon = $epsilon";
		throw new \Exception($message);
	}

	echo "Value for '$name' is $value which is close enough to expected $expected_value\n";
}PKʼn	[�J����#117_Imagick_segmentImage_basic.phptnu�[���--TEST--
Test Imagick, segmentImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$clusterThreshold = 5;
$smoothThreshold = 5;
$colorSpace = 1;

function segmentImage($colorSpace, $clusterThreshold, $smoothThreshold) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->segmentImage($colorSpace, $clusterThreshold, $smoothThreshold);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

segmentImage($colorSpace, $clusterThreshold, $smoothThreshold) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�)�R��,120_Imagick_setCompressionQuality_basic.phptnu�[���--TEST--
Test Imagick, setCompressionQuality
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$quality = 15;

function setCompressionQuality($quality) {

    $backgroundImagick = new \Imagick();
    $backgroundImagick->newPseudoImage(640, 480, "magick:logo");
    
    $imagick = new \Imagick();
    $imagick->setCompressionQuality($quality);
    $imagick->newPseudoImage(
        $backgroundImagick->getImageWidth(),
        $backgroundImagick->getImageHeight(),
        'canvas:white'
    );

    $imagick->compositeImage(
        $backgroundImagick,
        \Imagick::COMPOSITE_ATOP,
        0,
        0
    );
    
    $imagick->setFormat("jpg");    
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setCompressionQuality($quality) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[���))+126_Imagick_getImageChannelStats_basic.phptnu�[���--TEST--
Test Imagick, getImageChannelStatistics
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");
$identifyInfo = $imagick->getImageChannelStatistics();

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�k25328_Imagick_polaroidImageWithTextAndMethod_basic.phptnu�[���--TEST--
Test Imagick, polaroidWithTextAndMethod
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

function polaroidWithTextAndMethod() {
    $src1 = new \Imagick();
    $src1->newPseudoImage(640, 480, "magick:logo");

    $imagickDraw = new \ImagickDraw();
    $font = findDefaultFont();
    $imagickDraw->setFont($font);

    $src1->polaroidWithTextAndMethod(
        $imagickDraw,
        15,
        "Hello world!",
        Imagick::INTERPOLATE_SPLINE
    );

    $src1->setImageFormat('png');
    $bytes = $src1->getImagesBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

polaroidWithTextAndMethod() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[`��bug_73840.phptnu�[���--TEST--
ImagickPixel iterator
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--XFAIL--
This needs a significant amount of work to fix. The issue is the iterator object is going out of scope and being freed, but the row object still has a reference to that pixel iterator,  internally in ImageMagick. We need to stop the pixeliterator being freed while the row is still active.
--FILE--
<?php

//$im = new Imagick();
//$im->newImage(1, 1, 'black');
//
//// This works fine
//$it = $im->getPixelIterator();
//$row = $it->getCurrentIteratorRow();
//$rgb = $row[0]->getColor();
//
//$expected = array (
//  "r" => 0,
//  "g" => 0,
//  "b" => 0,
//  "a" => 1,
//);
//
//if ($rgb !== $expected) {
//	echo "values are incorrect:\n";
//	var_dump($rgb);
//}
//
//// This crashes with SIGABRT
//$row = $im->getPixelIterator()->getCurrentIteratorRow();
//$rgb = $row[0]->getColor();
//
//if ($rgb !== $expected) {
//    echo "values are incorrect:\n";
//    var_dump($rgb);
//}

echo "Not ok";

?>
--EXPECTF--
Not okPKʼn	[�
v
bug64015.phptnu�[���--TEST--
Test PHP bug #64015
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
$im = new Imagick(dirname(__FILE__) . '/php.gif');
var_dump($im->getImageLength());

// Both should return filesize in bytes.

var_dump($im->getImageLength());
var_dump($im->getImageSize());

// All cases below now return 0;
$cloned_im = clone $im;
var_dump($im->getImageLength());
var_dump($im->getImageSize());
echo "OK" , PHP_EOL;


?>
--EXPECTF--
int(2523)
int(2523)
int(2523)
int(2523)
int(2523)
OKPKʼn	[����019-readimages.phptnu�[���--TEST--
Imagick::readImages
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

try {
	$imagick = new Imagick(array (
							'magick:rose',
							'magick:rose',
							'fail_this_does_not_exist.jpg',
							'magick:rose',
	));
	echo 'Fail'. PHP_EOL;
} catch (ImagickException $e) {
	echo 'OK construct exception' . PHP_EOL;
}

$imagick = new Imagick();
$imagick = new Imagick(array (
						'magick:rose',
						'magick:rose',
						'magick:rose',
));
echo 'OK construct' . PHP_EOL;
$imagick->readImages (array (
						'magick:rose',
						'magick:rose',
						'magick:rose',
));
echo 'OK readImages' . PHP_EOL;
try{
	$imagick->readImages (array (
							'magick:rose',
							'fail_this_does_not_exist.jpg',
	));	
	echo 'Fail' . PHP_EOL;
} catch (ImagickException $e) {
	echo 'OK readImages exception'. PHP_EOL;
}

?>
--EXPECT--
OK construct exception
OK construct
OK readImages
OK readImages exceptionPKʼn	[�%88281_ini_settings_default.phptnu�[���--TEST--
OpenMP segfault hacks
--SKIPIF--
<?php 


require_once(dirname(__FILE__) . '/skipif.inc');
 
?>
--FILE--
<?php


$sleepCount = ini_get('imagick.shutdown_sleep_count');
$setSingleThread = ini_get('imagick.set_single_thread');

if ($sleepCount != 10) {
    echo "imagick.shutdown_sleep_count is not set to 10 but instead " . var_export($sleepCount, true) ."\n";
}

if ($setSingleThread != 1) {
    echo "imagick.set_single_thread setting is not true but instead " . var_export($setSingleThread, true) ."\n";
}


echo "Complete".PHP_EOL;
?>
--EXPECTF--
Complete
PKʼn	[�=���!077_Imagick_frameImage_basic.phptnu�[���--TEST--
Test Imagick, frameImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

//$color = 'rgb(127, 127, 127)';

$color = 'rgba(255,0,255,50)';
//$color = 'rgb(255,0,255)';
$width = 40;
$height = 40;
$innerBevel = 10;
$outerBevel = 10;

function frameImage($color, $width, $height, $innerBevel, $outerBevel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setImageFormat('png');

    $width = $width + $innerBevel + $outerBevel;
    $height = $height + $innerBevel + $outerBevel;

    $imagick->frameimage(
        $color,
        $width,
        $height,
        $innerBevel,
        $outerBevel
    );
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) {
        echo "Failed to generate image.";
    }
    return $imagick;
}

$imagick = frameImage($color, $width, $height, $innerBevel, $outerBevel) ;
// $imagick->writeImage("frame_image.png");

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[g�>r��'210_ImagickDraw_setFontStyle_basic.phptnu�[���--TEST--
Test ImagickDraw, setFontStyle
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFontStyle($fillColor, $strokeColor, $backgroundColor) {
    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(36);
    $draw->setFontStyle(\Imagick::STYLE_NORMAL);
    $draw->annotation(50, 50, "Lorem Ipsum!");

    $draw->setFontStyle(\Imagick::STYLE_ITALIC);
    $draw->annotation(50, 100, "Lorem Ipsum!");

    $draw->setFontStyle(\Imagick::STYLE_OBLIQUE);
    $draw->annotation(50, 150, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(350, 300, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFontStyle($fillColor, $strokeColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��^��%036_Imagick_blueShiftImage_basic.phptnu�[���--TEST--
Test Imagick, blueShiftImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$blueShift = 1.5;

function blueShiftImage($blueShift) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->blueShiftImage($blueShift);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

blueShiftImage($blueShift) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[/�'
��*257_Imagick_setImageChannelMask_basic.phptnu�[���--TEST--
Test Imagick, Imagick::exportImagePixels
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$imagick = new \Imagick();
$imagick->newPseudoImage(256, 256, "gradient:black-white");

$initialMask = $imagick->setImageChannelMask(\Imagick::CHANNEL_RED);
$imagick->brightnessContrastImage(-20, 20);
$imagick->setImageFormat("png");
$imagick->writeImage(__DIR__ . "/maskTest.png");

$redMask = $imagick->setImageChannelMask(\Imagick::CHANNEL_DEFAULT);

if ($initialMask != \Imagick::CHANNEL_DEFAULT) {
	echo "initialMask is not equal to \Imagick::CHANNEL_DEFAULT but instead is $initialMask\n";
}

if ($redMask != \Imagick::CHANNEL_RED) {
	echo "redMask is not equal to \Imagick::CHANNEL_RED but instead is $redMask\n";
}

echo "Ok";
?>
--CLEAN--
<?php
$f = __DIR__ . '/maskTest.png';
if (file_exists($f)) {
    unlink($f);
}
?>
--EXPECTF--
Ok
PKʼn	[V����!152_Imagick_swirlImage_basic.phptnu�[���--TEST--
Test Imagick, swirlImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$swirl = 100;

function swirlImage($swirl) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->swirlImage($swirl);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

swirlImage($swirl) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[_
��'277_Imagick_colorDecisionListImage.phptnu�[���--TEST--
Test Imagick::colorDecisionListImage
--SKIPIF--
<?php

$imageMagickRequiredVersion = 0x676;

require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('colorDecisionListImage'));

?>
--FILE--
<?php

$im = new Imagick("magick:logo");

$ccc = <<< CCC
<ColorCorrectionCollection xmlns="urn:ASC:CDL:v1.2">
    <ColorCorrection id="cc03345">
          <SOPNode>
               <Slope> 0.9 1.2 0.5 </Slope>
               <Offset> 0.4 -0.5 0.6 </Offset>
               <Power> 1.0 0.8 1.5 </Power>
          </SOPNode>
          <SATNode>
               <Saturation> 0.85 </Saturation>
          </SATNode>
    </ColorCorrection>
</ColorCorrectionCollection>
CCC;

$im->colorDecisionListImage($ccc);

echo "Ok"
?>
--EXPECT--
OkPKʼn	[j���)056_Imagick_distortImage_Perspective.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkFormatPresent('png');
?>
--FILE--
<?php

$distortion = 1;

        //$imagick = new \Imagick(realpath($this->rsiControl->getImagePath()));
        $imagick = new \Imagick();

        /* Create new checkerboard pattern */
        $imagick->newPseudoImage(100, 100, "pattern:checkerboard");

        /* Set the image format to png */
        $imagick->setImageFormat('png');

        /* Fill new visible areas with transparent */
        $imagick->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);

        /* Activate matte */
        $imagick->setImageMatte(true);

        /* Control points for the distortion */
        $controlPoints = array( 10, 10,
            10, 5,

            10, $imagick->getImageHeight() - 20,
            10, $imagick->getImageHeight() - 5,

            $imagick->getImageWidth() - 10, 10,
            $imagick->getImageWidth() - 10, 20,

            $imagick->getImageWidth() - 10, $imagick->getImageHeight() - 10,
            $imagick->getImageWidth() - 10, $imagick->getImageHeight() - 30);

        /* Perform the distortion */
        $imagick->distortImage(\Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[mDD+��016-static-methods.phptnu�[���--TEST--
Test static methods
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

echo gettype (Imagick::queryFormats ()) . PHP_EOL;

$im = new Imagick ();
echo gettype ($im->queryFormats ()) . PHP_EOL;

echo gettype (Imagick::queryFonts ()) . PHP_EOL;
echo gettype ($im->queryFonts ()) . PHP_EOL;

echo 'success';

?>
--EXPECT--
array
array
array
array
successPKʼn	[J���ll+062_Imagick_distortImage_BarrelInverse.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

//  Rsrc = r / ( A*r3 + B*r2 + C*r + D )
// This equation does NOT produce the 'reverse' the 'Barrel' distortion.
// You can NOT use it to 'undo' the previous distortion.

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

        $points = array(
            //0.2, 0.0, 0.0, 1.0
            0.2, 0.1, 0.0, 1.0
        );

        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_EDGE);
        $imagick->distortImage(\Imagick::DISTORTION_BARRELINVERSE, $points, TRUE);
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[����RR%169_ImagickPixel_construct_basic.phptnu�[���--TEST--
Test ImagickPixel, construct
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function construct() {

    $columns = 4;
    
    $exampleColors = array(
        "rgba(100%, 0%, 0%, 0.5)",
        "hsb(33.3333%, 100%,  75%)", // medium green
        "hsl(120, 255,   191.25)", //medium green
        "graya(50%, 0.5)", //  semi-transparent mid gray
        "LightCoral", "none", //"cmyk(0.9, 0.48, 0.83, 0.50)",
        "#f00", //  #rgb
        "#ff0000", //  #rrggbb
        "#ff0000ff", //  #rrggbbaa
        "#ffff00000000", //  #rrrrggggbbbb
        "#ffff00000000ffff", //  #rrrrggggbbbbaaaa
        "rgb(255, 0, 0)", //  an integer in the range 0—255 for each component
        "rgb(100.0%, 0.0%, 0.0%)", //  a float in the range 0—100% for each component
        "rgb(255, 0, 0)", //  range 0 - 255
        "rgba(255, 0, 0, 1.0)", //  the same, with an explicit alpha value
        "rgb(100%, 0%, 0%)", //  range 0.0% - 100.0%
        "rgba(100%, 0%, 0%, 1.0)", //  the same, with an explicit alpha value
    );

    $draw = new \ImagickDraw();
    $count = 0;
    $black = new \ImagickPixel('rgb(0, 0, 0)');

    foreach ($exampleColors as $exampleColor) {
        $color = new \ImagickPixel($exampleColor);

        $draw->setstrokewidth(1.0);
        $draw->setStrokeColor($black);
        $draw->setFillColor($color);
        $offsetX = ($count % $columns) * 50 + 5;
        $offsetY = intval($count / $columns) * 50 + 5;
        $draw->rectangle(0 + $offsetX, 0 + $offsetY, 40 + $offsetX, 40 + $offsetY);
        $count++;
    }

    $image = new \Imagick();
    $image->newImage(350, 350, "blue");
    $image->setImageFormat("png");
    $image->drawImage($draw);
    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

construct() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[j�;`��*244_Tutorial_psychedelicFontGif_basic.phptnu�[���--TEST--
Test Tutorial, psychedelicFontGif
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

function psychedelicFontGif($name = 'Danack') {

    set_time_limit(3000);

    $aniGif = new \Imagick();
    $aniGif->setFormat("gif");

    $maxFrames = 11;
    $scale = 0.25;

    for ($frame = 0; $frame < $maxFrames; $frame++) {

        $draw = new \ImagickDraw();
        setFontForImagickDraw($draw);

        $draw->setStrokeOpacity(1);
        $draw->setfontsize(150 * $scale);

        for ($strokeWidth = 25; $strokeWidth > 0; $strokeWidth--) {
            $hue = intval(fmod(($frame * 360 / $maxFrames) + 170 + $strokeWidth * 360 / 25, 360));
            $color = "hsl($hue, 255, 128)";
            $draw->setStrokeColor($color);
            $draw->setFillColor($color);
            $draw->setStrokeWidth($strokeWidth * 3 * $scale);
            $draw->annotation((int)(60 * $scale), (int)(165 * $scale), $name);
        }

        $draw->setStrokeColor('none');
        $draw->setFillColor('black');
        $draw->setStrokeWidth(0);
        $draw->annotation(60 * $scale, 165 * $scale, $name);

        //Create an image object which the draw commands can be rendered into
        $imagick = new \Imagick();
        $imagick->newImage((int)(650 * $scale), (int)(230 * $scale), "#eee");
        $imagick->setImageFormat("png");

        //Render the draw commands in the ImagickDraw object
        //into the image.
        $imagick->drawImage($draw);

        $imagick->setImageDelay(5);
        $aniGif->addImage($imagick);

        $imagick->destroy();
    }

    $aniGif->setImageIterations(0); //loop forever
    $aniGif->deconstructImages();

    $bytes = $aniGif->getImagesBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

psychedelicFontGif($name = 'Danack') ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[e����)267_ImagickDraw_getBorderColor_basic.phptnu�[���--TEST--
Test ImagickDraw, getBorderColor
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('ImagickDraw', array('getBorderColor', 'setBorderColor'));
?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';



$draw = new \ImagickDraw();

$draw->setStrokeColor($strokeColor);
$draw->setFillColor($fillColor);

$draw->setStrokeWidth(2);
$draw->setFontSize(72);

$opacityToSet = 0.1;

$borderColor = $draw->getBorderColor();
//var_dump($borderColor->getColor());

$draw->setBorderColor("red");
$borderColor = $draw->getBorderColor();

$borderColorElements = $borderColor->getColor();
if ($borderColorElements["r"] != 255 ||
	$borderColorElements["g"] != 0 ||
	$borderColorElements["b"] != 0) {
	echo "Wrong colors after set.";
}

$draw->line(125, 70, 100, 50);
$draw->line(350, 170, 100, 150);

$imagick = new \Imagick();
$imagick->newImage(500, 500, $backgroundColor);
$imagick->setImageFormat("png");
$imagick->drawImage($draw);




$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 



echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�����011_polygon.phptnu�[���--TEST--
Test polygon method arguments
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$im = new Imagick();
$draw = new ImagickDraw();

try {
	$draw->polygon(array( 
					array('x' => 1, 'y' => 2),
					array('x' => 'hello', 'y' => array())
			 		));

	echo "pass\n";

} catch (Exception $e) {
	echo "fail\n";
}

try {
	$draw->polygon(array(array()));
	echo "fail\n";
} catch (ImagickDrawException $e) {
	echo "pass\n";
}

?>
--EXPECTF--
pass
passPKʼn	[�5
��3086_Imagick_forwardFourierTransformImage_basic.phptnu�[���--TEST--
Test Imagick, forwardFourierTransformImage
--SKIPIF--
<?php 
require_once(dirname(__FILE__) . '/skipif.inc');
require_once(dirname(__FILE__) . '/skipprobefourier.inc');
?>
--FILE--
<?php


//Utility function for forwardTransformImage
function createMask() {
    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(0);
    $draw->setStrokeColor('rgb(255, 255, 255)');
    $draw->setFillColor('rgb(255, 255, 255)');

    //Draw a circle on the y-axis, with it's centre
    //at x, y that touches the origin
    $draw->circle(250, 250, 220, 250);

    $imagick = new \Imagick();
    $imagick->newImage(512, 512, "black");
    $imagick->drawImage($draw);
    $imagick->gaussianBlurImage(20, 20);
    $imagick->autoLevelImage();

    return $imagick;
}


function forwardFourierTransformImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->resizeimage(512, 512, \Imagick::FILTER_LANCZOS, 1);

    $mask = createMask();
    $imagick->forwardFourierTransformImage(true);

    $imagick->setIteratorIndex(0);
    $magnitude = $imagick->getimage();

    $imagick->setIteratorIndex(1);
    $imagickPhase = $imagick->getimage();

    if (true) {
        $imagickPhase->compositeImage($mask, \Imagick::COMPOSITE_MULTIPLY, 0, 0);
    }

    if (false) {
        $output = clone $imagickPhase;
        $output->setimageformat('png');
    $bytes = $output->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
    }

    $magnitude->inverseFourierTransformImage($imagickPhase, true);

    $magnitude->setimageformat('png');
    $bytes = $magnitude->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

forwardFourierTransformImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[{�u&&1122_Imagick_setImageCompressionQuality_basic.phptnu�[���--TEST--
Test Imagick, setImageCompressionQuality
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$quality = 15;

function setImageCompressionQuality($quality) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    //$imagick->setImageCompressionQuality($quality);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setImageCompressionQuality($quality) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[���"",160_Imagick_transparentPaintImage_basic.phptnu�[���--TEST--
Test Imagick, transparentPaintImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$color = 'rgb(39, 194, 255)';
$alpha = 0;
$fuzz = 0.1;

function transparentPaintImage($color, $alpha, $fuzz) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    //Need to be in a format that supports transparency
    $imagick->setimageformat('png');

    $imagick->transparentPaintImage(
        $color, $alpha, $fuzz * \Imagick::getQuantum(), false
    );

    //Not required, but helps tidy up left over pixels
    $imagick->despeckleimage();

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

transparentPaintImage($color, $alpha, $fuzz) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[z�150_Imagick_setregistry.phptnu�[���--TEST--
Test Imagick, setRegistry and getRegistry
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$tmpPath = Imagick::getRegistry("temporary-path");
if ($tmpPath == null) {
	//I am unsure if this is guaranteed - it might be set via policy.xml
	echo "Temporary-path was empty at start.".PHP_EOL;
}

$currentPath = realpath(dirname(__FILE__));

Imagick::setRegistry("temporary-path", $currentPath);

$tmpPath = Imagick::getRegistry("temporary-path");
if ($tmpPath === false) {
	echo "Failed to set temporary-path".PHP_EOL;
}
else if ($tmpPath == $currentPath) {
	echo "Temporary path was set correctly.".PHP_EOL;
}

$registry = Imagick::listRegistry();

if (array_key_exists("temporary-path", $registry) == true) {

	if ($registry["temporary-path"] === $currentPath) {
		echo "Temporary path was listed correctly.".PHP_EOL;
	}
}

// Since 6.9.9-26, no exception raised
$exceptionExpected = true;

if (isVersionGreaterEqual('6.9.9-26', '7.0.7-15')) {
    $exceptionExpected = false;
}

try {
	$tmpPath = Imagick::getRegistry("non-existent string");

	if ($exceptionExpected === true) {
		echo "Expected exception not thrown.\n";
	}
	else {
		echo "This is fine.";
	}
}
catch (\ImagickException $ie) {
	if ($exceptionExpected === true) {
		echo "This is fine.";
	}
	else {
		echo "Unexpected exception" . $ie->getMessage() . "\n";
	}
}


?>
--EXPECTF--
Temporary-path was empty at start.
Temporary path was set correctly.
Temporary path was listed correctly.
This is fine.
PKʼn	[�l�η�$194_ImagickDraw_rectangle_basic.phptnu�[���--TEST--
Test ImagickDraw, rectangle
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function rectangle($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();
    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $draw->rectangle(200, 200, 300, 300);
    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

rectangle($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��1���)115_Imagick_selectiveBlurImage_basic.phptnu�[���--TEST--
Test Imagick, selectiveBlurImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;
$threshold = 0.5;
$channel = Imagick::CHANNEL_DEFAULT;

function selectiveBlurImage($radius, $sigma, $threshold, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->selectiveBlurImage($radius, $sigma, $threshold, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

selectiveBlurImage($radius, $sigma, $threshold, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�����+223_ImagickDraw_setTextAntialias_basic.phptnu�[���--TEST--
Test ImagickDraw, setTextAntialias
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setTextAntialias($fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);
    $draw->setStrokeColor('none');
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(32);
    $draw->setTextAntialias(false);
    $draw->annotation(5, 30, "Lorem Ipsum!");
    $draw->setTextAntialias(true);
    $draw->annotation(5, 65, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(220, 80, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    //Scale the image so that people can see the aliasing.
    $imagick->scaleImage(220 * 6, 80 * 6);
    $imagick->cropImage(640, 480, 0, 0);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setTextAntialias($fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[����� 071_Imagick_flipImage_basic.phptnu�[���--TEST--
Test Imagick, flipImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function flipImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->flipImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

flipImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��M66(089_Imagick_medianFilterImage_basic.phptnu�[���--TEST--
Test Imagick, medianFilterImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('medianFilterImage'));
?>
--FILE--
<?php

$radius = 5;

function medianFilterImage($radius) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    @$imagick->medianFilterImage($radius);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

medianFilterImage($radius) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[a����)091_Imagick_linearStretchImage_basic.phptnu�[���--TEST--
Test Imagick, linearStretchImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$blackThreshold = 0.2;
$whiteThreshold = 0.2;

function linearStretchImage($blackThreshold, $whiteThreshold) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $pixels = $imagick->getImageWidth() * $imagick->getImageHeight();
    $imagick->linearStretchImage($blackThreshold * $pixels, $whiteThreshold * $pixels);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

linearStretchImage($blackThreshold, $whiteThreshold) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[� F&304_Imagick_is_imagemagick_borked.phptnu�[���--TEST--
Test whether ImageMagick is producing valid images.
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
//checkClassMethods('Imagick', array('averageImages'));
?>
--FILE--
<?php

function testOpacity() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:LOGO");

    $transparency = new Imagick();
    $transparency->newPseudoImage(640, 480, "xc:rgba(0,0,0,0)");

    $draw = new \ImagickDraw();
    $draw->setFillColor('white');
    $draw->setStrokeColor('white');

    $draw->circle(
        320,
        240,
        500,
        240
    );

    $transparency->drawImage($draw);

    $transparency->blurImage(50, 15);
    $transparency->writeImage(__DIR__ . "/304_output_trans.png");

    $checkerboard = new Imagick();
    $checkerboard->newPseudoImage(640, 480, "pattern:checkerboard");
    $checkerboard->setImageFormat('png');

    $output = clone $checkerboard;
    $canvas = clone $imagick;
    $canvas->compositeImage($transparency, \Imagick::COMPOSITE_COPYOPACITY, 0, 0);
    $output->compositeImage($canvas, \Imagick::COMPOSITE_ATOP, 0, 0);
    $output->writeImage(__DIR__ . "/304_output_before_softlight.png");

    $output = clone $checkerboard;
    $gradient = new Imagick();
    $gradient->newPseudoImage(640, 480, 'gradient:#979797-#373737');
    $canvas->compositeImage($gradient, Imagick::COMPOSITE_SOFTLIGHT, 0, 0);

    $output->compositeImage($canvas, \Imagick::COMPOSITE_ATOP, 0, 0);
    // TODO - we need to store a known good output and compare
    // the result image against that.
//    $output->writeImage(__DIR__ . "/304_output_with_softlight.png");
}

testOpacity() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . "/304_output_trans.png");
@unlink(__DIR__ . "/304_output_before_softlight.png");
?>
--EXPECTF--
Ok
PKʼn	[�e!�298_Imagick_kmeansImage.phptnu�[���--TEST--
Test Imagick, kmeansImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('kmeansImage'));
?>
--FILE--
<?php


function kmeansImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->kmeansImage(
		128,
		10,
		5
	);

    $imagick->writeImage(__DIR__ . '/kmeansImage_output_image.png');
//    $imagick->getImageBlob();
}

kmeansImage() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/kmeansImage_output_image.png');
?>
--EXPECTF--
Ok
PKʼn	[EN��.."096_Imagick_negateImage_basic.phptnu�[���--TEST--
Test Imagick, negateImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$grayOnly = 0;
$channel = Imagick::CHANNEL_DEFAULT;

function negateImage($grayOnly, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->negateImage($grayOnly, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

negateImage($grayOnly, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��d��2055_Imagick_distortImage_ScaleRotateTransform.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array(
            1.5, # scale 150%
            150 # rotate
        );
        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND );
        $imagick->distortImage( \Imagick::DISTORTION_SCALEROTATETRANSLATE, $points, TRUE );
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��ULL020-pixeliterator.phptnu�[���--TEST--
Pixel Iterator tests
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

function count_rows ($pix)
{
	$rows = 0;

	foreach ($pix as $r)
		$rows++;

	return $rows;
}

function count_objects ($pix)
{
	$objects = 0;

	foreach ($pix as $r)
		foreach ($r as $o)
			$objects++;

	return $objects;
}

function count_objects_with_iterator ($pixelRegion)
{
	$objects = 0;
	$row = 0;

	$pixelRegion->rewind();
	$pixelRegion->resetIterator();

	while($pixelRow = $pixelRegion->current()) {
		$row++;
		foreach ($pixelRow as $pixel) {
			$objects++;
		}

		$pixelRegion->syncIterator();
		$pixelRegion->next();
		if (!$pixelRegion->valid()) {
			break;
		}
	}

	return $objects;
}

$im = new Imagick ('magick:rose');
$it1 = new ImagickPixelIterator ($im);
$it2 = ImagickPixelIterator::getPixelIterator ($im);
$it3 = $im->getPixelIterator();


$count1 = count_rows ($it1);
$count2 = count_rows ($it2);
$count3 = count_rows ($it3);

if ($count1 != $count2 || 
    $count1 != $count3) {
    printf(
        "Row counts do not match %d %d %d",
        $count1,
        $count2,
        $count3
    );
}

if ($count1 != $count2 || 
    $count1 != $count3) {
    printf(
        "Object counts do not match %d %d %d",
        $count1,
        $count2,
        $count3
    );
}

$objects = array($it1, $it2, $it3);

foreach ($objects as $object) {
	$loop = 0;
	$count = count_objects($object);
	$countIterator = count_objects_with_iterator($object);
	if ($countIterator != $count) {
    	echo "Counting with iterator doesn't match counting with foreach $loop, $count != $countIterator.";
    	$loop++;
	}
}


$it1->newPixelIterator (new Imagick ('magick:rose'));

echo 'done' . PHP_EOL;
?>
--EXPECTF--

%s: ImagickPixelIterator::newPixelIterator is deprecated. ImagickPixelIterator::getPixelIterator should be used instead in %s on line %d
donePKʼn	[U��%157_Imagick_thumbnailImage_basic.phptnu�[���--TEST--
Test Imagick, thumbnailImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function thumbnailImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->setbackgroundcolor('rgb(64, 64, 64)');
    $imagick->thumbnailImage(100, 100, true, true);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

thumbnailImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[؅,���)215_ImagickDraw_setStrokeColor_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeColor
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeColor($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(5);

    $draw->line(100, 100, 400, 145);
    $draw->rectangle(100, 200, 225, 350);

    $draw->setStrokeOpacity(0.1);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeColor($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�P�h�h�anonymous_pro_minus.ttfnu�[���LTSHj*p��tOS/2Jb���`VDMXj�r<	P�cmap�L��cvt �
�!.fpgm�A��agasp	�Xglyfe�G& I|hdmxydM�0	�head���6hhea
g�T$hmtx4j5���locaq>"<!<�maxp�ax name�l��o�Y�postZ`�v�Tprep0��h `��$6�_<��E��o�[�u{>	���^�^��{paX
�^��3%�3�{�	��p��mlss@�����u �� ^1���u��#�u)��
��1����u�������1��111��1���1111��1��11������1u���1�������1�1�1��1��1�����/���������11��1������������1������1111�1�1���������1��+��������/������������7�������H�u.���1��11���������111��N��u�����u�7���������b��1���1���������������1����1��1��1��1��1����������11�w�wNN���������1111�1�1�1��^�11111111�������111��������111111111111������1/1/1/������������_�_�[�[�[��11��111���1��11��11+����1����1')�1��1��1��1��1���1��1��1�w1�������u1�w1��1��1111��111��11��11������111��1��11����111��11��11����111#1���1�����u1��1��111111��1�111��������������D��J���H�������������������HJ
J��p

















����	��
	��	��
��
����
���������������������������������� ��!��"��#��$��%��& ��' ��(!��)"��*#��+$��,$��-%��.&��/'��0(��1)��2)��3*��4+��5,��6-��7-��8.��9/��:0��;1��<2��=2��>3��?4��@5��A6��B6��C7��D8��E9��F:��G;��H;��I<��J=��K>��L?��M?��N@��OA��PB��QC��RD��SD��TE��UF��VG��WH��XH��YI��ZJ��[K��\L��]M��^M��_N��`O��aP��bQ��cQ��dR��eS��fT��gU��hV��iV��jW��kX��lY��mZ��nZ��o[��p\��q]��r^��s_��t_��u`��va��wb��xc��yc��zd��{e��|f��}g��~h��h���i���j���k���l���l���m���n���o���p���q���q���r���s���t���u���u���v���w���x���y���z���z���{���|���}���~���~�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������t

����2
"~�01QSwx�������������O\_�AWak��    " & 0 : D �!!"!&"""""""+"H"`"e###&#}#�#�$#%%%%%%%%$%,%4%<%l%�%�'������
 #�12RTxy�������������Q^�
@V`j��      & 0 9 D �!!"!&"""""""+"H"`"d###$#}#�#�$#%%%%%%%%$%,%4%<%P%�%�'��������������\��A���s�[������������������������������<����v���h�wޔޠމމ�r�o�]�-�.�0��޻ޱ�l��<�;�2�/�,�)�&����
�ܞ���R"f
���Z\8<@D2���������������������������������������`a�b�c�������d����e�����f���hgikjl�monpqsrtu�vxwy{z��}|~�������������0����������2�n
��	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_���������P��l���������Q��m�������������������������������������`a�b�c�������d����e�����f���hgikjl�monpqsrtu�vxwy{z��}|~����,K�	PX��Y����D�	_^-�,  EiD�`-�,�*!-�, F�%FRX#Y � �Id� F had�%F hadRX#e�Y/ �SXi �TX!�@Yi �TX!�@eYY:-�, F�%FRX#�Y F jad�%F jadRX#�Y/�-�,K �&PXQX��D�@DY!! E��PX��D!YY-�,  EiD�`  E}iD�`-�,�*-�,K �&SX�@�Y�� �&SX#!�����#Y �&SX#!�����#Y �&SX#!����#Y �&SX#!�@���#Y �&SX�%E��PX#!��#!�%E#!#!Y!YD-�	,KSXED!!Y-�+�+�+�B?0%+�	S?=%+�
gR=/+�L?0%+�S?0%+�
aR=%+�!	+�S?=%+�gR=/+�M?0%+�L?0%+�B?0%+�aR=%+�S?0%+�+� E}iD*oZy{�u��oZ{�u\���8888�x�Xp��H|������6�8���	�
�
�
�
�,���
z$�����X��V`6�n�"P�b���8J^$�x&��>��H�N�� X �!z!�"P"~"�#2#j#�$$ $z$�$�%0%�%�&&&&$&0&<&H&T&`''&'2'>'J'V'b'n'z'�'�'�'�'�'�'�'�'�'�((�))�*R*|*�+�,|-B-�-�-�.&.x/V/�00$0F0�11�1�2@2�2�3�4B4�5�6�7&7Z7r7�88P8v8�8�8�8�9999�:p:�:�:�;R;�;�;�<< <,<F<�<�==�>>h>z>�?@J@V@b@n@z@�@�@�@�@�@�@�A&A2A>AJAVA�A�A�A�A�BBfB�B�B�B�CCDC\C�DD"D~D�E*E�FPG*G�G�G�H2H�H�I�I�I�I�I�J0K
KK"K.K:KFKRK^KjKvL$L,L�L�M
MM"M.M:M�NHNTN`NlNxN�N�N�N�N�O�O�O�PP�P�P�P�P�P�P�QJQ�Q�R4R�R�SS&S2SrS~S�S�S�S�S�S�S�TTxT�T�T�T�T�T�T�U$U�U�U�U�U�U�U�U�VVVV*V6VBVNVZVfW W�W�W�W�W�XXXzYYYY$Y0Y<YHYTY`YlYxZZ�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�[n[z[�[�[�[�[�[�[�[�\\&\2\>\J\V\b\n\z\�].]T]z]�]�^B^�_,_l_�_�`4`�aDa|a�bbrb�cXc�dd*d6dBdNdZdfdree�f(gg�h(h�i4i�i�jj�j�k�l4l�mnnnbn�ozo�pp�p�p�p�p�qqq�q�rbs"sVsbs�t>t�u2u>uJu�u�v"v�v�wwVw�x�x�x�yy�y�z z�{{b||`|�}@}�}�~@~�~�L�����Z�Ђ��n��(�z��X���F�R�����L���@�x�&�̊ �X�6����0���ލ>����z������"�.���T������t��r�~���̔�4�@�L�X�d�p�|�����������ĔДܔ�����$�0�<�N���B�R������B�Ι�8�J�d�������ҙ���B�`�������X���Ȝ�>�p���؝�8�h���؞$�T���ڟ�H������$�`����0�J���¢�f���̣�<���1sE�/�	/�ܰ�а/�����EX�/�>Y�EX�/�>Y����01!!!!!s��B�G/���\/���� /�!/�ܱ
� �а/�
��а�а�а�а�а�а�а���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+�+��а�а�
а�а�а�а�а��01%##5!#5#53#5353!533#3!!��u�u����uu����������nm����m�����F��+2;��3+�$,+�)+��	а�а)�а$�а/��,�,]@	,,),9,I,Y,i,y,�,�,�,�,�,
]�,�а/�)� а)�/�@33&363F3V3f3v3�3�3�3�3�3
]��3�3]��6а$�=��/�*/�/*9�6*901.'7.54>753&&'#4&'66�T�d@��tT�\/1Z�T�K\8�
h`��1^�V�amjta��sb7R3
?_zD!e�ATmI@p[9
��
Dbw=X��)C��Dx_A�Vy/�"}�Mg'�+9B����7+7CE�2

+�	,+�	8+@&6FVfv�����
]���]�",9�"/��"�"]@	"")"9"I"Y"i"y"�"�"�"�"�"
]@f2v2�2�2�2�2�2]@
22&262F2V2]��2�2]��8�8]@	88)898I8Y8i8y8�8�8�8�8�8
]�>	��E��/�/�EX�/�>Y�EX�/�>Y�';+�5+��/��/�/]@//(/8/H/X/h/x/�/�/�/�/�/
]��A�@AA'A7AGAWAgAwA�A�A�A�A�A
]��A�A]01#".54>32%'#".54>324&#"3264&#"326�'E\43\D&&D\34\E'��^Fy)D^34\C))C\43\F)��V@?VV?@V�X?@VV@?X13\D))D\33_C))C_���<��5ZF''D\54\C''C\@XX@?XX��@VV@?XX����/'2B�0+�;+@00&060F0V0f0v0�0�0�0�0�0
]��0�0]�09�/�3��;�;]@	;;);9;I;Y;i;y;�;�;�;�;�;
]�EX�/�>Y�EX�/�>Y�EX�	/�	>Y�(�@(('(7(G(W(g(w(�(�(�(�(�(
]��(�(]��>��>�>]@>>(>8>H>X>h>x>�>�>�>�>�>
]01'#".54>7&&54632667267'>54&#"�P;�^�J�iL�d</@%>D��DwX1>^w9h0=�!N�5��4?}V#93eM/hN+E25V�N�k�BT8`�L?iTCN�N��)LlFNnTD%��B�F�;1P-uV`�r/wK:AP5NZ#;NuD/�/�EX�/�>Y01#/+f)�+������>�
+@&6FVfv�����
]���]�
/�EX�/�>Y01.54667yk�p<<p�kH_�g55g�a��T������TZL���y{���L���>�
+���]@	)9IYiy�����
]�/�EX�/�>Y01'>54.'7�<s�kH_�i55i�_Hk�s<5�����TZL���yy��LZT��#��G�EX�/�>Y�EX�/�>Y�9�9�9�
9�
9�901%#'%%73%���V7��t��7V��7LtL���^�}��^��`���z�
��7�
+��а�	��/�EX�/�>Y�+��а��01!#!5!3!��ht�h�t���i�u��i�b��/�EX�/�>Y01%#b��`����/��	�+01!5!��\��uu/��/�EX�/�>Y01!#53/���)��J	�/�/01'��b���4����/%��&/�'/�&�а/��@&6FVfv�����
]���]�'�ܲ9����]@	)9IYiy�����
]�9�EX�/�>Y�EX�!/�!>Y�!9�����]@(8HXhx�����
]�!��@'7GWgw�����
]���]�!901&&#"324&'4>32#".h#c0�^��Rc�����8v����x66v����w5���Z`��}�+H�;����qq���qq���:�+����EX�/�>Y�EX�/�>Y��9�а�01!!53#52>533���NjD=�vN��u{)]M4�Lv�J�\
w/ r�/�+�	+�	�а/�	�
�	�"��EX�/�>Y�EX�
/�
>Y������]@(8HXhx�����
]01!3!5>54&#"#4632s1P=�9'u���'G8 �u����T�sB�6VXb?�3��y'NPV/x{���1\����/6Գ$%+�/+�/�	��$�а/���]@	)9IYiy�����
]�2%9�/�8��EX�*/�*>Y�EX�/�>Y�+���@'7GWgw�����
]���]�*�!��!�!]@!!(!8!H!X!h!x!�!�!�!�!�!
]�2901#".'732>54.#52>54&#"#4>32�Fu�T_�}N���;hN-3`�]Dd>�t���Bv�eT�m=�{FhF%hV�d84d�b��'H`;Pe9u5XDn���f�o;1\�Vo�
;[n�Q�
+�
�а���EX�/�>Y�EX�/�>Y�+����	а�а�
а�01!!53!533#3�����#������Iuw-��w�w��u���*��+/�,/�ܱ���]@	)9IYiy�����
]�+�а/��"в#9�EX�/�>Y�EX�/�>Y�&+���@'7GWgw�����
]���]��!�#901#".'732>54.#"#!!6632�H}�h^�yJ�4TrDP}X//V}LP�6�1�X<�Pe�zD�`�}H8h�bDuR/5_}GJ\5C@�u�h:?Aw������/"6߳
+�#+@&6FVfv�����
]���]��#�#]@	##)#9#I#Y#i#y#�#�#�#�#�#
]�
�-��EX�/�>Y�EX�/�>Y�(+�����]@(8HXhx�����
]�9��2�@22'272G2W2g2w2�2�2�2�2�2
]��2�2]01#".54>32&#">324.#"32>�G�e��s3E�ϋZZ�i�k5Nfw<f�{E�-T{MLZ1(T}VJ{Z1�l�yBq���n�PbP��x3ZA'E{�gJ�^62Z{KJ�d:1Z�1�K�/�/�ܱ��а/�

��EX�
/�
>Y�EX�/�>Y�EX�/�>Y���01
#67!#!�{�P�#X�t��ug��������B%
}�u�����/'3G1�>
+�(+��(�(]@	(()(9(I(Y(i(y(�(�(�(�(�(
]�4(9�4/��4�4]@	44)494I4Y4i4y4�4�4�4�4�4
]��
9@>>&>6>F>V>f>v>�>�>�>�>�>
]��>�>]�
>9�/�#
9�.��EX�/�>Y�EX�/�>Y�19+�919�#919��+��+�+]@(+8+H+X+h+x+�+�+�+�+�+]�++]��C�@CC'C7CGCWCgCwC�C�C�C�C�C
]��C�C]01#".54>7.54>324&#"3264.#"32>�J��bd��J'Ii?7V;!Fv�TT�vF!;X8@hJ)���������/7_xDDx_77_xDDx_7og�`..`�g5l]=<P^+X�X--X�X+^P<=]l)nngzz�	Ge??eGFfD!!Df����/#7�$+�
.+�
��@$$&$6$F$V$f$v$�$�$�$�$�$
]��$�$]��.�.]@	..).9.I.Y.i.y.�.�.�.�.�.
]�
�9��EX�/�>Y�EX�/�>Y�)+���@'7GWgw�����
]���]�9��3��3�3]@33(383H3X3h3x3�3�3�3�3�3
]014>32#"'732>5#".732>54.#"H�e��s3F�щZ-wEi�m5Lfy:f�{F�-T{MLZ1)S}VJ{Z1\m�yAq���o�P21P��y3ZB'F{�fJ�^51X}LJ�d91Z�u/�/�+��а���EX�/�>Y�EX�/�>Y01#53#53/�����\��b�*�+�EX�/�>Y�EX�/�>Y�901#53#/��3��`����/���	�/�/01%M�M�P-OP�P����+�+01!5!!5!��\��\�w��u�����	�/�/01'7�N��PN�O��P��/!��+�+��а/�����]@	)9IYiy�����
]��#��EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]01!#53#4>54&#"'6632/��^9VfV:�;ViV;lg?_A'{ð���DNubV\mENzk^\c9Xd)E`:�ª����/O`@�2	D+�X+�+�	&+��ж�&�&�&]��&�&]@
I&Y&i&y&�&�&]@		&&)&9&]@V2f2v2�2�2�2�2�2]@22&262F2]��2�2]��P�@XX&X6XFXVXfXvX]@�X�X�X�X�X]��X�X]�EX�K/�K>Y�EX�=/�=>Y�[+�S+��в=K9�S9�[�!а!/�K�-��-�-]@--(-8-H-X-h-x-�-�-�-�-�-
]�=�7�@77'777G7W7g7w7�7�7�7�7�7
]��7�7]01#".55#".54>325332>54.#"3267#".54>32%&&#"32>5�6ZC6*^>BX5"DeC#N�('>YuJq�]((]�pR�5;��\�oO22Op�[��x6��?&&7$94%<*�D�qH&3 K^:`z@J�g=#%5�� 6Sd/E�{iM+`��usӢ`:1D�3\~��WY��~[3o��1'-K_1mn-I[-���
0�EX�/�>Y�EX�/�>Y�EX�/�>Y�+01!#!#3�{��y���}��u������_1�$��!+�+��
��
9���]@	)9IYiy�����
]�!�а�&��EX�/�>Y�EX�/�>Y�+�
9����!�01#!!24.#!!2>4&#!!26���`�R�}N��:Zl2�8lV8-������u��J�j�JLaEX/�E1V��{�������/%�&/�'/�ܰа/�&�а/��
�а��@&6FVfv�����
]���]��%а%/�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�
9�
����]�(]@8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>3253#4.#"32�3谉�y55y��y�)uu5Z{Dj�T##T�j�`V��q���qVX��TE{Z3d��cbǟe'1�p�/�/�ܰ�а/��
��
�
]@	

)
9
I
Y
i
y
�
�
�
�
�

]����EX�/�>Y�EX�/�>Y�����01#!!2#!!2�7y���X���y9����������hk����1s=�
+�
���EX�/�>Y�EX�/�>Y�+����
�01!!!!!!!s��B�G���u�-u�1s	6�+����EX�/�>Y�EX�/�>Y�+���01!!!#!s�G���B��-u������/+ӳ 
+�
+���@  & 6 F V f v � � � � � 
]�� � ]��+��-��EX�/�>Y�EX�/�>Y�EX�/�>Y�+(+�9�����]@(8HXhx�����
]��%�@%%'%7%G%W%g%w%�%�%�%�%�%
]��%�%]01#".54>3253#4.#"3267!5!�7y����y55y��y�)uu5Z{Dj�T##T�j��������oq���qVX��TG{X3d��cbǟe��u1s`�/�
/�ܱ��а/��а�	��EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�	+01!#!#3!3s��щ�/�\����H��=�
+�EX�/�>Y�EX�/�>Y����а	а�
а�01!!53#5!#3����/��u/uu������sL�+�EX�/�>Y�EX�/�>Y�
�@

'
7
G
W
g
w
�
�
�
�
�

]��
�
]01#"&'732>53s�ٮ�/w+�}\s=��ﷶ-��Js�H'1�J�+����EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�901!##33���N���/������{��1s'�+�EX�/�>Y�EX�/�>Y��01!!3!s�����\1sm�
/�/�ܱ�
�а/��
9�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�9�
901!###33s��b扲��?�_����V�1s	b�
/�/�ܰ
�а/�����EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�901!##33s�����P��������/'�(/�)/�ܰ(�
а
/�����]@	)9IYiy�����
]�
��@&6FVfv���]���]���]�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>324.#"32>�6v����w55y����v8�1\�Vk�T!!T�kj�T ���qq���qq��ϒMd��cbǟee��1�
r�/�/�ܰ�а/������]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�+���01#!#!24&#!!26���ى��쉪���'����������y�y����/ 0�1/�2/�ܱ!��!�!]@	!!)!9!I!Y!i!y!�!�!�!�!�!
]�а/�!�а/�1�а/�+�@++&+6+F+V+f+v+�+�+�+�+�+
]��+�+]�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y���@'7GWgw�����
]���]�а/��&��&�&]@&&(&8&H&X&h&x&�&�&�&�&�&
]��.�013267#"&'.54>324.#"32�/i�w��#15��n�g15y����v8�"R�hk�T!�����}�w�fu��s�灃�qq��cƢdd��c����)1���/�/�
ܰа/��а/��
����]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�EX�/�>Y�+��а/���01!###!24&#!!26����ˉ���:d�R���%��/����R�\8o�{�y���/?ܳ
 +�*)+�)���а)�,а �6�*�A��EX�)/�)>Y�EX�+/�+>Y�EX�%/�%>Y�EX�	/�	>Y�EX�/�>Y�;+�%9���@'7GWgw�����
]���]�(%9�%�1��1�1]@11(181H1X1h1x1�1�1�1�1�1
]01#"&'#332>54.'.54>3253#4.#"�Dr�Pn�6tt>`}A:bJ+7]t<G�pFDn�M_�-yy1Tl<5`H+3Vq;J�tJTR�`4RP��CoP-!=X8?Z@-7TyZP}V-NP���;gI+5T:3H7-@Z��k�/�
а
/�	ܲ@	]�ܲ@]�
�	��
�
����EX�/�>Y�EX�/�>Y�����а	а�
а�01#!3!53!#!�u������u�`D��uu/���1��sp�/�/�ܰ�
а
/�
����EX�/�>Y�EX�/�>Y�EX�/�>Y��@'7GWgw�����
]���]01#".5332>53s1g�lm�e1�=mXXo=��o�FF�oF��;�lHHl�;H���1�EX�/�>Y�EX�/�>Y�EX�/�>Y�901#3�L��P�}{���r����Y�EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�9�9�901##33�뢅��鑸������}������C2���z�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��в9�аа	а
а��ав9�аааа
�а�01!!533!53#5!##5!#3���X��X����mum��iuq��u��Tuuuu�^�uu������g�+�9�EX�/�>Y�EX�/�>Y�EX�/�>Y�����аа�
ааав9�а�01#3!53#5!##5!�j������jpl��lp����Buu�quu��u1w
U�/�/�ܰ�а/�в9��
��
��EX�/�>Y�EX�/�>Y����
�01!!5!#!!3w�����u1�w)uu/���u��Eu����-�	+�����EX�/�>Y�+���01!!!!�t����Ho�����J	�/�/017�b�b�43���/�0�+��	����EX�/�>Y�+���01!5!!5!/����u��qho/��/�/�EX�/�>Y�901##3����ǘu�/e����F���	�+01!5!��\��u���T	�/�/01%7�)�RB5A�m����s�&7�8/�9/�8�а/�9�ܱ�в9��,а�5�@55&565F5V5f5v5�5�5�5�5�5
]��5�5]�EX�/�>Y�EX�/�>Y�EX�$/�$>Y�0+�����]@(8HXhx�����
]�$9�$�'�@''''7'G'W'g'w'�'�'�'�'�'
]��'�']�0�-а-/01'4>3254.#"'6632#5#"&2>55&&#"X��`%;56 ;V^!h�L>T�}L�uF�$[dd-��wV�`5C{-J�f>s�XwECDX38/g3A'Q�\���-D+�3LV#X
-H5;c1���$�%/�&/�ܰ%�
а
/�	�в
9�����]@	)9IYiy�����
]�	���EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y� �@  ' 7 G W g w � � � � � 
]�� � ]� 9�����]@(8HXhx�����
]�
901#"&'#366324.#"32>�B{�lL�<��<�Ll�{B�)T}R�u<�NR{T+�k��H65T�539I��jP�d:}�A8:d�����(װ)/�*/�ܰа/�)�а/���а� �@  & 6 F V f v � � � � � 
]�� � ]�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�
9�
����]@(8HXhx�����
]��%�@%%'%7%G%W%g%w%�%�%�%�%�%
]��%�%]01%#".54>3253#4.#"3267�;͍m��HBz�l+ZP@{{-Nl>T}T+1]�Rh�+�\mH��mj��I)9'���>fJ):d�PP�b:RD����s&�'/�(/�ܱ�'�
а
/��а�а
��@&6FVfv�����
]���]�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�$�@$$'$7$G$W$g$w$�$�$�$�$�$
]��$�$]�$9�������]@(8HXhx�����
]01!#5#".54>32#5!&&#"327s�;�Jo�yAAy�oJ�;�D�;�NR}T++T}R�vV58H��kj��I55Tu��A::d�PP�d:}������"{�EX�/�>Y�EX�
/�
>Y�"+�
��@'7GWgw�����
]���]�����]@(8HXhx�����
]013267#".54>32'&&#"���i�)`FŽl��HA{�mw�w9���BpV:���V@BbgH��mj��IP��wu��+PqC��/��+��а���EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�����аа�а	а����]@(8HXhx�����
]01!3!53#534632&&#"!��s�������/A?+���/�Fuu�u��u�����us�.�//�0/�ܰ/�а/�(�@((&(6(F(V(f(v(�(�(�(�(�(
]��(�(]�	а	/���а� ��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+��+�@++'+7+G+W+g+w+�+�+�+�+�+
]��+�+]�+9��#��#�#]@##(#8#H#X#h#x#�#�#�#�#�#
]�#901%#"&'732655#"&54>3253&&#"3267sBw�c��G`+�h��z��Ay�mL�;��;�NR}R+��N�;
`�h7hbJAX��dl��j��I55T�A::d�N��;B1s��/�/�ܱ��а/��в9�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]�
901!#4&#"#33 s�lyL{V-��c�X?}�Fu�R�^������
_�+�9�/�����	��EX�/�>Y�EX�
/�
>Y�EX�/�>Y��
���а
�01#53!53#5!3/�������]�^���u�u���u�>�+�9�/���EX�/�>Y�EX�/�>Y�
+���01#53"'732>5#5!麺�s�bi$uVD\5�\�^��\�HLR'HfB/u�\��1�Q�+����EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�9�
901!##33�������-��������T��	D�+������EX�/�>Y�EX�/�>Y�����а	�01!!53#5!3����]�u/u�\��!ڰ"/�а/�
ܲ�
]�@
]�ܲ�]�@]��
�	���в
9�
9��#��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y�����]@(8HXhx�����
]�в9�901!#4&#"#4&#"#3632632��85NI�951:!
��+��1D|wo�PX�����PX:Zn6���������1s���/�/�ܱ��а/��в9�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]�901!#4&#"#33 s�lyL{V-��c�X?}�Fu�R�^���������'�(/�)/�ܰ(�
а
/�����]@	)9IYiy�����
]�
��@&6FVfv���]���]���]�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>324.#"32>�E��om��EE��mo��E�/\�RR�Z//Z�RR�\/�m�HH�mj��II��jP�f::f�PP�b88b�1����$�%/�&/�ܰ%�
а
/�	�в
9�����]@	)9IYiy�����
]�	���EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y� �@  ' 7 G W g w � � � � � 
]�� � ]� 9�����]@(8HXhx�����
]�
901#"&'#36324.#"32>�D{�lJ�<���l�{D�+V}RN�<<�NR}V+�m��H65�7VlG��jN�d::A�A8:d���s�$�%/�&/�%�а/�&�	ܱ�в	9���@&6FVfv�����
]���]����EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�� �� � ]@  ( 8 H X h x � � � � � 
]� 9���@'7GWgw�����
]���]�9014>3253##".73267&&#"Dz�l���;�Jl�zD�+V}RN�;;�NR}V+�j��GlV���56H��mN�d:8A�A::d�����+��
����EX�/�>Y�EX�/�>Y�EX�
/�
>Y�����]@(8HXhx�����
]�
��а
в
901&#"3!53#5!!2qJfT�\1����\^Gi-!%Hu�P��uu�u�������2߰3/�4/�ܱ���]@	)9IYiy�����
]�3�а/�)�@))&)6)F)V)f)v)�)�)�)�)�)
]��)�)]�EX�/�>Y�EX�/�>Y�.+���@'7GWgw�����
]���]��$��$�$]@$$($8$H$X$h$x$�$�$�$�$�$
]01#"&'73 54.'.54>32&&#"�R��L�\=g�k53Vo=N�MGw�V{�N7P�`+iZ=3Vo=L�NRl@J<vAF�'1<dRFfD 95k8-%;-'/:d�����+����EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��	�
ааа��@'7GWgw�����
]���]01#".5#533!!3267�ǕR�`5�Ӊ��s!;T6f�
)��6`�P�uu��u�'3ZD'e1��s���/�/��а/���ܱ�в9�EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX�/�>Y��@'7GWgw�����
]���]�901332>53#5# 1�myLzV-��b������}�Fu�R��\�{����1�EX�/�>Y�EX�/�>Y�EX�/�>Y�901#3�l��j�NL��\���1����Y�EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�9�9�901##33ý�������������\��T��������w�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��9�аа	а
а��ав9�аааа
�а�01!!533!53#5!#7#5!#3��R��K�����V��^����y��yy`P{{��{{������u��#�EX�/�>Y�EX�/�>Y�
+01#"'7326773��'�V``/ZD39�`�PJ��pb=#vB-����//w�
X�/�/�ܰ�а/�а/�9��
��
��EX�/�>Y�EX�/�>Y����
�01!!5!#!!3w��{��u/��uu��uu�F�����&F�#	+��а�&�а#���EX�/�>Y�+�
	+�	
9��%�01#".54#5254>33#"33�\=gI)��)Ig=\\�-@%%>/�\��+Jh>��p��>fJ)o��R"J@/-@I#�X���F��+�/�/01#3���������&F�
+��
	�а
�а�#��EX�/�>Y�+�&+��
�&901"##53254>7.54##5323�)Lf=]]�/@%%B-�]]=fL)����V>fL)q��#K@+-@J"��o+Jf<�R������#2>7#".#"'>32�%3!�+Ff@=T9+)2"%3!�+FdB=T;+)/u/RsAZ�pB/FPE//RpBX�qA/ERF/������&"�s����%h�

 +�� � ]@	  ) 9 I Y i y � � � � � 
]� 
9�EX�/�>Y�EX�/�>Y�EX�/�>Y�#+�+014>32#!#&&32654&#"�">R//R=#?3��{��y��3?���TP77PP77P�/R=##=R/Bf�u���h����_�7PP77PP���/.�'+�
+�
+���@''&'6'F'V'f'v'�'�'�'�'�'
]��'�']��0��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�	�9��"��"�"]@""("8"H"X"h"x"�"�"�"�"�"
]��,�@,,',7,G,W,g,w,�,�,�,�,�,
]��,�,]01#5255.54>3253#4.#"32�-��RX���n15y��y�)uu5Z{Dj�T##T�j�`V���X_u�t����qVX��TE{Z3d��cbǟe'��1s�&&�s��1ss&/�s�������&0�s��1��s�&6�s����uS&B������uT&BA����uW&B������u&B�����u�&B������u�&B������1�)+�
+�+���@))&)6)F)V)f)v)�)�)�)�)�)
]��)�)]��3��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�	�9��$��$�$]@$$($8$H$X$h$x$�$�$�$�$�$
]��.�@..'.7.G.W.g.w.�.�.�.�.�.
]��.�.]01%#5255.54>3253#4.#"3267�5�sRX��d�u?Bz�l+ZP@{{-Nl>T}T+1]�Rh�+�Rf�X_u�K�gj��I)9'���>fJ):d�PP�b:RD�������S&F���������T&FA�������W&F���������&F�����S&�������T&�A����W&�������&����1s�&O��������S&P��������T&PA������W&P��������&P��������&P����1��sT&V���1��sV&VA��1��sX&V���1��s&V��u��/�EX�/�>Y01'#5'37��n��n����bp�����'|�(/�)/�(�а/�)�
ܰ�
�@&6FVfv�����
]���]�
�
���]@	)9IYiy�����
]�+�#+014>32#".732>54.#";e�NL�d;;d�LN�e;\+Nd<9fN++Nf9<dN+^L�e;;e�LN�d<<d�N;eM++Me;:fN++Nf�#��$/�%/�ܱ�$�а/��а�
а�а��@&6FVfv�����
]���]�� ��EX�	/�	>Y�EX�/�>Y�+��а/� 	901%&54>753&&'667#���7g�X��9`)�\\�)`9����yy��!�^�}R��kVB>P�N?BVj����!��1�/,��+��в9��*��EX�/�>Y�EX�"/�">Y�+��а����]@(8HXhx�����
]�"��$а%а�+�0134>32&&#"3#3 7#!532>5#1�-TxN3_K8}R<b\��3)�pmB����J>"0
��L�\5#?^<ZI{p��u��Pi�;��u!19;�F��?O��P/�Q/�P�а/�@�@@@&@6@F@V@f@v@�@�@�@�@�@
]��@�@]�а/��аQ� ܰа/� �H��H�H]@	HH)H9HIHYHiHyH�H�H�H�H�H
]�а@�а �&аH�9��4++�+01467&&54>32&&#"#".'732>54.76654.'D?H<K?m�RP�{R���-^L/j���k8;3@Bq�RV��`��7eI+j���j�^��P)1T��LF==L�6(y\P{T-+X�\��3R<IZFB`�sH�5+{XP�^5+X�`!��;V:XlJ>X�pI\B9'!X3NfH9!#^�����/�EX�/�>Y014>32#".�<d�NL�d<<d�LN�d</L�d<<d�LN�d<<d����+�+�+��а�а��@&6FVfv�����
]���]�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�+��а/�
�
��а/01!###$!!#�����y��rq�/��7'Fu�����}f�'1���/;�$%+�5+�0+�+���]@	)9IYiy�����
]���]@	)9IYiy�����
]@55&565F5V5f5v5�5�5�5�5�5
]��5�5]�EX�+/�+>Y�EX�$/�$>Y�EX�/�>Y��@'7GWgw�����
]���]�+����]@(8HXhx�����
]01#"&'732654.54>54&#"#4>32�5_�Kc�BN5mD\y<VhV<BPARdJ^5�P�{LwQ+APA;XfX<=kM.85h1/VZ8K819N9DL?J=Fd;f�H��LL��^-Lh>RbA4"+/9Pou^�'7@��

+�,-+�48+�
+���]@	)9IYiy�����
]@&6FVfv�����
]���]�(
9�7
9��8�8]@	88)898I8Y8i8y8�8�8�8�8�8
]�,�<��EX�=/�=>Y�#+�+�/;+01#".54>324.#"32>#'##!274&##326^T��yl˜^X��uqȚZAL��gf��MM��he��N���#�3^H)b^3:;}}7>�o˙\P��s̘XT��wd��OK��hi��LL������7P7Py
�-?�<�b-Aճ8
$+�+�
.+@&6FVfv�����
]���]��.�.]@	..).9.I.Y.i.y.�.�.�.�.�.
]@88&868F8V8f8v8�8�8�8�8�8
]��8�8]��C��EX�)/�)>Y�=+�+�+�)�3��3�3]@33(383H3X3h3x3�3�3�3�3�3
]01#".54>32&#"327%#".54>324.#"32>b`�P�`53^�T�`j7�fuqj�7jT��yl˜^X��uq˙ZAN��gf��MM��he��N�5`�OL�c9�Hd�id�d�n˚\P��s͚XV��we��PN��ih��LL���^n�	+�	+�	+�
9�/�/�/�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�9�
9��
�а�01###33###5!^n�N�o�yy��s�q������N�v0��Hq�A�q���T	�/�/01'�P%���A�^�0�+�EX�/�>Y�EX�/�>Y���а�01#53#53麺����^�����A�EX�/�>Y�EX�/�>Y�+�+��а�а�а��01%!#7!5!!5!73!!!���ZoZ��J��!ZnZ���컻�pPo��o�����V�+��	а���EX�/�>Y�EX�/�>Y�EX�/�>Y�+�+�����01!!##!!!!!���o��X����o��u��y�7y�s��m����/&2�3/�4/�3�а/�а/�4�ܰ
а
/�����]@	)9IYiy�����
]�
9��'�'�']@''&'6'F'V'f'v'�'�'�']��'�']�*
9�EX�	/�	>Y�EX�/�>Y�	�.��.�.]@..(.8.H.X.h.x.�.�.�.�.�.
]�
	.9��"�@""'"7"G"W"g"w"�"�"�"�"�"
]��"�"]�"9�	9�*	901'7&&54>327#"&'4'32>%&&#"-N#5y����<�R##6v����;�j"��)�kj�T �+e0�^k�T!�TT�h��qj[��VT�i��qgZ�n�y�rN`e��bE�?�V\d�������)3R�/
+@//&/6/F/V/f/v/�/�/�/�/�/
]��/�/]�'+�#+��а�а#�,а'�2�01#"&'#".54>3266324&#"326%&#"32�#?X3Hu55oN1VA%%?V3No55uH1VA%ZV;JJ;T�RF�;VR?��3ZB&CZXE&BZ33[A%FZZF%A[3HT��^A�XDA^�F��-�	+��а�	��+�+��а��01!#!5!3!!5!��fp�f�p��\���Z�q��g�/q��F��	�/�	+01%!5!M�M�P@��-M�N�N�hq��F��	�/�	+01'7!5!��N��PN���M��N�hq�n�+��в9����EX�
/�
>Y�EX�/�>Y�EX�/�>Y�+�	+��а�в
9��а	��01!#!5!5'!533333!!��s��q�l���̙!!����n���h�x#�y���T�jy�#1��s���/�/�ܱ��а/��
��EX�	/�	>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�	9��@'7GWgw�����
]���]�901!#5!"'#332>53s�`�{T��myLzV-��8�j��}�Fu�R�����/%��&/�'/�&�а/�'�ܲ9����]@	)9IYiy�����
]���@&6FVfv�����
]���]�EX�	/�	>Y�EX�/�>Y�	9�!�@!!'!7!G!W!g!w!�!�!�!�!�!
]��!�!]01466$7&$'7#"&4&'32>t��N���-���pG��y�A��b��\�b3bi�zT}�;u5�����ϒN�o7d/Fb}Lt�@t�+sC�+��а�
��EX�/�>Y�EX�/�>Y��	���01!!55!#!!3s��H��Hy��E��+yuu�GD���E�W�/�
/�ܱ��а/���EX�
/�
>Y�EX�/�>Y�EX�/�>Y�
��ааа	�01##!##5!����䊺���\��\�u������/�/�ܱ��а/���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�	/�	>Y��@'7GWgw�����
]���]�	9���ааа�01%3267#".5##65#5!#�F3#)R-VC)�+�����58	q:V7Z�s�d���{{�u��'�+�	+�+�	�а/��а/01&&#"!"&'53265!2�?)���rC#;-��D#'y����sy�5}���+%48İ9/�:/�9�а/�:�ܱ�в9��+а�2�@22&262F2V2f2v2�2�2�2�2�2
]��2�2]��5а�6а6/�EX�/�>Y�85+�&!+�/+��
а
/�����]@(8HXhx�����
]�/�,а,/014>32254.#"'6632#5#".2>55&&#"!5!Eu�M% '7BV�@7=�s=u\9�u�=fL+DkG'5D%v�H�D��Ec=K%1#-m)/;\B��o�:P2!/6PCL-:�ou���-%)��*/�+/�ܰ*�
а
/�����]@	)9IYiy�����
]�
��@&6FVfv�����
]���]�EX�/�>Y�)&+�!+�����]@(8HXhx�����
]01#".54>324.#"32>!5!�=i�RT�j;;j�TR�i=�)F\56\E'�o7\F't���V�f97f�ZX�i77i�X=gI''Ig=}�'Hf��u���/-dz$+�
+��
�
]@	

)
9
I
Y
i
y
�
�
�
�
�

]@fv�����]@
&6FV]���]�$���EX�)/�)>Y�EX�/�>Y�EX�/�>Y���)����]@(8HXhx�����
]��а �013!>54.#"!535&54>32�n}��CZ8'V�^Z�V)6XC���yn?{�ww�}?��]ru#g{�?R��VV��R?�{g��urV�qբbb�������5<K�L/�M/�<ܱ�<9�L�а/� <9�<�)а�=а�C�@CC&C6CFCVCfCvC�C�C�C�C�C
]��C�C]�EX�/�>Y�EX�#/�#>Y�EX�/�>Y�EX�3/�3>Y�
)+�9�
�а/�����]@(8HXhx�����
]� 9�3�,�@,,',7,G,W,g,w,�,�,�,�,�,
]��,�,]��9а
�@�,�F�01%#"&54>3254&#"'>326632!3267#"&4&#"&&#"32>5�
+=N1u}9]x@0FG)^#VFFANp�E\k3�TNN/Hu#}fLP@GBP�-V{<;!=/�#C8#�wPuI#`LsH;T+='ENNEp��J��:A%lieͣ���e`f6V5H)�����$/��0/�1/�0�а/�1�ܱ���]@	)9IYiy�����
]�а/��%�@%%&%6%F%V%f%v%�%�%�%]��%�%]��%�%]�а/�EX�/�>Y�EX�/�>Y��+��+�+]@++(+8+H+X+h+x+�+�+�+�+�+
]�+9�� �@  ' 7 G W g w � � � � � 
]�� � ]� 901'7&54>327#"&'4'32>%&&#"+\EE��mq�A�^IE��oq�B�^+��/TR�\/�B'9/�RR�Z/wJt�j��IKDywLy�m�HJDw�jT�<1:8b�PkM�1::f������+�+��а/���@&6FVfv�����
]���]�EX�/�>Y�EX�/�>Y�EX�/�>Y��@'7GWgw�����
]���]013#4>533267#"&/����9VgV9�;VhV<mf{ð�����MubW\lFN{j_\b9Xe�r�ê/�?�+��а/����EX�/�>Y�EX�/�>Y�EX�/�>Y01!33#13R3�����V��/�	+�+01!#!5!�q����p�^�EX�/�>Y�+01!#7!����h�j�o��!����u�+ ��+��а� ��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+���а�а/��аа����]@(8HXhx�����
]01!!"&'53265#534632&&#"��s�rC#;-�����/A?+���u����sy�?u��u������'#".#"'632327#".#"'632327�r�JXED3�Rdr�JZED1�Rdr�JXED3�Rdr�JZED1�R��-7-�;�/8-��M�-7-�;�/7.����!�EX�/�>Y�EX�/�>Y��01!!3����������\���'�/�	/�/�/01%M��FM�}P��DP��OGJP��OGJP����%�/�/�/�/01'7'7'7'7���N��N/��P��P��M��N����M��N��@�EX�/�>Y�EX�/�>Y�EX�/�>Y���ааа
а�01!#53#53#53����������������������&"Au�����s&"�s������s&0�s����/*��
+�#+@

&
6
F
V
f
v
�
�
�
�
�

]��
�
]�#�	�#�а�'в(#9�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�&/�&>Y�!"+����$�%в(9014.#"32> !25!!!!!!5�
!90/;!!;/09!
��� JH���u�H�{ϓRR��{{̔RR�����LP�u�-u�u�PL�����"*��+/�,/�ܱ#�#9�+�а/�#9��"а�'�@''&'6'F'V'f'v'�'�'�'�'�'
]��'�']�EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�
/�
>Y�"+�	9�	9�����]@(8HXhx�����
]�%а
�)�@))')7)G)W)g)w)�)�)�)�)�)
]��)�)]013267#"'# !26632'4&#"#"32NN/BD��1+����/oTdq9�7RR:��������8G)������b`h��Ty����Jw������	�+015!��ll���	�+01!5!��^�l7��t�
+�
+���а�
���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y������
аа��01!54>3"3!54>3"3���)PwP����'PwP����E{\8u���E{\8u��mk�+�
+��а�

�
�а�
����EX�/�>Y�EX�
/�
>Y�+����а�а�а�01!#5255#%!#5255#?(PwP��/>'PwP���E{\7t���E{\7t����;�
+�����EX�/�>Y�EX�/�>Y�����01!54>3"3�)PwO����E{\8u����0�+��а�

��EX�/�>Y�+���01!#5255#�@)PwP���E{\7t�
��5�+��а���EX�/�>Y�+�+���01#53#53%!5!/����u�\����]��u������EX�/�>Y�EX�/�>Y01	����b����b���b��������u�"Z�������":�s���7�/�EX�/�>Y01'���^F���<���/5��EX�/�>Y�EX�&/�&>Y�+�+��а�
��
�
]@

(
8
H
X
h
x
�
�
�
�
�

]�&��@'7GWgw�����
]���]��+а�-а�4�013>32&&#"!!!!3267#".'#53&45447#�<`�Z��3y�\d�����d\�y3��Z�`>���Zb�J��{���q/-q���{!��J}�bq/1��\'	�/�/01%\N��GN��OGJP�H��%	�/�/01'7'7��P��P��M��N^+��/�/��а/�а��а�ܱ��EX�
/�
>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y����а
����]@(8HXhx�����
]��ааа�аа��01!!53#534632&&#"!3!!^�������/B@+��/���Zu�u��u������F^+��/�/��а/�а�ܱ�����EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y����а�ааа
����]@(8HXhx�����
]��аа��01!!53#5346323!&&#"3#^�������g�;��L>����u�u���m3
��u�F���K�+��
���а�	а�а�
а
/��а���/�EX�/�>Y01'#755'37'7��n����n������n�p��p�'u�/;	�/�/01#53/����.��n�A�+��а�

����EX�/�>Y�EX�/�>Y����01%!#5255#.@)PwP�˻�E{\7t���m�y�+�
+��а�

�
���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y������
аа��015!#5255#%!#5255#?(PwP��/>'PwP�ɻ�E{\7t���E{\7t����\/'3?K��

+�"
(+�.	+�:
@+�F	4+@

&
6
F
V
f
v
�
�
�
�
�

]��
�
]��"�"]@""&"6"F"V"f"v"�"�"�"]��"�"]�"�а/���]@	)9IYiy�����
]��4�4]@	44)494I4Y4i4y4�4�4�4�4�4
]��@�@]@	@@)@9@I@Y@i@y@�@�@�@�@�@
]�F�M��/�1/�I/�EX�/�>Y�EX�/�>Y�++�
+�����]@(8HXhx�����
]�1�%�@%%'%7%G%W%g%w%�%�%�%�%�%
]��%�%]��7а%�=а+�C�01'4&#"326%4632#"&4&#"326%4632#"&%4&#"326%4632#"&���f=��/311113/��bfgbbgfbb/321123/��bgfbbfgb�/411114/��bfgbbgfb���)#�@VV@?VV?i��ih���@VV@?VV?i��ih��h@VV@?VV?i��ih��������&"�s��1s�&&�s������&"�s��1s�&&�s��1s�&&Au�����&*�s�����&*�s�����&*�s�����&*Au�������&0�s�������&0�sh?0 �/�EX�
/�
>Y�EX�/�>Y01#".#"#".54>3232>323�u;9Pd8:9<965D�g='NyT$F>9 >?@#�m�/E?��

�f+zqR{��\J�vL�{�+XN;�������&0Au��1��s�&6�s��1��s�&6�s��1��s�&6Au���	D�+������EX�/�>Y�EX�/�>Y�����а	�01!!53#5!3����]�u�y�����X�/�/�/01''�5�5)9C��A#N/N�+�+01#".#"'632327NZ�9H76&g?P\�9H75'f@͞%+%o/�%+%q�R��	�+01!5!��/Rq�F�	�/�	/�+01#"'7327�u��uN^qq^�ttL^^u^/�+�/�EX�/�>Y01#53/��^����:�

+���]@	)9IYiy�����
]�+�+014>32#".732654&#"�">R//R=##=R//R>"ZP77PP77P�0Q>##>Q0/R=##=R/7PP78PP�/	#�
+�EX�/�>Y�EX�/�>Y01#52553/RX��s)�X_u�)�dw�/�/�/�/01#3#3�����ы��w��w��'4�	
+@		&	6	F	V	f	v	�	�	�	�	�	
]��	�	]�/�/01"&54673�}�5'%2mP��}f@\#'-LH`���X�/�/�/01	77����5���� D��u/�EX�/�>Y�EX�/�>Y01##53-3R3����V����H�#�/�/�EX�/�>Y�EX�/�>Y01###�(g+�+e+�/�/�7��b���/�EX�/�>Y01#b�Th��
�����!5��6/�7/�ܰ6�а/��"��"�"]@	"")"9"I"Y"i"y"�"�"�"�"�"
]��,�@,,&,6,F,V,f,v,�,�,�,�,�,
]��,�,]�	/�/�/�!/�1
+�'+01'#"&''7&&547'763274.#"32>�u155/sPs=�\^�=sNs/1buNu�\�;uJ/\�RR�Z//Z�RR�\/7t>�\\�=sNq/15/uNu=�\�vNwg6/u�P�g99g�PP�b77b���F��+����/�/01#35#3���������	�+01!5!��\��u��%`�
	+�
�а/��а/����EX�/�>Y�+�����]@(8HXhx�����
]01353!57654&#"#432�!;E-�b�k�/7)sf�T7B7-5?/I�N�/)#%��)1����#!��	+��а/���]@	)9IYiy�����
]��а/� 9�EX�/�>Y�+�������]@(8HXhx�����
]� 901#"'732654'&#5254#"#47632�s\�jl):!CjXpi@?Z\iBL�Ek�{2 8

dBJ{j83\HL#5��(�	+��
��EX�
/�
>Y�+���01!53#52>533���Z`JC8$mZ�["3Jc6K0�+���7#&��'/�(/�"ܰа/�'�а/�а�	�"�	�а/�"�а�$в%"9�&"9�/�EX�/�>Y�EX�/�>Y�EX�/�>Y�$+�+��в9���$�а� а�"а#�01'!53#52>533!535#533#3'5���^F�=��Z`JC8$mZ��\��oZZZ�w���<��["3Jc6K0�+��Z<KN��\<������70��1/�2/�ܰа�а/��	�а/��а1�#а#/�-а#�/	��/�EX�-/�->Y�EX�/�>Y�EX�/�>Y�+�0 +���0�"в$901'353!57654&#"#432!53#52>533���^F^!<F-�b�j�/7)sf�T7B���Z`JC8$mZ���<�_8-5@/J�N�0)"%��)1["3Jc6K0�+�����7!%47�8/�9/�8�а/�	�@&6FVfv�����
]���]�а/��а/� 9�9�3ܰ%а%/�3�)	�-а-/�3�.а)�5в639�739�%/�EX�/�>Y�EX�#/�#>Y�EX�&/�&>Y�5*+�+��ܰ����]@(8HXhx�����
]� 9�&�(�5�/а*�1а(�3а4�01#"'732654'&#5254#"#47632'!535#533#3'5�s\�jl):!CjXpi@?Z\iBL�^F\��\��oZZZ�w�Ek�{2 8

dBJ{j83\HL#5��<��Z<KN��\<��������/�/�ܰ�а/�
а����]@	)9IYiy�����
]�����EX�/�>Y�EX�/�>Y�
+���
�а�а��01#!#53!2#!3#!2�<z���X�����y5����������f^uFk���/u�bmDN�	/�/�/�/01	'7D��#P���N!��N#!���N#��N#"N��#������&:�s1�
t�/�/�ܰ�а/��а����]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�+�	
+01!##33 4!#326��������������������\ 0°1/�2/�1�а/�2�ܲ9�9�!��!�!]@	!!)!9!I!Y!i!y!�!�!�!�!�!
]��)�@))&)6)F)V)f)v)�)�)�)�)�)
]��)�)]�/�EX�/�>Y�9�9�,�@,,',7,G,W,g,w,�,�,�,�,�,
]��,�,]017&&'77#"&5466$7&&'4&'32>�)V/-uf�NyP�`7G��y�t��)yG����b��\�b3Ѡ#u-5�P{3��p�ϒN��i�zTFn/���7d/Fb}Lt�@t�����u�T&Z�1���!�"/�#/�ܰ"�	а	/��в	9�����]@	)9IYiy�����
]����EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��@'7GWgw�����
]���]�9�����]@(8HXhx�����
]�901#"'#36324.#"32>�Bx�n�}��}�j�{D�+RR�ww�RR+�m��Hc�A��?bE�qR�d:��9g������6&"�s����u�&B�������y&"�s����u&B�����o�
+���]@	)9IYiy�����
]�9����/�EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�+�901"&5467#!#33o}�H{��y����1mP�?���}f0Ku����-LH`��_������3D��B+�
+����
а
/��!а�9�@BB&B6BFBVBfBvB�B�B�B�B�B
]��B�B]�/�EX�./�.>Y�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�=+�.9�.�'��'�']@''('8'H'X'h'x'�'�'�'�'�'
]��4�@44'474G4W4g4w4�4�4�4�4�4
]��4�4]�=�:а:/01!3"&5467#5#"&54>3254.#"'66322>55&&#"smP}�<$[dd-��X��`%;56 ;V^!h�L>T�}L�uF�V�`5C{-J�f>s?#H`Z}f0K�-D+��XwECDX38/g3A'Q�\��3LV#X
-H5;c�������&$�s�����S&D���������&$�s�����W&D���������&$�s�����&D��������&$�s�����W&D����1��&%�w��)&*ٰ+/�,/�ܱ�+�
а
/��а�а
��@&6FVfv�����
]���]�/�/�(/�EX�/�>Y�EX�'/�'>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�$�@$$'$7$G$W$g$w$�$�$�$�$�$
]��$�$]�$9����)�01!#5#".54>32#5!&&#"327#�/u;Z�c55c�Z;u/�C�/l<=`B##B`={\�TeV58H��kj��I55Tu��A::d�PP�d:}?�/�����������-,	�-/�./�ܱ�-�а/��а�а�а�а�%�@%%&%6%F%V%f%v%�%�%�%�%�%
]��%�%]�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+��*�@**'*7*G*W*g*w*�*�*�*�*�*
]��*�*]�*9�� �� � ]@  ( 8 H X h x � � � � � 
]� 9���01##5#".54>325#53533&&#"327-��;�Jo�yAAy�oJ�;������;�NR}T++T}R�v�V58H��kj��I55�u���mA::d�PP�d:}��1s6&&�s��������&F����1sy&&�s�������&F����1s�&&�s�������&F�1��{�+�
+���]@	)9IYiy�����
]����/�EX�/�>Y�EX�/�>Y�EX�/�>Y�
+��
����01"&5467!!!!!!3}��B�G���1lP��}f0Ku�-u�s-LH`������'0��

+��
�
]@	

)
9
I
Y
i
y
�
�
�
�
�

]�
9�/�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�(+��"�@""'"7"G"W"g"w"�"�"�"�"�"
]��"�"]��+��+�+]@++(+8+H+X+h+x+�+�+�+�+�+
]01%3"&5467#".54>32!3267&&#"�mP}�++l��HA{�mw�w9����i�)`^��BpV:B#H`Z}f)BH��mj��IP��w��V@B�虖+PqC��1s�&&�s�������W&F���������&(�s�����usW&H��������y&(�s�����us&H���������&(�s�����us&H������/&(����us�#2�3/�4/�3�а/�4�ܲ9�9��,�@,,&,6,F,V,f,v,�,�,�,�,�,
]��,�,]�
а
/���!а�$��/�/�EX�"/�">Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�	+��/�@//'/7/G/W/g/w/�/�/�/�/�/
]��/�/]�/9��'��'�']@''('8'H'X'h'x'�'�'�'�'�'
]�!'9013#"&'732655#"&54>3253&&#"3267`��Bw�c��G`+�h��z��Ay�mL�;��;�NR}R+��N�;^u����`�h7hbJAX��dl��j��I55T�A::d�N��;B��1s�&)�s��1s�&I�u�w/��/�/�ܰа���	а	/��	�
а�а�а�а���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+�+��
а�а�а��013##!##5353!53!s����щ���/����Hq�)\���q�������ws��/�/�ܱ��а/���а�а�в9�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�
+�����]@(8HXhx�����
]��а
�в901!#4&#"##53533#3 s�lyL{V-������c�X?}�Fu�R�^�p��p������NNs&*�s��NN�&�������6&*�s�����&�������y&*�s����&������u��	+�
+���]@	)9IYiy�����
]�9�/�EX�/�>Y�EX�/�>Y�EX�/�>Y����
�аа�а�01"&5467!53#5!#33u}����/��1mP��}f0Ku/uu��u-LH`���u��+�
+���]@	)9IYiy�����
]�9��	��в9�/���/�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y����
��а�01"&5467!53#5!33#53u}����]�1mP������}f0Ku�u��u-LH`������&*�s�u�g�/�/�ܱ��а/���EX�	/�	>Y�EX�/�>Y�EX�/�>Y�+�����аа�а�0132>53#"'!53#5!#31H\s=����{�����/�Ҫ94Js�H��d���
u/uu���u�
$��+�"+����	а"�&��EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX� /� >Y�EX�/�>Y�EX�/�>Y�EX�"/�">Y�+�����
���а
а�аа�а�01#53!53#5!3#53"'732>5#5!u�������\�u���s�ci%uVC\6�\�^���u�u���\�HLR'HfB/u�\��������s�&+�s�uXX,�+�/�/�/�EX�/�>Y�+���01"'732>5#5!''\�bi$uVD\5�\�D5�5)�u�HLR'HfB/u�\���C��A#��1���&,���1���&L�1��J�+����EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�901!##33�������-������
��T��1s�&-�s�����&M�u��1��s&-�������&M���1s&-w����&Mw\��1s&-������^&M�/�^s
O�+��а���EX�/�>Y�EX�/�>Y�9�9�9�	9��01!!5737!s���Ӊ���3EEg��FF�����+�����а�	а�
а�а�в9����EX�/�>Y�EX�/�>Y���9�9��	�
ав9�901#5!73!535��]��������w��FF�ww�E��1s�&/�s��1sS&O����1��s&/���1��s�&O���1s�&/�s��1sW&O����s/&Ow�t1�us^�/�/�ܱ�а/��а/���EX�/�>Y�EX�/�>Y�EX�/�>Y�	+�9�901%#"'732>7#33s���{V1HA^B)
�߉���}���`94'BX1u����1�us� ��!/�"/�ܱ�!�а/��в9�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+�����]@(8HXhx�����
]�90132>54&#"#33 #"'�CD\5lyL{V-��c�X��ZD�'HfB?}�Fu�R�^��������������6&0�s�������&P��������y&0�s������&P���������&0�s������v&P����1��&3�s���T&S���1���&3�������&S���1��&3�s���X&S�������&4�s�������T&T�������&4�s�������X&T����/H��
)+�

+�32+�2���а2�5а)�?�3�J��EX�2/�2>Y�EX�4/�4>Y�EX�./�.>Y�EX�
/�
>Y�EX�/�>Y�
.9�1
.9�.�:��:�:]@::(:8:H:X:h:x:�:�:�:�:�:
]01#5255&&'#332>54.'.54>3253#4.#"�7\{FRX��`�/tt>`}A:bJ+7]t<G�pFDn�M_�-yy1Tl<5`H+3Vq;J�tJTJy\;
�X_u�PG��CoP-!=X8?Z@-7TyZP}V-NP���;gI+5T:3H7-@Z�������;��2!+�

+�+���]@	)9IYiy�����
]@22&262F2V2f2v2�2�2�2�2�2
]��2�2]�EX�&/�&>Y�EX�
/�
>Y�&�-��-�-]@--(-8-H-X-h-x-�-�-�-�-�-
]01#5255&&'73 54.'.54>32&&#"�;b}BRX��z�Z=g�k53Vo=N�MGw�V{�N7P�`+iZ=3Vo=L�NDbA%�X_u�E<vAF�'1<dRFfD 95k8-%;-'/:d������&4�s�������X&T������&5������&U�����&5�s������&Uw\�����/�а/�ܲ@]���а�
��ܲ@]�
��а���EX�/�>Y�EX�/�>Y�+���аа�а�
а��а�01#3!53#53!#!#!3��������u�u���`�uu�q����GD�-���#��+��а�а�а�!��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�#+���@'7GWgw�����
]���]��а#�а��а а!�01#3267#".55#53#533!!3/�!;T6f�
sǕR�`5���Ӊ��s��h3ZD'e��6`�Phquu��u���1��ss&6�s��1��s&V���1��s6&6�s��1��s�&V���1��sy&6�s��1��s&V���1��s>&6�s��1��s�&V���1��s�&6�s��1��sw&V�1��s&��+�#
+�+���]@	)9IYiy�����
]�#9��(��/�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�	/�	>Y��@'7GWgw�����
]���]01"&5467#".5332>533�}�!m�e1�=mXXo=��2mP��}f)@F�oF��;�lHHl�;H����+-LH`1������+�
+��а/��а���/�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�
/�
>Y�
9��@'7GWgw�����
]���]01"&5467#5# 332>533�}�>b����myLzV-�1lP��}f0K�{@��}�Fu�R��\-LH`������&8�s�����X&X�������&:�s����u�X&Z���1w�&;�u��/wS&[����1w�&;�u��/w&[���1w�&;�u��/wW&[����/��+����а�	��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��аа��а����]@(8HXhx�����
]01%3!53#534632&&#"�������/A?+��uuu�u��u��������&��w������V&���������&��w������V&�������/&4���������&T������&5������&U��^F/	�/�/01#FTe/�/�^�/9�	+�/�EX�/�>Y�EX�
/�
>Y���ааа	�01##53#53FTe�����/�/�/��������/"�w�����_s/"�w�����_s/#w������/#w������[���/"�w�����[�/"�w�����[�/"�w�������/&�x���
0�EX�/�>Y�EX�/�>Y�EX�/�>Y�+01!#!#3�{��y���}��u������_1�$��!+�+��
��
9���]@	)9IYiy�����
]�!�а�&��EX�/�>Y�EX�/�>Y�+�
9����!�01#!!24.#!!2>4&#!!26���`�R�}N��:Zl2�8lV8-������u��J�j�JLaEX/�E1V��{���1�*�+�EX�/�>Y�EX�/�>Y���01!!#1s��u�\���!�EX�/�>Y�EX�/�>Y��01!!3����������\��1s=�
+�
���EX�/�>Y�EX�/�>Y�+����
�01!!!!!!!s��B�G���u�-u�1w
U�/�/�ܰ�а/�в9��
��
��EX�/�>Y�EX�/�>Y����
�01!!5!#!!3w�����u1�w)uu/���u��E1s`�/�
/�ܱ��а/��а�	��EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�	+01!#!#3!3s��щ�/�\����H����/+�,/�-/�ܰ,�а/�����]@	)9IYiy�����
]��"�@""&"6"F"V"f"v"�"	]@	�"�"�"�"]��"�"]�EX�/�>Y�EX�	/�	>Y�+�����]@(8HXhx�����
]�	�'�@''''7'G'W'g'w'�'�'�'�'�'
]��'�']01!!%#".54>324.#"32>��)�6v����w55y����v8�1\�Vk�T!!T�kj�T �u9��qq���qq��ϒMd��cbǟee����=�
+�EX�/�>Y�EX�/�>Y����а	а�
а�01!!53#5!#3����/��u/uu��1�J�+����EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�901!##33���N���/������{�����1�EX�/�>Y�EX�/�>Y�EX�/�>Y�901!#3P����������s��1sm�
/�/�ܱ�
�а/��
9�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�9�
901!###33s��b扲��?�_����V�1s	b�
/�/�ܰ
�а/�����EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�901!##33s�����P�����~�/�/��а/���ܱ�а�	а�а�
��EX�/�>Y�EX�/�>Y�+��ܰ���аа���
ܰа�013!53!!#!#!!y�y�\+�Ny�y���)-������0���u����/'�(/�)/�ܰ(�
а
/�����]@	)9IYiy�����
]�
��@&6FVfv���]���]���]�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>324.#"32>�6v����w55y����v8�1\�Vk�T!!T�kj�T ���qq���qq��ϒMd��cbǟee��1sK�/�	/�ܱ��а/���EX�/�>Y�EX�/�>Y�EX�/�>Y���01!#!#!s��щB��\1�
r�/�/�ܰ�а/������]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�+���01#!#!24&#!!26���ى��쉪���'����������y�y+sC�+��а�
��EX�/�>Y�EX�/�>Y��	���01!!55!#!!3s��H��Hy��E��+yuu�GD���E�k�/�
а
/�	ܲ@	]�ܲ@]�
�	��
�
����EX�/�>Y�EX�/�>Y�����а	а�
а�01#!3!53!#!�u������u�`D��uu/������g�+�9�EX�/�>Y�EX�/�>Y�EX�/�>Y�����аа�
ааав9�а�01#3!53#5!##5!�j������jpl��lp����Buu�quu��u���"+��#
+�+�+��а�д��]@	)9IYiy�����
]���@##&#6#F#V#f#v#�#�#�#�#�#
]��#�#]��&��EX�/�>Y�EX�/�>Y01#5.54>7534.'66%�=o�^�^�o;;o�^�^�o=�'GkC���B��CiG%�b�P
��
P}�bc��O
��
R�cF}b@�%Ǎ���B`}���z�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��в9�аа	а
а��ав9�аааа
�а�01!!533!53#5!##5!#3���X��X����mum��iuq��u��Tuuuu�^�uu���1sU�	+�+�+��а���EX�
/�
>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y01#&533>53s������-RC�AR/�'���D��5ufN_��Nfu5����"��u������#�u������/"�w�����/&�w����s/&�w������/&�w�����/&�x����)̳+@&6FVfv�����
]���]�EX�/�>Y�EX�/�>Y�EX� /� >Y�EX�%/�%>Y��@'7GWgw�����
]���]�����]@(8HXhx�����
]�%9�9�"%90132>7.#"4>323##".�;aC<\G44G\<Ca;�-`�d{�)8����8)�{d�`-�@�lFFj�@?�jFFj�?^��R���/�-��R��1���/4
�+�'+��'�']@	'')'9'I'Y'i'y'�'�'�'�'�'
]�'9�/���]@	)9IYiy�����
]��9��1а�6��EX�/�>Y�EX�/�>Y�EX�/�>Y�$!+���@'7GWgw�����
]���]�9�!$9��,��,�,]@,,(,8,H,X,h,x,�,�,�,�,�,
]01"&'#4>32'2654&##532654.#"�c�@�Bp�Z`�h8um��Bt�b����ZZ��@fJ5gQ2<�01�AT�i9;^}@h�%)�{R�d:u�tu�u�l%PA+ DfF�-A8��{�>�+�9�EX�/�>Y�EX�	/�	>Y�EX�/�>Y�901#367{9VwM��s�=w��w���k��J�����'��y/'7�.+�+�(+@&6FVfv�����
]���]�9��(�(]@	(()(9(I(Y(i(y(�(�(�(�(�(
]@..&.6.F.V.f.v.�.�.�.�.�.
]��.�.]��9��EX�/�>Y�EX�/�>Y�9��%��%�%]@%%(%8%H%X%h%x%�%	]@	�%�%�%�%]��3�33]@'373G3W3g3w3�3�3�3�3�3]��3�3]01#".5467.54>32&&#"4&'32>NR{�{R<n�b`�o;��%@/'KmET�==0j>CX�����CoNNnFD)LRb�fa�s>>s�av�\37B)+TC)!)b!;�r�GG�u9nY58Xn����0��++�+�а/@&6FVfv�����
]���]��а/�EX�/�>Y�EX�&/�&>Y�+�����]@(8HXhx�����
]�&��@'7GWgw�����
]���]�.9014>32&&#"33#"3267#".5467&&Bw�a��=f)�v��@bB��DdD#��{�/`?Ϡd�}Hq\c^�?iG'ddFFTXJ3)t+7PZLHBdc'JkCHww�u�(��)/�*/�"ܱ���]@	)9IYiy�����
]�)�
а
/�
"9��@&6FVfv�����
]���]�%/�EX�/�>Y��014.'.54>7!5!'66!;X7T��fd��;���mHs�JG�b;tu<XDs%+#d��h˴�5uu1���\q�P3XJV�)h!`��s���/�/��а/��9��ܱ��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�����]@(8HXhx�����
]��016632#4&#"#4&#"'6632/�h���VZh��-#"!9GmNf���I�t������+/k
X)��/)��*/�+/�ܰ*�
а
/���
��$а�%��EX�/�>Y�EX�/�>Y�%+���@'7GWgw�����
]���]�����]@(8HXhx�����
]01#".54>322>7!"!.1g�qs�i//i�ss�i/�TNlD��!DjNNjD!@!Dj����cc������dd���?N��ll��N\I��hh��I�����]�
+�EX�/�>Y�EX�/�>Y��	���@'7GWgw�����
]���]�901%#".5#5!327�9+-R>%�]j1
:V7\y�+q1��J�+����EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�901!##33�������-������
��T���/]�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�����]@(8HXhx�����
]01!#'&&#"'632������93DZ/``V�'�/����-Av#=c�q1����!��"/�#/�ܱ�9�"�а/��
��EX�	/�	>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�	9�	9���@'7GWgw�����
]���]�в	901%#"&'#332>53327#"&u�b<h��mN/TA%�)11%Hl�Li>9�+��jw)NsG�-/m
Y{�
1�EX�/�>Y�EX�/�>Y�EX�/�>Y�901#367{#������/w��!��������u�/:ó8+�'.+�8'9@&6FVfv�����
]���]�89�/���.�.]@	..).9.I.Y.i.y.�.�.�.�.�.
]�'�<��*/�EX�/�>Y�"3+�+�9�����]@(8HXhx�����
]01&&54>32&&#"33#"'6654.'.546osDq�PN�?+FzFu�����L}X/Fs�LG�b;tu<XD!;X7uÍP��#�`NX1##j#}dqt'H^7N\13XJV�)h!`/%+
#P�ml������'�(/�)/�ܰ(�
а
/�����]@	)9IYiy�����
]�
��@&6FVfv���]���]���]�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>324.#"32>�E��om��EE��mo��E�/\�RR�Z//Z�RR�\/�m�HH�mj��II��jP�f::f�PP�b88b�1����&ΰ'/�(/�ܰ'�	а	/������]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�EX�/�>Y�"�@""'"7"G"W"g"w"�"�"�"�"�"
]��"�"]�"9�����]@(8HXhx�����
]01#"'#4>324.#"32>�By�n�{�1i�oi�x@�)RyN=kL+<�NT}T+�m��Ha�AF\��TG��jP�d:)Z�d�A8:b��u��+��,/�-/�,�а/�-�ܰа/���@&6FVfv�����
]���]��"��"�"]@	"")"9"I"Y"i"y"�"�"�"�"�"
]�/�EX�/�>Y����]@(8HXhx�����
]014>32&&#"'6654.'.H��m��;`+�hR�[1Hs�JG�b;tu<XD!;X7o��T�l��Gl\BDR:d�P^}N%3XJV�)h!`/%+8j������)Ͱ*/�+/�*�а/�+�ܲ9���@&6FVfv�����
]���]��$��$�$]@	$$)$9$I$Y$i$y$�$�$�$�$�$
]�EX�/�>Y�EX�
/�
>Y���а
��@'7GWgw�����
]���]��)�01#".54>3!!"32>54.'�+TD)By�df�wAI��j#�۪�+RrJJuT+#BZ9/Nix>f�yBH�mj�{Bu��N�b:3X}J<viP����\�+�EX�/�>Y�EX�/�>Y���аа��@'7GWgw�����
]���]01!5!!3267#".5��s��sj#(R-R>%/uu��qk:V71������/�/��а/���ܱ���]@	)9IYiy�����
]�EX�/�>Y�EX�/�>Y�EX�/�>Y�
�@

'
7
G
W
g
w
�
�
�
�
�

]��
�
]01".5332>54&'7�^�n<�-Lg9\}L#%+�)+5q�0`�`>��=bD#N{�Dh�\5`�{^��a����!-��+�+�%+@&6FVfv�����
]���]��а�"д�%�%]@	%%)%9%I%Y%i%y%�%�%�%�%�%
]��/��EX�/�>Y�EX�/�>Y��*��*�*]@**(*8*H*X*h*x*�*�*�*�*�*
]012#.54674>6654.#"TR�^5=o�`�^�o;d\RBG��-L��)?R'#�G��lb�}P
��c
P�b��F^5�l���+N: ��ɍP�d:-2���u��<�/�EX�/�>Y�EX�/�>Y�9�9�9�	901	#73��Ǥ���yJ-���^�u+���iE��'�j��1��s^K�	+�+�+��а���/�EX�
/�
>Y�EX�/�>Y�EX�/�>Y01#&533>53s������-RC�AR/�����c��-5ufN��Nfu5������4ֳ+�+�-"+�9@&6FVfv�����
]���]��"�"]@	"")"9"I"Y"i"y"�"�"�"�"�"
]�-�6��EX�
/�
>Y�EX�(/�(>Y�EX�/�>Y�EX�2/�2>Y�
9���@'7GWgw�����
]���]��01%#".54>73265332654.'7#"&�rPHd@
�9F=V�X=F;
�!@dJPs�RgDw�d>���/5-u}3����Q������3}u-5/���>d�wDg������&����1���&��������/"�w��1���/&�w������/&�w��1s�&��u�w��s#�$/�%/�$�!а!/� �а%�	ܲ!	9�!	9���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX� /� >Y�EX�/�>Y���9�9���@'7GWgw�����
]���]�����]@(8HXhx�����
]��"а#�01!#3 #"'73254&#"##���c�X%>R-T&#jlyL{V-��u�����7V:m	qp}�Fu�R�^���1��&��u����/.��//�0/�ܰа/�/�а/��
�а�$�!а�.а./�EX�/�>Y�EX�/�>Y�"#+�9�����]@(8HXhx�����
]��,�@,,',7,G,W,g,w,�,�,�,�,�,
]��,�,]01#".54>3253#4.#"!!32�3tt�[�pO36w��y�*uu5ZzE`�U+F��#&7GW5�`V�db4[~��X��qVX��TFzZ3T��[uX�G'B0'���/?ӳ
 +�*)+�)���а)�,а �6�*�A��EX�)/�)>Y�EX�+/�+>Y�EX�%/�%>Y�EX�	/�	>Y�EX�/�>Y�%9��@'7GWgw�����
]���]�(%9�%�1��1�1]@11(181H1X1h1x1�1�1�1�1�1
]01#"&'#332>54.'.54>3253#4.#"�Dr�Pn�6tt>`}A:bJ+7]t<G�pFDn�M_�-yy1Tl<5`H+3Vq;J�tJTR�`4RP��CoP-!=X8?Z@-7TyZP}V-NP���;gI+5T:3H7-@Z���=�
+�EX�/�>Y�EX�/�>Y����а	а�
а�01!!53#5!#3����/��u/uu������&*�s����sL�+�EX�/�>Y�EX�/�>Y�
�@

'
7
G
W
g
w
�
�
�
�
�

]��
�
]01#"&'732>53s�ٮ�/w+�}\s=��ﷶ-��Js�H'�u���$��#+�+�+���]@	)9IYiy�����
]��	а�&��EX�	/�	>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+�	��	9��!�@!!'!7!G!W!g!w!�!�!�!�!�!
]��!�!]014&##32632####"&'7325l\LL\l��J����ѻ :L+(6
 ^q��%�����+7V:	
s	qJ1���	+�
+�+���]@	)9IYiy�����
]��а�а
���EX�
/�
>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y�+����а��014&##32633332###l\LL\l����J����ѻq�����0�м���u���ws��/�/��а/��а�	ܲ	9�
��EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y���	9�����]@(8HXhx�����
]��а�01!#3 #4&#"##���c�X�lyL{V-��u�����?}�Fu�R�^���1��&��u������{&��u1��sS�+�+�	+�/�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y��	�01!!#!3!3s������/���?�\����
0�EX�/�>Y�EX�/�>Y�EX�/�>Y�+01!#!#3�{��y���}��u������_1�s�/�/�
ܱ���]@	)9IYiy�����
]��а/��	��EX�/�>Y�EX�/�>Y�
+�����014&#!!26!2#!!!����'����'����RB�Gq�������u1�$��!+�+��
��
9���]@	)9IYiy�����
]�!�а�&��EX�/�>Y�EX�/�>Y�+�
9����!�01#!!24.#!!2>4&#!!26���`�R�}N��:Zl2�8lV8-������u��J�j�JLaEX/�E1V��{���1�*�+�EX�/�>Y�EX�/�>Y���01!!#1s��u�\���R�
+�+�+�
+�
���
/�/�EX�/�>Y�EX�/�>Y��аа��015>5!3#!#!#9X<��{�R{u1P9��u1q�#�B�\�L?�����њ9/1s=�
+�
���EX�/�>Y�EX�/�>Y�+����
�01!!!!!!!s��B�G���u�-u�����+��а�
��EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�9�9�901!'#333#�7���?���7�7���?���7d���8��D��D��jd�����/>�-
++�7+�7�	��-�а/���]@	)9IYiy�����
]�-�)а)/�:+9�7�@��EX�2/�2>Y�EX�/�>Y�+���@'7GWgw�����
]���]�2�#��#�#]@##(#8#H#X#h#x#�#�#�#�#�#
]�-29�:901#".'732>54.#52>54'&#"#3>32�Fu�T^�}N�]\�;hN-2a�\C�d>IItAy*(6}uJX`0T�k>�|EiG$hV�d83f�c�ML(Fb:Pe9u6YCnBC2)&pL��1B)1\�Up�
<Yo1s	b�
/�/�
�а/���ܱ��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�90133##1����������P����1sy&��s1�J�+����EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�901!##33���N���/������{�����s��/�/�ܱ��а/���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�
/�
>Y���
9�
��@'7GWgw�����
]���]01#!#"'7325s��[%>R-T'#j����+7V:m	qJ1sm�
/�/�ܱ�
�а/��
9�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�9�
901!###33s��b扲��?�_����V�1s`�/�
/�ܱ��а/��а�	��EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�	+01!#!#3!3s��щ�/�\����H����/'�(/�)/�ܰ(�
а
/�����]@	)9IYiy�����
]�
��@&6FVfv���]���]���]�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>324.#"32>�6v����w55y����v8�1\�Vk�T!!T�kj�T ���qq���qq��ϒMd��cbǟee��1sK�/�	/�ܱ��а/���EX�/�>Y�EX�/�>Y�EX�/�>Y���01!#!#!s��щB��\1�
r�/�/�ܰ�а/������]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�+���01#!#!24&#!!26���ى��쉪���'����������y�y����/%�&/�'/�ܰа/�&�а/��
�а��@&6FVfv�����
]���]��%а%/�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�
9�
����]�(]@8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>3253#4.#"32�3谉�y55y��y�)uu5Z{Dj�T##T�j�`V��n���qVX��TE{Z3d��cbǝe%�k�/�
а
/�	ܲ@	]�ܲ@]�
�	��
�
����EX�/�>Y�EX�/�>Y�����а	а�
а�01#!3!53!#!�u������u�`D��uu/�������Z�EX�/�>Y�EX�/�>Y�EX�/�>Y�
�@

'
7
G
W
g
w
�
�
�
�
�

]��
�
]�901#"'7326773��'�V``/ZD39�`�PJ�pb>#wB-����0���"+��#
+�+�+��а�д��]@	)9IYiy�����
]���@##&#6#F#V#f#v#�#�#�#�#�#
]��#�#]��&��EX�/�>Y�EX�/�>Y01#5.54>7534.'66%�=o�^�^�o;;o�^�^�o=�'GkC���B��CiG%�b�P
��
P}�bc��O
��
R�cF}b@�%Ǎ���B`}���z�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��в9�аа	а
а��ав9�аааа
�а�01!!533!53#5!##5!#3���X��X����mum��iuq��u��Tuuuu�^�uu���1��O�+�+�+��
��/�EX�/�>Y�EX�	/�	>Y�EX�/�>Y��а�01%#!3!3{���/�u�L?�\��\1s^�/�/��а/���ܱ�в9�EX�/�>Y�EX�/�>Y�EX�
/�
>Y�+�
901332>53## 1�myLzV-��b�����}�Ft�R���^�{�|�/�а/�ܲ�]�@]���ܲ�]�@]���
��
��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��
а�013!3!3!����\��\����\��o�+�+�+����а���
/�EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y��ааа�0113!3!33#���{{�\��\��\�L?�v�/�/��
а
/��а�ܱ
��
�
]@	

)
9
I
Y
i
y
�
�
�
�
�

]�EX�/�>Y�EX�	/�	>Y�+���	��01!32#!#4&##326u���Ƕ����o��o��м���������
��+�+�+���]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y�+�	��01332#!4&##3263#���������l]��]l@�����q��%��1�l�/�/�
ܱ���]@	)9IYiy�����
]��а/��	��EX�/�>Y�EX�/�>Y�
+���014&#!!26!2#!3����'����'����R�q������������/.��//�0/�/�а/�
�а/�0�#ܱ
�
а�а�.а./�.#9�EX�/�>Y�EX�*/�*>Y�

+�*��@'7GWgw�����
]���]�����]@(8HXhx�����
]�*90132>7667!5!.#"#36632#"'&'o`�5WG7&#��F+U�`EzZ5uu*�y��w63Op�[�tt3���0B'G�Xu[��T3ZzF��XVq��X��~[4bd�1���/"޳+�+�+��а�д��]@	)9IYiy�����
]��$��EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX�	/�	>Y�+�	��@'7GWgw�����
]���]�����]@(8HXhx�����
]0133! ! ##%2>54.#"1��
!���
��V/< 

 <//;!!;��h�\�^i��^R��{{ϓRR��{{̔R��s��/�/��а/��
ܱ��а/���@&6FVfv�����
]���]����EX�/�>Y�EX�
/�
>Y�EX�/�>Y�+��а/���01.5463!###3!!"}R�e9����������$�ܐ�58\�R����/����y{����s�&7�8/�9/�8�а/�9�ܱ�в9��,а�5�@55&565F5V5f5v5�5�5�5�5�5
]��5�5]�EX�/�>Y�EX�/�>Y�EX�$/�$>Y�0+�����]@(8HXhx�����
]�$9�$�'�@''''7'G'W'g'w'�'�'�'�'�'
]��'�']�0�-а-/01'4>3254.#"'6632#5#"&2>55&&#"X��`%;56 ;V^!h�L>T�}L�uF�$[dd-��wV�`5C{-J�f>s�XwECDX38/g3A'Q�\���-D+�3LV#X
-H5;c���/
:
�;/�</�;�а/�)�@))&)6)F)V)f)v)�)�)�)�)�)
]��)�)]�а/�<�3ܱ���]@	)9IYiy�����
]�а/�EX�/�>Y�EX�/�>Y�EX�8/�8>Y�.+�8��@'7GWgw�����
]���]��$��$�$]@$$($8$H$X$h$x$�$�$�$�$�$
]���)890132>54&#"'4>323267#".#">32#"���FwV/�����?s�`->1-)9)G+t3':13#=kP-HXd1b�{FF{�b�����1]�O���/���d!R)7C�q-F1;u�ub�}HH1��&��#+�+���]@	)9IYiy�����
]�9�/���]@	)9IYiy�����
]��9�#���EX�/�>Y�EX�/�>Y�!+�!9����#�01#!!24.#!!2>4&#!!26�Ǻ��D�hBFf}\�.CR'��H)TD)-�t��et�
���5^LHbqJ+5
��
3��RL��N1��*�+�EX�/�>Y�EX�/�>Y���01!!#1s���u������R�
+�+�+�
+�
���
/�/�EX�/�>Y�EX�/�>Y��аа��015>55!3#!#!#/V@'��{�R{u!5D!��u
X�ߑ���L?��"tˠs�������"{�EX�/�>Y�EX�
/�
>Y�"+�
��@'7GWgw�����
]���]�����]@(8HXhx�����
]013267#".54>32'&&#"���i�)`FŽl��HA{�mw�w9���BpV:���V@BbgH��mj��IP��wu��+PqC�����+��
��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�
9�
9�
9�
901333##'#��������1�1ٓ��w��w��h���H��ZH�^�����.ų +��а/�� � ]@	  ) 9 I Y i y � � � � � 
]� �а/��0��EX�*/�*>Y�EX�/�>Y�+�9���@'7GWgw�����
]���]�*�#��#�#]@##(#8#H#X#h#x#�#�#�#�#�#
]01#"&'732654.##532654&#"'6632s_b\qH}�d��?`/�{��#DdD�����v�)f=əa�wB�DwwHCkJ'cdBHLZP7+t]3JXTFFdd'Gi1s�	b�
/�/�
�а/���ܱ��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�90133##1���������\����1s&��1��J�+����EX�/�>Y�EX�	/�	>Y�EX�/�>Y�EX�/�>Y�901!##33�������-������
��T���s���/�/�ܱ��а/���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�
/�
>Y���
9�
��@'7GWgw�����
]���]01#!#"'7325s��[%>R-T'#j��\/��7V:m	q�1s�m�
/�/�ܱ�
�а/��
9�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�9�9�
901!###33s��b色�������1s�`�/�
/�ܱ��а/��а�	��EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�	+01!#!#3!3s��щ�/���^��s������'�(/�)/�ܰ(�
а
/�����]@	)9IYiy�����
]�
��@&6FVfv���]���]���]�EX�/�>Y�EX�/�>Y�����]@(8HXhx�����
]��#�@##'#7#G#W#g#w#�#�#�#�#�#
]��#�#]01#".54>324.#"32>�E��om��EE��mo��E�/\�RR�Z//Z�RR�\/�m�HH�mj��II��jP�f::f�PP�b88b�1s�K�/�	/�ܱ��а/���EX�/�>Y�EX�/�>Y�EX�/�>Y���01!#!#!s��щB/���1����$�%/�&/�ܰ%�
а
/�	�в
9�����]@	)9IYiy�����
]�	���EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y� �@  ' 7 G W g w � � � � � 
]�� � ]� 9�����]@(8HXhx�����
]�
901#"&'#36324.#"32>�D{�lJ�<���l�{D�+V}RN�<<�NR}V+�m��H65�7VlG��jN�d::A�A8:d�����(װ)/�*/�ܰа/�)�а/���а� �@  & 6 F V f v � � � � � 
]�� � ]�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�
9�
����]@(8HXhx�����
]��%�@%%'%7%G%W%g%w%�%�%�%�%�%
]��%�%]01%#".54>3253#4.#"3267�;͍m��HBz�l+ZP@{{-Nl>T}T+1]�Rh�+�\kH��mj��I)9'���>fJ):d�PP�b:PD��k�/�
а
/�	ܲ@	]�ܲ@]�
�	��
�
����EX�/�>Y�EX�/�>Y�����а	а�
а�01#!3!53!#!�u������u��C�Fuu������u��#�EX�/�>Y�EX�/�>Y�
+01#"'7326773��'�V``/ZD39�`�PJ��pb=#vB-����/���
$/2�0/�а/�ܲ�]��]�0]����а�а�/�а�*ܲ�*]��*]�0*]�*9��/�"а�1��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�#/�#>Y�EX�
/�
>Y�EX� /� >Y�����]@(8HXhx�����
]�
��@'7GWgw�����
]���]�
9�9�9�"
9�'а�-�01&#"327#"&546323632#"'#32654&#"�9TJIIJT95X����X5�5X����X5��9TJIIJT9�_��ɪ^}V���V��KV���V�L1^��ɬ_����w�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��9�аа	а
а��ав9�аааа
�а�01!!533!53#5!#7#5!#3��R��K�����V��^����y��yy`P{{��{{����1���O�+�+�+��
��/�EX�/�>Y�EX�	/�	>Y�EX�/�>Y��а�01%#!3!3{���/�y�H?���/��1s�^�/�/��а/���ܱ�в9�EX�/�>Y�EX�/�>Y�EX�
/�
>Y�+�
901332>553## 1�myLzV-��b������}�Eu�R��\�{��|�/�а/�ܲ�]�@]���ܲ�]�@]���
��
��EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y��
а�013!3!3!����\����/�\������u�+�+�+����а���
/�EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y��ааа/�а/0113!3!33#���{{���/��/��H?��v�/�/��
а
/��а�ܱ
��
�
]@	

)
9
I
Y
i
y
�
�
�
�
�

]�EX�/�>Y�EX�	/�	>Y�+���	��01!32#!#4&##326uݢ������i\��\i�������/��MT��V����+�+�+��д��]@	)9IYiy�����
]����EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y�+���013#32#!34&##326���n������ՉR\T��T\��\/������uMT��V1��
o�/�/��а/��а�ܱ���]@	)9IYiy�����
]�EX�	/�	>Y�EX�/�>Y�+���01!2#!34&#!!26�e��Ǻ��_�t��et�/������uMT��V#���� {�EX�/�>Y�EX�/�>Y�+�����]@(8HXhx�����
]���@'7GWgw�����
]���]01!&&#"'6632#"&'73267!���h�+`;͍m��HH��m��;`+�h������RDB\lG��lm��Hk\BDP��1����޳+�+�+��а�д��]@	)9IYiy�����
]����EX�/�>Y�EX�/�>Y�EX�
/�
>Y�EX�	/�	>Y�+�	��@'7GWgw�����
]���]�����]@(8HXhx�����
]0133! ! ##%2#"1������\�����h�����hXyw������s�
��/�/��а/��ܱ	��
а
/���@&6FVfv�����
]���]�	���EX�/�>Y�EX�/�>Y�EX�/�>Y�+��
а��01&&5463!###3!!"Z��Ǻ���—�ud��u�u�����\u���NTFV�������&�����us'��(/�)/�(�а/��а)�
ܲ
9�
9���#а�%��EX�/�>Y�EX�
/�
>Y�EX�$/�$>Y�+�+��в$9�
����]@(8HXhx�����
]��&�013533#3 #"'73254&#"##q����c�X%>R-T&#jlyL{V-��^��u�����7V:m	q�}�Fu�R�^���1�T&������ {�EX�/�>Y�EX�
/�
>Y�+�
��@'7GWgw�����
]���]�����]@(8HXhx�����
]013267#".54>32&&#"!���h�+`;͍m��HH��m��;`+�h�����PDB\kH��ml��Gl\BDR��u������2ٰ3/�4/�ܱ���]@	)9IYiy�����
]�3�а/�)�@))&)6)F)V)f)v)�)�)�)]��)�)]��)�)]�EX�/�>Y�EX�/�>Y��@'7GWgw�����
]���]��$��$�$]@$$($8$H$X$h$x$�$�$�$�$�$
]01#"&'73 54.'.54>32&&#"�R��L�\=g�k53Vo=N�MGw�V{�N7P�`+iZ=3Vo=L�NRl@J<vAF�'1<dRFfD 95k8-%;-'/:d��
_�+�9�/�����	��EX�/�>Y�EX�
/�
>Y�EX�/�>Y��
���а
�01#53!53#5!3/�������]�^���u�u�����&���u�>�+�9�/���EX�/�>Y�EX�/�>Y�
+���01#53"'732>5#5!麺�s�bi$uVD\5�\�^��\�HLR'HfB/u�\���u����$��+�!+�+�!�д��]@	)9IYiy�����
]��&��EX�/�>Y�EX�/�>Y�EX�	/�	>Y�EX�/�>Y�+����!�
!901#"&'7325!32#!4&##326� :L+(6
 ^�w�������\TyyT\/��7V:	
s	q������/��MT��V1����+�+�+��а�д��]@	)9IYiy�����
]��а���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�+��а�а��01333332#!#4&##3261���w�������m\TyyT\���u��������FMT��V��s��/�/��а/��а�
ܲ
9�����EX�/�>Y�EX�
/�
>Y�EX�
/�
>Y�EX�/�>Y�+��в
9�
����]@(8HXhx�����
]���013533#3 #4&#"##q����c�X�lyL{V-��^��u������?}�Fu�R�^���1�T&������u�&��1��s�S�+�+�	+�/�EX�/�>Y�EX�
/�
>Y�EX�/�>Y�EX�/�>Y��	�01!!#!3!3s������/���?���/1��A�/�	/�ܱ
��а/���/�EX�/�>Y�EX�/�>Y���013!#!/u�����\1�^A�/�	/�ܱ
��а/���/�EX�/�>Y�EX�/�>Y���013!#!/u���^������1��&#�u��1����&C�u��1��&%�u������s�&E�u��1s�&'�u�����&G�u��1s�&.�u���&N���1��&1�u��1���&Q�������&4�u�������&T�����&5�u������&U�u������&8Ay�����X&XA������&8�u�����T&X�������&8�u�����&X�������&:Ay����u�X&ZA��	�+01!5!��\��uF	�+�+�+�+���]@	)9IYiy�����
]���]@	)9IYiy�����
]��а/��а���EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�EX�/�>Y�
+�9�
9�����]@(8HXhx�����
]����01!##33254#" ! !!��ˉ���Jttyw�������T�������o//����u��	�+01!5!��\��u���P �/�EX�/�>Y�EX�/�>Y01%'�P�R�NNPN��PNDF/:EIT_"�Y
+�?
F+�I
+�'
0+�'�аF�а/�I�а�а/�I�аF� а?�+а+/��0�0]@	00)090I0Y0i0y0�0�0�0�0�0
]�?�6а6/�0�;а�J�@YY&Y6YFYVYfYvY�Y�Y�Y�Y�Y
]��Y�Y]�Y�PаP/��Uа'�a��C+�$3+�F+�T+��аF�а$�аT�а�*аF�,аT�7а�>а�Gа3�Mа�UаC�\�01#"&55##"&546335#"&54632354632##324&#"3264&##326%5#4&#"33#"3265oNNj�nNNnnNb`NnnNNl�lNNooN``No[9))7`)99)^5))9���Z7))99)`b)99))9NnnN``NnnNNl�lNNooN``NooNNl�l)99)`7��)7`)99����)99))7�f7))99)����
/�EX�	/�	>Y�EX�/�>Y�+��а��01!5!!5!'���+����+�P�R�NNVqqq��N��PN%\��+�	+��а	��01%#"'&##53233!5!\��{�f����{)V+d����p%��q�C�C��qJV	1�	+�EX�/�>Y�EX�/�>Y�����01!!#3''7'77V�s������P}}N}}N}}P}��u�r���M~~M}}P}}P}\/F�/�
/�ܰ�а/�	��		��EX�/�>Y�+��а�а��01%!!5#5!!5!\����m�n���n�����b�(��)/�*/�ܱ
���]@	)9IYiy�����
]�)�$а$/�#	�($9�EX�%/�%>Y�EX�/�>Y��@'7GWgw�����
]���]�"%9�%�'�01#".'732>54.'7#!#bI�cP�uVICcyER�j=(Li?J{\3��P��o���b�}J1X}L;hL+=i�T?yeGIVu�`Np��o���T}�	+�/�+�
+���01#!!2>5!5!TT��u���N��DN�u\�yE�J%pɘX�LBEN�Fx�\oH\/@�/�	/�ܰ�а/�	��	��EX�/�>Y�ܰ���а�01!!3!53\��n6p/��H^�	�+015!^H�������+�/�EX�/�>Y013#��������^��+�EX�/�>Y�+01!!#����щ�C����+�EX�/�>Y�+015!#�H�����H^��+�/�+013!!��G�/��F�H��+�/�+015!3��H�������^�%�+����/�EX�/�>Y�+013!!#��G�����F��C���%�+����/�EX�/�>Y�+01#!5!3��s���������^�"�+�EX�/�>Y�+���015!!#^���H���C�H^��+�/�+���015!3!��GH���F���^�7�+��а�
��/�EX�	/�	>Y�+��а��015!3!!#��G���H���F��C��^��+�+01!5!5^��^�������������@�/�	/��а/��	�ܱ��/�/�EX�/�>Y�EX�/�>Y01#;#\��쉉������^�>�+�+���а�
��EX�/�>Y�	+�+���01!#!!#^���u\�����t����^�I�/�
/�ܱ��а/���
��EX�/�>Y�EX�/�>Y�+�
+01!###!^�s��uщ�CH���u��^�F�/�
/��а/��
�	ܱ
��EX�/�>Y�EX�	/�	>Y�+�+01#!!#\���s����������;�+�	
+������EX�	/�	>Y�+�+���01535#5!3#��\�������t����I�/�
/��а/��а
�ܱ��EX�/�>Y�EX�/�>Y�	+�+01!####5\u������/H��������B�+�+��а���EX�/�>Y�EX�/�>Y�+�	+01!5!###5H��щ������t���^�4�+�	+���а	�
��/�	+�+���01!3!#3���G���u�����H^�5�/�
/�	ܱ��а/�����/�/�	+�+01!333!H�����Ht��E�H���^�2�/�
/��а/��
�	ܱ��/�/�+�	+013!3!Ӊ��������u�����.�+�+����
��	/�/�+���015#5!3!#5�������w���H��5�/�
/��а/��а
�	ܱ��/�/�+�	+0153333!Ӊ��H����E�1�����.�+�	+����
��/�/�	+�+015333!5Ӊ�/��w�t�����^�1�+��а�
��/�EX�	/�	>Y�+�+013!!#��G�����������^�L�/�
/��а/��
�ܱ��	��/�/�EX�/�>Y�EX�
/�
>Y�+01#;!!#\�����s����F��C��^�	X�/�/��а/���ܱ��а���/�/�EX�/�>Y�EX�
/�
>Y�
+�+01#33!!#\�����s����w���������1�+����/�EX�/�>Y�	+�+015!3#!5����s��w�t�����L�/�
/��а/���а
�	ܱ��/�/�EX�/�>Y�EX�
/�
>Y�+01##53;#\��Ӊ쉉����������T�+�
+����а�а�
��/�/�EX�/�>Y�EX�/�>Y�	+�+01533##53#Ӊ��H����w�t�t���^�(�+�EX�/�>Y�	+�+���015!!#!5^���������������^�L�/�
/��а/��
�	ܱ
��EX�/�>Y�EX�	/�	>Y�+���01##5!!#\��^�s�������CF��^�	N�+�
+������EX�/�>Y�EX�
/�
>Y�+�+��
а��01##5!5!#\��^��^�s��t�t���������^��+�/�	+�+���015!3!!5��G�����늊H^�8�/�
/��а/��
�	ܱ��/�/�+��а�	�0153333!Ӊ��H����C�F��^�:�+�	+������/�/�
+�+��а�	�0153333!!5Ӊ������w���늊��^�=�+��
а���/�EX�/�>Y�	+�+��а	�
�015!3!!#!5��G����s��������^�[�/�/�ܱ��а�
а
/�	�
���/�/�EX�/�>Y�EX�	/�	>Y�+��а�
�01!#3##53^�s�������щ�C�F�������^�x�+�+����а�а�
а�а���/�
/�EX�/�>Y�EX�/�>Y�	+�+��а�а�а	��01533##5%3!!#Ӊ��F���q���w�t��������������EX�/�>Y�EX�/�>Y01	���������V�	�/�/01	7V����^���5�;�qs����S�/�/�ܰ�а/�
	��	��EX�/�>Y�EX�/�>Y�	+��а	�а�
�01#!#5	3!����`������k��\k�b����;�����EX�/�>Y�EX�/�>Y01#!#5!�������\��\k������0�	+�/�	+�+�	�
а�а�а��01%!!#5!!5!#53��O��DO�y�+�_��s����LBEN��mmm�doH
g�
	+�	+�

+�	+����EX�/�>Y�EX�/�>Y�+�	+�������01!!!#'!!##5#53533�47���%�����l��l��m�������+��n��J��^�"�		
+�/�/�EX�	/�	>Y�+01!!#3^��yN�N��/�Znn���N�N�����
��{}�	+�
/�+�	+01!!3!'7'7!".5
%�JEy�\u�ND��N���uʖT}o\�xF�N����L�X��pJ��\�0�	+�	/�+�+��а�
а�а��01!5!#53'7!!#!'7\��p������N��+�{�Nm�do9��L��m�@�N���"�	+�/�/�EX�/�>Y�
+01!#3'!5!7nn��P{��1��P��1�Nyn{NhD$HT��U/�V/�U�а/�V�!ܱ'
��'�']@	'')'9'I'Y'i'y'�'�'�'�'�'
]�!�-а-/��9
�@99&969F9V9f9v9�9�9�9�9�9
]��9�9]�!�GаG/�R/�EX�//�/>Y�EX�5/�5>Y�E+��а/�5��а/�E�=а=/01#"'&#"#"'&547632327632&5476677&#"'&#"3276323276%h$Nc^-GJ-)HJ"{wyNZ�9V+7
"VV2�m�13&�1
$ \^��hs>3k\F1\<?Z83N�75L+oum���ťs�
�{�ZPVAv�gZ
')!l[|���#u1VRX
<	���/-dz$+�
+��
�
]@	

)
9
I
Y
i
y
�
�
�
�
�

]@fv�����]@
&6FV]���]�$���EX�)/�)>Y�EX�/�>Y�EX�/�>Y���)����]@(8HXhx�����
]��а �013!>54.#"!535&54>32�n}��CZ8'V�^Z�V)6XC���yn?{�ww�}?��]ru#g{�?R��VV��R?�{g��urV�qբbb��b;;N'U;
|�4�	
���
�;N;	vr	&�		N	&�	j	"�	h�			0(	0(	
8�X	&�	Copyright (c) Mark Simonson 2009-2010. All rights reserved.Anonymous Pro MinusRegularMarkSimonson: Anonymous Pro Minus: 2010Version 1.003AnonymousProMinusAnonymous Pro Minus is a trademark of Mark Simonson.Mark Simonsonhttp://www.ms-studio.comCopyright (c) 2009, Mark Simonson (http://www.ms-studio.com, mark@marksimonson.com), with Reserved Font Name Anonymous Pro Minus.

This Font Software is licensed under the SIL Open Font License, Version 1.1.
Copyright (c) 2009, Mark Simonson (http://www.ms-studio.com, mark@marksimonson.com), with Reserved Font Name Anonymous Pro Minus.

This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL


----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 -----------------------------------------------------------

PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.

The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.

DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the copyright statement(s).

"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.

"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.

5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.

TERMINATION This license becomes null and void if any of the above conditions are not met.

DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
 part or in whole -- any of the components of the

Original Version, by changing formats or by porting the Font Software to a

new environment.



"Author" refers to any designer, engineer, programmer, technical

writer or other person who contributed to the Font Software.



PERMISSION & CONDITIONS

Permission is hereby granted, free of charge, to any person obtaining

a copy of the Font Software, to use, study, copy, merge, embed, modify,

redistribute, and sell modified and unmodified copies of the Font

Software, subject to the following conditions:



1) Neither the Font Software nor any of its individual components,

in Original or Modified Versions, may be sold by itself.



2) Original or Modified Versions of the Font Software may be bundled,

redistributed and/or sold with any software, provided that each copy

contains the above copyright notice and this license. These can be

included either as stand-alone text files, human-readable headers or

in the appropriate machine-readable metadata fields within text or

binary files as long as those fields can be easily viewed by the user.



3) No Modified Version of the Font Software may use the Reserved Font

Name(s) unless explicit written permission is granted by the corresponding

Copyright Holder. This restriction only applies to the primary font name as

presented to the users.



4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font

Software shall not be used to promote, endorse or advertise any

Modified Version, except to acknowledge the contribution(s) of the

Copyright Holder(s) and the Author(s) or with their explicit written

permission.



5) The Font Software, modified or unmodified, in part or in whole,

must be distributed entirely under this license, and must not be

distributed under any other license. The requirement for fonts to

remain under this license does not apply to any document created

using the Font Software.



TERMINATION

This license becomes null and void if any of the above conditions are

not met.



DISCLAIMER

THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT

OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE

COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL

DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM

OTHER DEALINGS IN THE FONT SOFTWARE.Copyright (c) Mark Simonson 2009-2010. All rights reserved.Anonymous Pro MinusRegularMarkSimonson: Anonymous Pro Minus: 2010Version 1.003AnonymousProMinusAnonymous Pro Minus is a trademark of Mark Simonson.Mark Simonsonhttp://www.ms-studio.comCopyright (c) 2009, Mark Simonson (http://www.ms-studio.com, mark@marksimonson.com), with Reserved Font Name Anonymous Pro Minus.

This Font Software is licensed under the SIL Open Font License, Version 1.1.
Copyright (c) 2009, Mark Simonson (http://www.ms-studio.com, mark@marksimonson.com), with Reserved Font Name Anonymous Pro Minus.

This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL


----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 -----------------------------------------------------------

PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.

The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.

DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the copyright statement(s).

"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.

"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.

5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.

TERMINATION This license becomes null and void if any of the above conditions are not met.

DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
 part or in whole -- any of the components of the

Original Version, by changing formats or by porting the Font Software to a

new environment.



"Author" refers to any designer, engineer, programmer, technical

writer or other person who contributed to the Font Software.



PERMISSION & CONDITIONS

Permission is hereby granted, free of charge, to any person obtaining

a copy of the Font Software, to use, study, copy, merge, embed, modify,

redistribute, and sell modified and unmodified copies of the Font

Software, subject to the following conditions:



1) Neither the Font Software nor any of its individual components,

in Original or Modified Versions, may be sold by itself.



2) Original or Modified Versions of the Font Software may be bundled,

redistributed and/or sold with any software, provided that each copy

contains the above copyright notice and this license. These can be

included either as stand-alone text files, human-readable headers or

in the appropriate machine-readable metadata fields within text or

binary files as long as those fields can be easily viewed by the user.



3) No Modified Version of the Font Software may use the Reserved Font

Name(s) unless explicit written permission is granted by the corresponding

Copyright Holder. This restriction only applies to the primary font name as

presented to the users.



4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font

Software shall not be used to promote, endorse or advertise any

Modified Version, except to acknowledge the contribution(s) of the

Copyright Holder(s) and the Author(s) or with their explicit written

permission.



5) The Font Software, modified or unmodified, in part or in whole,

must be distributed entirely under this license, and must not be

distributed under any other license. The requirement for fonts to

remain under this license does not apply to any document created

using the Font Software.



TERMINATION

This license becomes null and void if any of the above conditions are

not met.



DISCLAIMER

THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT

OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE

COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL

DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM

OTHER DEALINGS IN THE FONT SOFTWARE.�E{p	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~�����������������������������������������������������������������������������������������������	�������������

��� !"#��$%&'()*+,-./0123456789:;<=>?@ABC��DEFGHIJKLMNOPQRSTUVWXYZ[\����]^_`abcdefghijklmnopqrstuv��wxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:�;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw.nullDeltauni00A0Europeriodcenteredmacroncommaaccentuni00ADAmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflex
Cdotaccent
cdotaccentDcarondcaronDcroatdcroatEmacronemacronEbreveebreve
Edotaccent
edotaccentEogonekeogonekEcaronecaronGcircumflexgcircumflex
Gdotaccent
gdotaccentGcommaaccentgcommaaccentHcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonek
IdotaccentIJijJcircumflexjcircumflexKcommaaccentkcommaaccentkgreenlandicLacutelacuteLcommaaccentlcommaaccentLcaronlcaronLdotldotNacutenacuteNcommaaccentncommaaccentNcaronncaronnapostropheEngengOmacronomacronObreveobreve
Ohungarumlaut
ohungarumlautRacuteracuteRcommaaccentrcommaaccentRcaronrcaronSacutesacuteScircumflexscircumflexTcommaaccenttcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring
Uhungarumlaut
uhungarumlautUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacute
Zdotaccent
zdotaccentlongsAEacuteaeacuteOslashacuteoslashacuteScommaaccentscommaaccentuni021Auni021Btonos
dieresistonos
AlphatonosEpsilontonosEtatonos	IotatonosOmicrontonosUpsilontonos
OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsiIotadieresisUpsilondieresis
alphatonosepsilontonosetatonos	iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomegaiotadieresisupsilondieresisomicrontonosupsilontonos
omegatonos	afii10023	afii10051	afii10052	afii10053	afii10054	afii10055	afii10056	afii10057	afii10058	afii10059	afii10060	afii10061	afii10062	afii10145	afii10017	afii10018	afii10019	afii10020	afii10021	afii10022	afii10024	afii10025	afii10026	afii10027	afii10028	afii10029	afii10030	afii10031	afii10032	afii10033	afii10034	afii10035	afii10036	afii10037	afii10038	afii10039	afii10040	afii10041	afii10042	afii10043	afii10044	afii10045	afii10046	afii10047	afii10048	afii10049	afii10065	afii10066	afii10067	afii10068	afii10069	afii10070	afii10072	afii10073	afii10074	afii10075	afii10076	afii10077	afii10078	afii10079	afii10080	afii10081	afii10082	afii10083	afii10084	afii10085	afii10086	afii10087	afii10088	afii10089	afii10090	afii10091	afii10092	afii10093	afii10094	afii10095	afii10096	afii10097	afii10071	afii10099	afii10100	afii10101	afii10102	afii10103	afii10104	afii10105	afii10106	afii10107	afii10108	afii10109	afii10110	afii10193	afii10050	afii10098uni1E02uni1E03uni1E0Auni1E0Buni1E1Euni1E1Funi1E40uni1E41uni1E56uni1E57uni1E60uni1E61uni1E6Auni1E6BWgravewgraveWacutewacute	Wdieresis	wdieresisYgraveygrave	afii00208	afii61352uni2303uni2318uni2324	optionkeyerasetotherightuni237duni2388uni23ceuni2423SF100000SF110000SF010000SF030000SF020000SF040000SF080000SF090000SF060000SF070000SF050000SF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000blackdiamond	checkmarkshift	shiftlockverticaltabcopybackendtabinserttab	appleopenuni03A9	
��PKʼn	[
�k-��302_Imagick_claheImage.phptnu�[���--TEST--
Test Imagick, claheImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('claheImage'));
?>
--FILE--
<?php


function claheImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->claheImage(
		10,
		10,
		8,
		2
	);
//    $imagick->writeImage(__DIR__ . '/claheImage_output_image.png');
    $imagick->getImageBlob();
}

claheImage() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKʼn	[�b5���(209_ImagickDraw_setFontWeight_basic.phptnu�[���--TEST--
Test ImagickDraw, setFontWeight
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFontWeight($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(1);

    $draw->setFontSize(36);

    $draw->setFontWeight(100);
    $draw->annotation(50, 50, "Lorem Ipsum!");

    $draw->setFontWeight(200);
    $draw->annotation(50, 100, "Lorem Ipsum!");

    $draw->setFontWeight(400);
    $draw->annotation(50, 150, "Lorem Ipsum!");

    $draw->setFontWeight(800);
    $draw->annotation(50, 200, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFontWeight($fillColor, $strokeColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�i_h��'079_Imagick_getImageGeometry_basic.phptnu�[���--TEST--
Test Imagick, getImageGeometry
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function getImageGeometry() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

getImageGeometry() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[$͏���'202_ImagickDraw_setFillColor_basic.phptnu�[���--TEST--
Test ImagickDraw, setFillColor
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFillColor($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(1.5);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->rectangle(50, 50, 150, 150);

    $draw->setFillColor("rgb(200, 32, 32)");
    $draw->rectangle(200, 50, 300, 150);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFillColor($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[Z� ���286_Imagick_setMask_basic.phptnu�[���--TEST--
Test Imagick, setImageMask basic
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('getImageMask', 'setImageMask'));
?>
--FILE--
<?php

// TODO - this doesn't really test that it works...

$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");

$default_mask = $imagick->getImageMask(Imagick::PIXELMASK_READ);

if ($default_mask !== null) {
	echo "Default mask is not null but\n";
	var_dump($default_mask);
}

$mask = new Imagick();
$mask->newPseudoImage(480, 640, "gradient:black-white");
$mask->transposeImage();

$imagick->setImageMask($mask, Imagick::PIXELMASK_READ);

$mask = $imagick->getImageMask(Imagick::PIXELMASK_READ);
$mask->setImageFormat('png');
//$mask->writeImage(__DIR__ . "/i_am_a_mask.png");
//if ( !== Imagick::PIXELMASK_READ) {
//    echo "Failed to set/get Imagick::PIXELMASK_READ";
//};

$imagick->setImageMask($mask, Imagick::PIXELMASK_WRITE);

//$imagick->blurImage(15, 4);
//$imagick->writeImage(__DIR__ . "/mask_test.png");

//if ($imagick->getImageMask() !== Imagick::PIXELMASK_WRITE) {
//        echo "Failed to set/get Imagick::PIXELMASK_WRITE";
//    };

// This can only be tested MagickLibVersion >= 0x708
// so should probably be in a test by itself, once it's figured out
// what it does.
// $imagick->setImageMask($mask, Imagick::PIXELMASK_COMPOSITE);
//if ($imagick->getImageMask() !== Imagick::PIXELMASK_COMPOSITE) {
//    echo "Failed to set/get Imagick::PIXELMASK_COMPOSITE";
//};

$imagick->setImageMask($mask, -1);
// $unknown_result = $imagick->getImageMask(Imagick::PIXELMASK_READ);
// todo echo "not sure what -1 should be: $unknown_result \n";

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[~Nz"111_Imagick_rotateImage_basic.phptnu�[���--TEST--
Test Imagick, rotateImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$angle = 45;
$color = 'rgb(127, 127, 127)';

function rotateImage($angle, $color) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->rotateimage($color, $angle);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

rotateImage($angle, $color) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[����'284_ini_settings_set_truthy_number.phptnu�[���--TEST--
OpenMP segfault hacks

--INI--
imagick.shutdown_sleep_count=20
imagick.set_single_thread=1
--SKIPIF--
<?php 


require_once(dirname(__FILE__) . '/skipif.inc');
 
?>
--FILE--
<?php


$sleepCount = intval(ini_get('imagick.shutdown_sleep_count'));
$setSingleThread = ini_get('imagick.set_single_thread');

if ($sleepCount != 20) {
    echo "imagick.shutdown_sleep_count is not set to 10 but instead " . var_export($sleepCount, true) ."\n";
}

if ($setSingleThread != 1) {
    echo "imagick.set_single_thread setting is not true but instead " . var_export($setSingleThread, true) ."\n";
}


echo "Complete".PHP_EOL;
?>
--EXPECTF--
Complete
PKʼn	[�Lm'044_Imagick_colorMatrixImage_basic.phptnu�[���--TEST--
Test Imagick, colorMatrixImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkFormatPresent('png');
?>
--FILE--
<?php

$colorMatrix = array (
  0 => 1.5,
  1 => 0,
  2 => 0,
  3 => 0,
  4 => -0.157,
  5 => 0,
  6 => 1,
  7 => 0.5,
  8 => 0,
  9 => -0.157,
  10 => 0,
  11 => 0,
  12 => 0.5,
  13 => 0,
  14 => 0.5,
  15 => 0,
  16 => 0,
  17 => 0,
  18 => 1,
  19 => 0,
  20 => 0,
  21 => 0,
  22 => 0,
  23 => 0,
  24 => 1,
);

function colorMatrixImage($colorMatrix) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    //$imagick->setImageOpacity(1);

    //A color matrix should look like:
    //    $colorMatrix = [
    //        1.5, 0.0, 0.0, 0.0, 0.0, -0.157,
    //        0.0, 1.0, 0.5, 0.0, 0.0, -0.157,
    //        0.0, 0.0, 1.5, 0.0, 0.0, -0.157,
    //        0.0, 0.0, 0.0, 1.0, 0.0,  0.0,
    //        0.0, 0.0, 0.0, 0.0, 1.0,  0.0,
    //        0.0, 0.0, 0.0, 0.0, 0.0,  1.0
    //    ];

    $background = new \Imagick();
    $background->newPseudoImage($imagick->getImageWidth(), $imagick->getImageHeight(),  "pattern:checkerboard");

    $background->setImageFormat('png');

    $imagick->setImageFormat('png');
    $imagick->colorMatrixImage($colorMatrix);
    
    $background->compositeImage($imagick, \Imagick::COMPOSITE_ATOP, 0, 0);

    $bytes = $background->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

colorMatrixImage($colorMatrix) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	["ckuJJ*113_Imagick_rotationalBlurImage_basic.phptnu�[���--TEST--
Test Imagick, rotationalBlurImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); 

checkClassMethods('Imagick', array('rotationalBlurImage'));

?>
--FILE--
<?php


function rotationalBlurImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->rotationalBlurImage(3);
    $imagick->rotationalBlurImage(5);
    $imagick->rotationalBlurImage(7);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

rotationalBlurImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�r@W+222_ImagickDraw_setTextAlignment_basic.phptnu�[���--TEST--
Test ImagickDraw, setTextAlignment
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setTextAlignment($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();
    setFontForImagickDraw($draw);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(36);

    $draw->setTextAlignment(\Imagick::ALIGN_LEFT);
    $draw->annotation(250, 75, "Lorem Ipsum!");
    $draw->setTextAlignment(\Imagick::ALIGN_CENTER);
    $draw->annotation(250, 150, "Lorem Ipsum!");
    $draw->setTextAlignment(\Imagick::ALIGN_RIGHT);
    $draw->annotation(250, 225, "Lorem Ipsum!");
    $draw->line(250, 0, 250, 500);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setTextAlignment($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[<v~-139_Imagick_sigmoidalContrastImage_basic.phptnu�[���--TEST--
Test Imagick, sigmoidalContrastImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$sharpening = 1;
$midpoint = 4;
$sigmoidalContrast = 0.5;

function sigmoidalContrastImage($sharpening, $midpoint, $sigmoidalContrast) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    //Need some stereo image to work with.
    $imagick->sigmoidalcontrastimage(
        $sharpening, //sharpen 
        $midpoint,
        $sigmoidalContrast * \Imagick::getQuantum()
    );
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

sigmoidalContrastImage($sharpening, $midpoint, $sigmoidalContrast) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�X��ee021-countable.phptnu�[���--TEST--
Test countable interface
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); 

if (!extension_loaded ('spl'))
	die ('skip SPL is needed');
?>
--FILE--
<?php


$imagick = new Imagick(array (
						'magick:rose',
						'magick:rose',
						'magick:rose',
));

echo count ($imagick) . PHP_EOL;
echo 'done' . PHP_EOL;
?>
--EXPECT--
3
donePKʼn	[�^�||&127_Imagick_progressMonitor_basic.phptnu�[���--TEST--
Test Imagick, progressMonitor
--SKIPIF--
<?php

require_once(dirname(__FILE__) . '/skipif.inc'); 
checkClassMethods('Imagick', array('setProgressMonitor'));
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;

if (property_exists('Imagick', 'RESOURCETYPE_THREAD')) {
	Imagick::setResourceLimit(\Imagick::RESOURCETYPE_THREAD, 8);
}

$debug = "";
$status = 'Not cancelled';
$startTime = time();

$callback = function ($offset, $span) use (&$status, $startTime, $debug) {

	static $x = 0;

	if (((100 * $offset) / $span)  > 20) {
		$status = "Processing cancelled";
		return false;
	}

	$nowTime = time();

	$debug .= "$x: nowTime $nowTime - startTime $startTime".PHP_EOL;
	$x++;

	if ($nowTime - $startTime > 5) {
		$status = "Processing cancelled";
		return false;
	}

	return true;
};

$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "magick:logo");

$imagick->setProgressMonitor($callback);

try {

	$imagick->charcoalImage($radius, $sigma);
	$bytes = $imagick->getImageBlob();
	echo "Progress monitor failed to interrupt.".PHP_EOL;
	echo $debug;
}
catch(\Exception $e) {
	echo $status.PHP_EOL;
}
?>
--EXPECTF--
Processing cancelledPKʼn	[)>O���#068_Imagick_enhanceImage_basic.phptnu�[���--TEST--
Test Imagick, enhanceImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function enhanceImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->enhanceImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

enhanceImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[FJ�$050_Imagick_distortImage_Affine.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array(
            0,    0, 
            25,  25,
            100,  0, 
            100, 50
        );

        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND );
        $imagick->distortImage(  \Imagick::DISTORTION_AFFINE, $points, TRUE );
        header( "Content-Type: image/jpeg" );
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��hh+287_Imagick_GetImageChannelRange_basic.phptnu�[���--TEST--
Test Imagick, GetImageChannelRange basic
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--XFAIL--
Tests are not stable across ImageMagick versions.
--FILE--
<?php

$imagick = new \Imagick();
$imagick->newPseudoImage(640, 480, "gradient:rgb(0,32,32)-rgb(128,255,255)");

$redChannelRange = $imagick->getImageChannelRange(\Imagick::CHANNEL_RED);
$greenChannelRange = $imagick->getImageChannelRange(\Imagick::CHANNEL_GREEN);

$expectedRedMinima = (Imagick::getQuantum() * 0.0) / 255;
$expectedRedMaxima = (Imagick::getQuantum() * 128.0) / 255;

$expectedGreenMinima = (Imagick::getQuantum() * 32.0) / 255;
$expectedGreenMaxima = (Imagick::getQuantum() * 255.0) / 255;

// Floating point math. This is absolutely going to blow up
// on some platforms. But as finding out which would be interesting
// will leave it like this for now.
if ($expectedRedMinima !== $redChannelRange['minima']) {
	printf(
		"Unexpected red minima. Was expecting %s but have %s\n",
		$expectedRedMinima,
		$redChannelRange['minima']
	);
}
if ($expectedRedMaxima !== $redChannelRange['maxima']) {
	printf(
		"Unexpected red maxima. Was expecting %s but have %s\n",
		$expectedRedMinima,
		$redChannelRange['maxima']
	);
}


if ($expectedGreenMinima !== $greenChannelRange['minima']) {
	printf(
		"Unexpected green minima. Was expecting %s but have %s\n",
		$expectedGreenMinima,
		$greenChannelRange['minima']
	);
}
if ($expectedGreenMaxima !== $greenChannelRange['maxima']) {
	printf(
		"Unexpected green maxima. Was expecting %s but have %s\n",
		$expectedGreenMaxima,
		$greenChannelRange['maxima']
	);
}

echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�*Aw��"190_ImagickDraw_popDefs_basic.phptnu�[���--TEST--
Test ImagickDraw, popDefs
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function popDefs($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setstrokeOpacity(1);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->pushDefs();
    $draw->setStrokeColor('white');
    $draw->rectangle(50, 50, 200, 200);
    $draw->popDefs();

    $draw->rectangle(300, 50, 450, 200);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

popDefs($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��r'��!178_ImagickDraw_circle_basic.phptnu�[���--TEST--
Test ImagickDraw, circle
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$originX = 250;
$originY = 250;
$endX = 400;
$endY = 400;

function circle($strokeColor, $fillColor, $backgroundColor, $originX, $originY, $endX, $endY) {

    //Create a ImagickDraw object to draw into.
    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->circle($originX, $originY, $endX, $endY);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

circle($strokeColor, $fillColor, $backgroundColor, $originX, $originY, $endX, $endY) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[_p��((254_getConfigureOptions.phptnu�[���--TEST--
Test Imagick::getConfigureOptions
--SKIPIF--
<?php

require_once(dirname(__FILE__) . '/skipif.inc');

checkClassMethods('Imagick', array('getconfigureoptions'));


?>
--FILE--
<?php

$allOptions = Imagick::getConfigureOptions();

if (!is_array($allOptions)) {
	echo "Failed to return array".PHP_EOL;
	var_dump($allOptions);
}
else if (count($allOptions) == 0) {
	echo "allOptions is empty".PHP_EOL;
}


$optionsStartingWithC = Imagick::getConfigureOptions("Q*");

if (!is_array($optionsStartingWithC)) {
	echo "Failed to return array".PHP_EOL;
	var_dump($optionsStartingWithC);
}
else if (count($optionsStartingWithC) == 0) {
	echo "optionsStartingWithC is empty".PHP_EOL;
	echo "All options are:\n";
	var_dump(Imagick::getConfigureOptions());
}

//Example output on Debian
//
//array(38) {
//  ["CC"]=>
//  string(3) "gcc"
//  ["CFLAGS"]=>
//  string(186) "-I/usr/include/libxml2 -I/usr/include/libpng16 -I/usr/include/freetype2  -fopenmp -Wall -g -O2 -mtune=core2 -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16"
//  ["CODER_PATH"]=>
//  string(56) "/usr/local/lib/ImageMagick-7.0.11/modules-Q16HDRI/coders"
//  ["CONFIGURE"]=>
//  string(155) "./configure  '--with-quantum-depth=16' '--with-magick-plus-plus=no' '--without-perl' '--disable-static' '--disable-docs' '--with-jpeg=yes' '--with-png=yes'"
//  ["CONFIGURE_PATH"]=>
//  string(29) "/usr/local/etc/ImageMagick-7/"
//  ["COPYRIGHT"]=>
//  string(46) "Copyright (C) 1999-2021 ImageMagick Studio LLC"
//  ["CPPFLAGS"]=>
//  string(34) "-I/usr/local/include/ImageMagick-7"
//  ["CXX"]=>
//  string(3) "g++"
//  ["CXXFLAGS"]=>
//  string(9) " -pthread"
//  ["DEFS"]=>
//  string(15) "-DHAVE_CONFIG_H"
//  ["DELEGATES"]=>
//  string(33) "freetype jng jpeg png ps xml zlib"
//  ["DISTCHECK_CONFIG_FLAGS"]=>
//  string(217) " --disable-deprecated  --with-quantum-depth=16  --with-jemalloc=no  --with-umem=no  --with-autotrace=no  --with-fftw=no  --with-gslib=no  --with-fontpath=  --with-jxl=no  --with-rsvg=no  --with-wmf=no  --with-perl=no "
//  ["DOCUMENTATION_PATH"]=>
//  string(34) "/usr/local/share/doc/ImageMagick-7"
//  ["EXEC-PREFIX"]=>
//  string(10) "/usr/local"
//  ["EXECUTABLE_PATH"]=>
//  string(14) "/usr/local/bin"
//  ["FEATURES"]=>
//  string(22) "DPC HDRI Cipher OpenMP"
//  ["FILTER_PATH"]=>
//  string(57) "/usr/local/lib/ImageMagick-7.0.11/modules-Q16HDRI/filters"
//  ["GIT_REVISION"]=>
//  string(24) "18571:309fcfa1c:20210328"
//  ["HOST"]=>
//  string(19) "x86_64-pc-linux-gnu"
//  ["INCLUDE_PATH"]=>
//  string(32) "/usr/local/include/ImageMagick-7"
//  ["LDFLAGS"]=>
//  string(17) "-L/usr/local/lib "
//  ["LIB_VERSION"]=>
//  string(5) "0x70B"
//  ["LIB_VERSION_NUMBER"]=>
//  string(8) "7,0,11,6"
//  ["LIBRARY_PATH"]=>
//  string(33) "/usr/local/lib/ImageMagick-7.0.11"
//  ["LIBS"]=>
//  string(96) "    -lfreetype  -ljpeg    -lpng16                       -lxml2  -lz     -lm    -lpthread  -lgomp"
//  ["MAGICK_TEMPORARY_PATH"]=>
//  string(4) "/tmp"
//  ["NAME"]=>
//  string(11) "ImageMagick"
//  ["PCFLAGS"]=>
//  string(65) "-fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16"
//  ["PREFIX"]=>
//  string(10) "/usr/local"
//  ["QuantumDepth"]=>
//  string(2) "16"
//  ["RELEASE_DATE"]=>
//  string(10) "2021-03-28"
//  ["SHARE_PATH"]=>
//  string(30) "/usr/local/share/ImageMagick-7"
//  ["SHAREARCH_PATH"]=>
//  string(48) "/usr/local/lib/ImageMagick-7.0.11/config-Q16HDRI"
//  ["TARGET_CPU"]=>
//  string(6) "x86_64"
//  ["TARGET_OS"]=>
//  string(9) "linux-gnu"
//  ["TARGET_VENDOR"]=>
//  string(2) "pc"
//  ["VERSION"]=>
//  string(6) "7.0.11"
//  ["WEBSITE"]=>
//  string(23) "https://imagemagick.org"
//}



// Examples of output on nixos
//array(5) {
//  ["DELEGATES"]=>
//  string(102) "bzlib cairo djvu fontconfig freetype heic jng jp2 jpeg lcms lzma openexr png rsvg tiff webp x xml zlib"
//  ["FEATURES"]=>
//  string(28) "Cipher DPC HDRI OpenMP(4.5) "
//  ["MAGICK_TEMPORARY_PATH"]=>
//  string(4) "/tmp"
//  ["NAME"]=>
//  string(11) "ImageMagick"
//  ["QuantumDepth"]=>
//  string(3) "Q16"
//}








if (!(count($optionsStartingWithC) < count($allOptions))) {
	echo "";
	var_dump($optionsStartingWithC);
	var_dump($allOptions);
}

foreach ($optionsStartingWithC as $key => $value) {
	$key = strtolower($key);

	if (stripos($key, "q") !== 0) {
		echo "key $key does not start with c".PHP_EOL;
	}
}

echo "Ok";

?>
--EXPECTF--
OkPKʼn	[?v�m��'200_ImagickDraw_setClipUnits_basic.phptnu�[���--TEST--
Test ImagickDraw, setClipUnits
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setClipUnits($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);
    $clipPathName = 'testClipPath';
    $draw->setClipUnits(\Imagick::RESOLUTION_PIXELSPERINCH);
    $draw->pushClipPath($clipPathName);
    $draw->rectangle(0, 0, 250, 250);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);

    //RESOLUTION_PIXELSPERINCH
    //RESOLUTION_PIXELSPERCENTIMETER

    $draw->rectangle(200, 200, 300, 300);
    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setClipUnits($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�,��.214_ImagickDraw_setStrokeDashOffset_basic.phptnu�[���--TEST--
Test ImagickDraw, setStrokeDashOffset
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setStrokeDashOffset($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(4);
    $draw->setStrokeDashArray(array(20, 20));
    $draw->setStrokeDashOffset(0);
    $draw->rectangle(100, 50, 225, 175);

    //Start the dash effect halfway through the solid portion
    $draw->setStrokeDashOffset(10);
    $draw->rectangle(275, 50, 400, 175);

    //Start the dash effect on the space portion
    $draw->setStrokeDashOffset(20);
    $draw->rectangle(100, 200, 225, 350);
    $draw->setStrokeDashOffset(5);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setStrokeDashOffset($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�	<,,$046_Imagick_contrastImage_basic.phptnu�[���--TEST--
Test Imagick, contrastImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$contrastType = 1;

function contrastImage($contrastType) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    if ($contrastType != 2) {
        $imagick->contrastImage($contrastType);
    }

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

contrastImage($contrastType) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[B�Qk$312_Imagick_colorThresholdImage.phptnu�[���--TEST--
Test Imagick, colorThresholdImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('colorThresholdImage'));
?>
--FILE--
<?php

function colorThresholdImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->colorThresholdImage(
        "rgb(10, 10, 10)",
        "rgb(240, 240, 240)"
    );
//    $imagick->writeImage(__DIR__ . '/colorThresholdImage_output_image.png');
    $imagick->getImageBlob();
}

colorThresholdImage() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKʼn	[{����#088_Imagick_implodeImage_basic.phptnu�[���--TEST--
Test Imagick, implodeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function implodeImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->implodeImage(0.0001);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

}

implodeImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��k��	�	php.gifnu�[���GIF89axC�j��97G(%*��⡤���粴�CBX������RRr�����ު��LKc[\����;8<nq�jm�ac�uy�{~����ƌ�����kk�NNkqt�zz����rt�ts����Z[~���{}����mp�rv���Ȼ��tx���������꒒�df�kn���Δ��.+/SQh���lj�\[v���fh�hj����1.9��Ӝ��UVx��ʖ�Ł��gi�?=P���^`���Ȍ�����WX|������" lo�����w{�vx�_^}���no�sw�"������YVW����������������trs��񞜝���KHI���gde����GF_��훜�ik�os������ٸ�ך�̧����뚜�fd�hg����np����������il����!�j,xC��j�����������������������m?ms����?yy6>qLL>>
2A<B-I"99"/)�¡
}MPP}|QQ*r��t��B3-�W(%	���&q|.llu.��2�"�,@��7�᤬@�F�	?;�L���E5Al`C�G$�5�@�ɓ(S�\yr\	v�A�+CD\��	�/�0B�ˣH����&�#G�XrăΝ�~ht�##X(K6�:,�@��)3��.2��@u
HR��_�`,Q���<	��e�|�r�˘1|���
֬Q�A��<F���d��p�M�K��J�,Ys�;�Ea���+1p�¼���ȓv�]�Ț��~��cD�W� Ӽ���^yp @p@�0�D�WS�9�)���p&s��2�J]��\�R1��C�Q�24�@I�@b��f%&�@'I��`�')7�_ਔE�@��3����5�$�G�Ƅb\�$�,1�����4P�#H`�G}�El���YtQ@]�T�g�`�I�)(�]ЀR@ ��� b)E�r)Vj\| J]lQi�4l�E]�h���N�^tq(R#���l#čI���[xA�'�)c` �x
�j$5�N�H
"��fR�l�a@`^l�"�]੸���E�H�-v����de}!!��y�������6GC�,`H?�[��m��3���V���Ձ�c��9֤;�9��N��N�ścp�F�Zd�j�p�qƹ��%K
@�!��:�����-J4�yj�����
|A�YhQ5���E���a�R4�:� �dY�湩�Y|�t���J�\΂3w��*}0�w��
�!�&�e�����:S�tJ1�wF4m�J���E�,u�
���P_O8Ƶ'm�Y���*tҐ�Q��:KE��F8s��r������J����^p����N� H�1]��T{��7w�J���E�c����S
�%�P�n�[�I����9�ӏ��,�c	�֟�	��)������T�%�cN:����$�X�L�xmB�"�� �/�� �E��j�by��tO?,O��
�(!YtD�'���B�C�1|�'LI�&��qb�P�*w+�a!Z\Z�C.�Q���0F�
�~�� J��3�e�d��H�Qq%�S��:p���G�UZe(�p���x�
�h�	b���(�@�a��,ͣ��Ё�DHch��N�C��\�a!vʡI�u�H���C�(�_�<�+��Db���0��8'D�y��X��/�a�R@f�𪭩�9mX�pg��y�x�	$�I�0R\f �P�vП����e2��I)��F�!��
c���f9K2pa�BS�HJV�D\`��.(��Ҥ(e��2C��'P'R`ȅЃ�#�i@�����J�C.�9^�0�Q��G�t,K�!���)�L$S}$�4�<Y�(r��x"e-hr�B���
�X��SNi)�ye�A�hL�J��l��r�j�5���ǪDwR�$e4zYF�`1�@�@�zz�$ys��Ӂ@���Hj%�Ŵbak���F���=��a#��'L@�R���K]޽֞ԥ.��J2��@���*=w])�W�p-e�p0'D���H�P��նׯ'��rA�)�����_Q�Y9�������W�%:�܃�>�Ί����@`��`npC�Yb����b�"	% �`<�8) P�$&��x)H�t@!�!�������
-�xx���)���g�GI|�A�цp��/@���>��~��P�3"<4�q��q;ߙ"ž)@�JS�}�p��iNK�ӟ*P�pi���7�Npl 1�F
>PX*Py��w=�%�lia
c�М�7EPn801�Z1)P<�
l -�v��Bl�p�
#��P�f?�܋Apt����w�;PKʼn	[
Q��$072_Imagick_evaluateImage_basic.phptnu�[���--TEST--
Test Imagick, evaluateImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkFormatPresent('png');
?>
--FILE--
<?php

$evaluateType = 1;
$firstTerm = 0.5;
$gradientStartColor = 'black';
$gradientEndColor = 'white';

$evaluateTypes = array(
	\Imagick::EVALUATE_ADD,
	\Imagick::EVALUATE_AND,
	\Imagick::EVALUATE_MAX,
	\Imagick::EVALUATE_MIN,
	\Imagick::EVALUATE_OR,
	\Imagick::EVALUATE_SET,
	\Imagick::EVALUATE_SUBTRACT,
	\Imagick::EVALUATE_XOR,
	\Imagick::EVALUATE_THRESHOLD,
	\Imagick::EVALUATE_THRESHOLDBLACK,
	\Imagick::EVALUATE_THRESHOLDWHITE,
	\Imagick::EVALUATE_ADDMODULUS,

	\Imagick::EVALUATE_DIVIDE,
	\Imagick::EVALUATE_MULTIPLY,
	\Imagick::EVALUATE_RIGHTSHIFT,
	\Imagick::EVALUATE_LEFTSHIFT,
	\Imagick::EVALUATE_POW,
	\Imagick::EVALUATE_LOG,
	\Imagick::EVALUATE_GAUSSIANNOISE,
	\Imagick::EVALUATE_IMPULSENOISE,
	\Imagick::EVALUATE_LAPLACIANNOISE,
	\Imagick::EVALUATE_MULTIPLICATIVENOISE,
	\Imagick::EVALUATE_POISSONNOISE,
	\Imagick::EVALUATE_UNIFORMNOISE,
	\Imagick::EVALUATE_COSINE,
	\Imagick::EVALUATE_SINE,
);



function evaluateImage($evaluateType, $firstTerm, $gradientStartColor, $gradientEndColor) {
    $imagick = new \Imagick();
    $size = 400;
    $imagick->newPseudoImage(
        $size,
        $size,
        "gradient:$gradientStartColor-$gradientEndColor"
    );
    
    $quantumScaledTypes = array(
        \Imagick::EVALUATE_ADD,
        \Imagick::EVALUATE_AND,
        \Imagick::EVALUATE_MAX,
        \Imagick::EVALUATE_MIN,
        \Imagick::EVALUATE_OR,
        \Imagick::EVALUATE_SET,
        \Imagick::EVALUATE_SUBTRACT,
        \Imagick::EVALUATE_XOR,
        \Imagick::EVALUATE_THRESHOLD,
        \Imagick::EVALUATE_THRESHOLDBLACK,
        \Imagick::EVALUATE_THRESHOLDWHITE,
        \Imagick::EVALUATE_ADDMODULUS,
    );

    $unscaledTypes = array(
        \Imagick::EVALUATE_DIVIDE,
        \Imagick::EVALUATE_MULTIPLY,
        \Imagick::EVALUATE_RIGHTSHIFT,
        \Imagick::EVALUATE_LEFTSHIFT,
        \Imagick::EVALUATE_POW,
        \Imagick::EVALUATE_LOG,
        \Imagick::EVALUATE_GAUSSIANNOISE,
        \Imagick::EVALUATE_IMPULSENOISE,
        \Imagick::EVALUATE_LAPLACIANNOISE,
        \Imagick::EVALUATE_MULTIPLICATIVENOISE,
        \Imagick::EVALUATE_POISSONNOISE,
        \Imagick::EVALUATE_UNIFORMNOISE,
        \Imagick::EVALUATE_COSINE,
        \Imagick::EVALUATE_SINE,
    );

    if (in_array($evaluateType, $unscaledTypes)) {
        $imagick->evaluateimage($evaluateType, $firstTerm);
    }
    else if (in_array($evaluateType, $quantumScaledTypes)) {
        $imagick->evaluateimage($evaluateType, $firstTerm * \Imagick::getQuantum());
    }
    else {
        throw new \Exception("Evaluation type $evaluateType is not listed as either scaled or unscaled");
    }

    $imagick->setimageformat('png');
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

foreach ($evaluateTypes as $evaluateType) {
	evaluateImage($evaluateType, $firstTerm, $gradientStartColor, $gradientEndColor) ;
}
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�;��OFL.txtnu�[���Copyright (c) 2009, Mark Simonson (http://www.ms-studio.com, mark@marksimonson.com),
with Reserved Font Name Anonymous Pro Minus.

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded, 
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
PKʼn	[??���$327_Imagick_polaroidImage_basic.phptnu�[���--TEST--
Test Imagick, polaroidImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x631;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

function polaroidImage() {
    $src1 = new \Imagick();
    $src1->newPseudoImage(640, 480, "magick:logo");

    $imagickDraw = new \ImagickDraw();
    $font = findDefaultFont();

    $imagickDraw->setFont($font);

    $src1->polaroidImage($imagickDraw, 15);

    $src1->setImageFormat('png');
    $bytes = $src1->getImagesBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

polaroidImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[@���� 047_Imagick_convolveImage_7.phptnu�[���--TEST--
Test Imagick, convolveImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x700;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$bias = 0.5;
$kernelMatrix = array (
    array (-1, -1, -1),
    array (-1, 8, -1),
    array( -1, -1, -1),
);

function convolveImage($bias, $kernelMatrix) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $kernel = ImagickKernel::fromMatrix($kernelMatrix);
    $imagick->convolveImage($kernel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

convolveImage($bias, $kernelMatrix) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[f$e���013-read-filehandle.phptnu�[���--TEST--
Imagick::readImageFile test
--SKIPIF--
<?php 
	require_once(dirname(__FILE__) . '/skipif.inc');
	checkFormatPresent('jpg');
?>
--FILE--
<?php

$file = dirname(__FILE__) . '/__tmp_rose.jpg';

$imagick = new Imagick('magick:rose');
$imagick->setImageFormat('jpg');
$imagick->writeImage($file);

$imagick->clear();

$handle = fopen($file, 'rb');
$imagick->readImageFile($handle);

@unlink($file);

echo 'success';

?>
--CLEAN--
<?php
@unlink(dirname(__FILE__) . '/__tmp_rose.jpg');
?>
--EXPECT--
successPKʼn	[���!307_Imagick_levelImageColors.phptnu�[���--TEST--
Test Imagick, levelImageColors
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('levelImageColors'));
?>
--FILE--
<?php
function levelImageColors() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->levelImageColors(
		"rgb(10, 10, 10)",
		"rgb(240, 240, 240)",
		false
	);
//    $imagick->writeImage(__DIR__ . '/levelImageColors_output_image.png');
    $imagick->getImageBlob();
}

levelImageColors() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKʼn	[Y�
]��"134_Imagick_shadowImage_basic.phptnu�[���--TEST--
Test Imagick, shadowImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function shadowImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->shadowImage(0.4, 10, 50, 5);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

shadowImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[.�O���%155_Imagick_thresholdImage_basic.phptnu�[���--TEST--
Test Imagick, thresholdImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$threshold = 0.5;
//$channel = Imagick::CHANNEL_DEFAULT;
$channel = Imagick::CHANNEL_RED|Imagick::CHANNEL_GREEN|Imagick::CHANNEL_BLUE;

function thresholdimage($threshold, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->thresholdimage($threshold * \Imagick::getQuantum(), $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

thresholdimage($threshold, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�� NN0172_ImagickPixel_setColorValueQuantum_basic.phptnu�[���--TEST--
Test ImagickPixel, setColorValueQuantum
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php


function setColorValueQuantum() {
    $image = new \Imagick();

    $quantumRange = $image->getQuantumRange();

    $draw = new \ImagickDraw();
    $color = new \ImagickPixel('blue');
    $color->setcolorValueQuantum(\Imagick::COLOR_RED, (int)(128 * $quantumRange['quantumRangeLong'] / 256));

    $draw->setstrokewidth(1.0);
    $draw->setStrokeColor($color);
    $draw->setFillColor($color);
    $draw->rectangle(200, 200, 300, 300);

    $image->newImage(500, 500, "SteelBlue2");
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setColorValueQuantum() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKʼn	[E0����&189_ImagickDraw_setClipPath_basic.phptnu�[���--TEST--
Test ImagickDraw, setClipPath
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setClipPath($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $clipPathName = 'testClipPath';

    $draw->pushClipPath($clipPathName);
    $draw->rectangle(0, 0, 250, 250);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);
    $draw->rectangle(100, 100, 400, 400);
    
    $storedPathName = $draw->getClipPath();
    
    if (strcmp($storedPathName, $clipPathName) != 0) {
        echo "Error retrieving clipPath: $storedPathName != $clipPathName\n";
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setClipPath($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��'��$108_Imagick_resampleImage_basic.phptnu�[���--TEST--
Test Imagick, resampleImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function resampleImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $imagick->resampleImage(200, 200, \Imagick::FILTER_LANCZOS, 1);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

resampleImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�<���)248_ImagickPixelIterator_clear_basic.phptnu�[���--TEST--
Test ImagickPixelIterator, clear
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function clear() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $imageIterator = $imagick->getPixelRegionIterator(100, 100, 250, 200);

    /* Loop trough pixel rows */
    foreach ($imageIterator as $pixels) { 
        /** @var $pixel \ImagickPixel */
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) { 
            if ($column % 2) {
                /* Paint every second pixel black*/
                $pixel->setColor("rgba(0, 0, 0, 0)"); 
            }
        }
        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    $imageIterator->clear();

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

clear() ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[����%153_Imagick_statisticImage_basic.phptnu�[���--TEST--
Test Imagick, statisticImage
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); 

checkClassMethods('Imagick', array('statisticImage'));

?>
--FILE--
<?php

$statisticType = 1;
$w20 = 5;
$h20 = 5;
$channel = Imagick::CHANNEL_DEFAULT;

function statisticImage($statisticType, $w20, $h20, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $imagick->statisticImage(
        $statisticType,
        $w20,
        $h20,
        $channel
    );

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

statisticImage($statisticType, $w20, $h20, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[�ū��017-clear-destroy.phptnu�[���--TEST--
Clear and destroy aliases
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$im = new Imagick ();
$im->clear ();
$im->destroy ();

$im = new ImagickDraw ();
$im->clear ();
$im->destroy ();

$im = new ImagickPixel ();
$im->clear ();
$im->destroy ();

$magick = new Imagick ('magick:rose');

$im = new ImagickPixelIterator ($magick);
$im->clear ();
$im->destroy ();

echo 'success';

?>
--EXPECT--
successPKʼn	[�lc�CC271_imagick_constants.phptnu�[���--TEST--
Imagick::readImage test
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$reflClass = new ReflectionClass('Imagick');
$constants = $reflClass->getConstants();

$output = '';

foreach ($constants as $key => $value) {
	$output .= "$key: $value \n";
}
echo "Ok";

?>
--EXPECTF--
OkPKʼn	[��o 166_Imagick_waveImage_basic.phptnu�[���--TEST--
Test Imagick, waveImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$amplitude = 5;
$length = 20;

function waveImage($amplitude, $length) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->waveImage($amplitude, $length);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

waveImage($amplitude, $length) ;
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��0ww$283_ini_settings_set_falsy_zero.phptnu�[���--TEST--
OpenMP segfault hacks

--INI--
imagick.shutdown_sleep_count=0
imagick.set_single_thread=0
--SKIPIF--
<?php 


require_once(dirname(__FILE__) . '/skipif.inc');
 
?>
--FILE--
<?php


$sleepCount = ini_get('imagick.shutdown_sleep_count');
$setSingleThread = ini_get('imagick.set_single_thread');

if ($sleepCount != 0) {
    echo "imagick.shutdown_sleep_count is not set to 10 but instead " . var_export($sleepCount, true) ."\n";
}

if ($setSingleThread != 0) {
    echo "imagick.set_single_thread setting is not false but instead " . var_export($sleepCount, true) ."\n";
}


echo "Complete".PHP_EOL;
?>
--EXPECTF--
Complete
PKʼn	[</QB$032_Imagick_addNoiseImage_basic.phptnu�[���--TEST--
Test Imagick, addNoiseImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x702;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$noiseType = Imagick::NOISE_IMPULSE;
$channel = Imagick::CHANNEL_DEFAULT;

function addNoiseImage($noiseType, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->addNoiseImage($noiseType, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
    echo "addNoiseImage\n";
}

function addNoiseWithAttenuate($noiseType, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->addNoiseImageWithAttenuate($noiseType, 1.4, $channel);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
    echo "addNoiseWithAttenuate\n";
}

addNoiseImage($noiseType, $channel);
addNoiseWithAttenuate($noiseType, $channel);
echo "Ok";
?>
--EXPECTF--
addNoiseImage
addNoiseWithAttenuate
OkPKʼn	[˷I�� 228_ImagickDraw_skewX_basic.phptnu�[���--TEST--
Test ImagickDraw, skewX
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';
$fillModifiedColor = 'LightCoral';
$startX = 50;
$startY = 50;
$endX = 400;
$endY = 400;
$skew = 10;

function skewX($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor, 
               $startX, $startY, $endX, $endY, $skew) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(2);
    $draw->setFillColor($fillColor);
    $draw->rectangle($startX, $startY, $endX, $endY);
    $draw->setFillColor($fillModifiedColor);
    $draw->skewX($skew);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    $bytes = $image->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

skewX($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
    $startX, $startY, $endX, $endY, $skew);
echo "Ok";
?>
--EXPECTF--
OkPKʼn	[��SZZ'092_Imagick_mergeImageLayers_basic.phptnu�[���--TEST--
Test Imagick, mergeImageLayers
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$layerMethodType = 13;

function mergeImageLayers($layerMethodType) {

    $imagick = new \Imagick();
    $nextImage = null;
    $imageNames = array(
        "magick:NETSCAPE",
        "magick:logo",
        "magick:GRANITE",
    );

    foreach ($imageNames as $imageName) {        
        $nextImage = new \Imagick();
        $nextImage->newPseudoImage(640, 480, $imageName);
        $imagick->addImage($nextImage);
    }

    $imagick->resetIterator();
    
    $imagick->setImageFormat('png');

    $result = $imagick->mergeImageLayers($layerMethodType);
    $bytes = $result->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

mergeImageLayers($layerMethodType);
echo "Ok";
?>
--EXPECTF--
Ok
PKƉ	[]X�$040_Imagick_charcoalImage_basic.phptnu�[���--TEST--
Test Imagick, charcoalImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$radius = 5;
$sigma = 1;

function charcoalImage($radius, $sigma) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->charcoalImage($radius, $sigma);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

charcoalImage($radius, $sigma) ;
echo "Ok";
?>
--EXPECTF--
OkPKƉ	[��2�mm010_importimagepixels.phptnu�[���--TEST--
Test importimagepixels
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); 

if (!method_exists("imagick", "importimagepixels")) {
	die("skip imagick::importImagePixels not available");
}

?>
--FILE--
<?php

/* Generate array of pixels. 2000 pixels per color stripe */
$count = 2000 * 3;

$pixels = 
   array_merge(array_pad(array(), $count, 0),
               array_pad(array(), $count, 255), 
               array_pad(array(), $count, 0),
               array_pad(array(), $count, 255),
               array_pad(array(), $count, 0));

/* Width and height. The area is amount of pixels divided
   by three. Three comes from 'RGB', three values per pixel */
$width = $height = 100;

/* Create empty image */
$im = new Imagick();
$im->newImage($width, $height, 'gray');

/* Import the pixels into image.
   width * height * strlen("RGB") must match count($pixels) */
$im->importImagePixels(0, 0, $width, $height, "RGB", Imagick::PIXEL_CHAR, $pixels);

var_dump($width, $height);
var_dump($im->getImageGeometry());

?>
--EXPECTF--
int(100)
int(100)
array(2) {
  ["width"]=>
  int(100)
  ["height"]=>
  int(100)
}PKƉ	[���z��)204_ImagickDraw_setFillOpacity_basic.phptnu�[���--TEST--
Test ImagickDraw, setFillOpacity
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';

function setFillOpacity($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $draw->rectangle(100, 200, 200, 300);

    $draw->setFillOpacity(0.4);
    $draw->rectangle(300, 200, 400, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setFillOpacity($strokeColor, $fillColor, $backgroundColor) ;
echo "Ok";
?>
--EXPECTF--
OkPKƉ	[�(��@@)288_imagick_prevent_zero_size_images.phptnu�[���--TEST--
Prevent zero dimension images and check exception
--SKIPIF--
<?php 

require_once(dirname(__FILE__) . '/skipif.inc');


?>
--FILE--
<?php

$im = new Imagick();

$im->newPseudoImage(0, 100, "magick:logo");
$im->newPseudoImage(100, 0, "magick:logo");

ini_set("imagick.allow_zero_dimension_images", 1);
$im->newPseudoImage(0, 100, "magick:logo");
echo "Well done, you have a zero dimension image. Now what?\n";

echo "Ok";

?>
--EXPECTF--
Deprecated: Creating images with zero columns is deprecated. If you think you need to do this, please open an issue at https://phpimagick.com/issues in %s on line %d

Deprecated: Creating images with zero rows is deprecated. If you think you need to do this, please open an issue at https://phpimagick.com/issues in %s on line %d
Well done, you have a zero dimension image. Now what?
OkPKƉ	[�W,�v	v	&229_Tutorial_fxAnalyzeImage_case1.phptnu�[���--TEST--
Test Tutorial, fxAnalyzeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

ini_set('memory_limit','512M');

// Analyzes a one pixel wide image to make it easy to see what the
// gradient is doing
function fxAnalyzeImage(\Imagick $imagick) {
    
    $graphWidth = $imagick->getImageWidth();
    $sampleHeight = 20;
    $graphHeight = 128;
    $border = 2;

    $imageIterator = new \ImagickPixelIterator($imagick);

    $reds = array();

    foreach ($imageIterator as $pixels) { /* Loop trough pixel rows */
        foreach ($pixels as $pixel) { /* Loop through the pixels in the row (columns) */
            /** @var $pixel \ImagickPixel */
            $color = $pixel->getColor();
            $reds[] = $color['r'];
        }
        $imageIterator->syncIterator(); /* Sync the iterator, this is important to do on each iteration */
    }

    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel('red');
    $fillColor = new \ImagickPixel('none');
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(72);
    $draw->setStrokeAntiAlias(true);

    $x = 0;
    $points = array();
    
    foreach ($reds as $red) {
        $pos = $graphHeight - ($red * $graphHeight / 256);
        $points[] = array('x' => $x, 'y' => $pos);
        $x += 1;
    }

    $draw->polyline($points);

    $plot = new \Imagick();
    $plot->newImage($graphWidth, $graphHeight, 'white');
    $plot->drawImage($draw);

    $outputImage = new \Imagick();
    $outputImage->newImage($graphWidth, $graphHeight + $sampleHeight, 'white');
    $outputImage->compositeimage($plot, \Imagick::COMPOSITE_ATOP, 0, 0);

    $imagick->resizeimage($imagick->getImageWidth(), $sampleHeight, \Imagick::FILTER_LANCZOS, 1);

    $outputImage->compositeimage($imagick, \Imagick::COMPOSITE_ATOP, 0, $graphHeight);
    $outputImage->borderimage('black', $border, $border);

    $outputImage->setImageFormat("png");
    $bytes = $outputImage;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}


$arguments = array(5, 1, 0.5);

$imagick = new \Imagick();
$imagick->newPseudoImage(200, 200, 'gradient:black-white');
$imagick->functionImage(\Imagick::FUNCTION_POLYNOMIAL, $arguments);
$imagick->setimageformat('png');

fxAnalyzeImage($imagick);

echo "Ok";
?>
--EXPECTF--
OkPKƉ	[��j��042_Imagick_clutImage_im7.phptnu�[���--TEST--
Test Imagick, clutImageWithInterpolate
--SKIPIF--
<?php

require_once(dirname(__FILE__) . '/skipif.inc');

checkClassMethods('Imagick', array('clutImageWithInterpolate'));

?>
--FILE--
<?php

$draw = new \ImagickDraw();
$draw->setStrokeOpacity(0);
$draw->setFillColor('black');
$points = [
	['x' => 40 * 3, 'y' => 10 * 5],
	['x' => 20 * 3, 'y' => 20 * 5],
	['x' => 70 * 3, 'y' => 50 * 5],
	['x' => 80 * 3, 'y' => 15 * 5],
];
$draw->polygon($points);
$imagick = new \Imagick();

$imagick->setColorspace(\Imagick::COLORSPACE_GRAY);

$imagick->newPseudoImage(
	300, 300,
	"xc:white"
);


$imagick->drawImage($draw);
$imagick->blurImage(0, 10);

$draw = new \ImagickDraw();
$draw->setStrokeOpacity(1);
$draw->setFillColor('red');
$draw->point(0, 2);
$draw->setFillColor('yellow');
$draw->rectangle(0, 0, 1, 1);
$gradient = new Imagick();
$gradient->newPseudoImage(1, 5, 'xc:black');
$gradient->drawImage($draw);


$imagick->setImageFormat('png');
$imagick->clutImageWithInterpolate($gradient, Imagick::INTERPOLATE_BILINEAR);

$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image.";}

// $imagick->writeImage(__DIR__ . "/feels_bad_man.png");

echo "Ok";
?>
--EXPECTF--
OkPKƉ	[�xb
""github_174.phptnu�[���--TEST--
Imagick::resizeImage prevent 0 width/height images
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
$i = new Imagick;
$i->newPseudoImage(1, 1000, "xc:red");
$i->resizeImage(0, 250, 0, 1);
echo $i->getImageWidth(); // should be 1
?>
--EXPECTF--
1
PKƉ	[���Ӈ�"310_Imagick_whiteBalanceImage.phptnu�[���--TEST--
Test Imagick, whiteBalanceImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('whiteBalanceImage'));
?>
--FILE--
<?php

function whiteBalanceImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');
    $imagick->whiteBalanceImage();
    $imagick->getImageBlob();
}

whiteBalanceImage() ;
echo "Ok";
?>
--EXPECTF--
Ok
PKƉ	[c�9��024-ispixelsimilar.phptnu�[���--TEST--
Test ImagickPixel::isPixelSimilar
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc');

--FILE--
<?php

$root3 = 1.732050807568877;

$tests = array(
	array ('rgb(245, 0, 0)',     'rgb(255, 0, 0)',        9 / $root3, false,),
	array ('rgb(245, 0, 0)',     'rgb(255, 0, 0)',       10 / $root3, true,),
	array ('rgb(0, 0, 0)',       'rgb(7, 7, 0)',          9 / $root3, false,),
	array ('rgb(0, 0, 0)',       'rgb(7, 7, 0)',         10 / $root3, true,),
	array ('rgba(0, 0, 0, 1)',   'rgba(7, 7, 0, 1)',      9 / $root3, false,),
	array ('rgba(0, 0, 0, 1)',   'rgba(7, 7, 0, 1)',     10 / $root3, true,),
	array ('rgb(128, 128, 128)', 'rgb(128, 128, 120)',    7 / $root3, false,),
	array ('rgb(128, 128, 128)', 'rgb(128, 128, 120)',    8 / $root3, true,),

	array ('rgb(0, 0, 0)',       'rgb(255, 255, 255)',  254.9,        false,),
	array ('rgb(0, 0, 0)',       'rgb(255, 255, 255)',    255,        true,),
	array ('rgb(255, 0, 0)',     'rgb(0, 255, 255)',    254.9,        false,),
	array ('rgb(255, 0, 0)',     'rgb(0, 255, 255)',      255,        true,),
	array ('black',              'rgba(0, 0, 0)',         0.0,        true),
	array ('black',              'rgba(10, 0, 0, 1.0)',  10.0 / $root3, true),
);

try {
	foreach ($tests as $testInfo) {
		$color1 = $testInfo[0];
		$color2 = $testInfo[1];
		$distance = $testInfo[2];
		$expectation = $testInfo[3];
		$testDistance = ($distance / 255.0);

		$color1Pixel = new ImagickPixel($color1);
		$color2Pixel = new ImagickPixel($color2);

		$isSimilar = $color1Pixel->isPixelSimilarQuantum($color2Pixel, $testDistance * \Imagick::getquantum());
		if ($isSimilar !== $expectation) {
			echo "isSimilar failed. Color [$color1] compared to color [$color2] distance $testDistance doesn't meet expected result [$expectation].". PHP_EOL;
		}

		$isPixelSimilar = $color1Pixel->isPixelSimilar($color2Pixel, $testDistance);
		if ($isPixelSimilar !== $expectation) {
			echo "isPixelSimilar failed. Color [$color1] compared to color [$color2] distance $testDistance doesn't meet expected result [$expectation].". PHP_EOL;
		}
	}
	echo "success";
} catch (\Exception $e) {
	echo "Exception caught in ImagickPixel::isPixelSimilar test: ".$e->getMessage() . PHP_EOL;
}

?>
--EXPECT--
successPKƉ	[��˽nn!105_Imagick_raiseImage_basic.phptnu�[���--TEST--
Test Imagick, raiseImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$width = 15;
$height = 15;
$x = 10;
$y = 10;
$raise = 1;

function raiseImage($width, $height, $x, $y, $raise) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    //x and y do nothing?
    $imagick->raiseImage($width, $height, $x, $y, $raise);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

raiseImage($width, $height, $x, $y, $raise) ;
echo "Ok";
?>
--EXPECTF--
OkPKƉ	[dv9O@@#301_Imagick_bilateralBlurImage.phptnu�[���--TEST--
Test Imagick, bilateralBlurImage
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('Imagick', array('bilateralBlurImage'));
?>
--FILE--
<?php


function bilateralBlurImage() {
    $imagick = new \Imagick(__DIR__ . '/Biter_500.jpg');

    $imagick->bilateralBlurImage(
		5,
		1,
		2,
		2
	);

    $imagick->writeImage(__DIR__ . '/bilateralBlurImage_output_image.png');
//    $imagick->getImageBlob();
}

bilateralBlurImage() ;
echo "Ok";
?>
--CLEAN--
<?php
@unlink(__DIR__ . '/bilateralBlurImage_output_image.png');
?>
--EXPECTF--
Ok
PKƉ	[�.=���#090_Imagick_magnifyImage_basic.phptnu�[���--TEST--
Test Imagick, magnifyImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function magnifyImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->magnifyImage();
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

magnifyImage() ;
echo "Ok";
?>
--EXPECTF--
OkPKƉ	[ahu���+264_ImagickDraw_getTextDirection_basic.phptnu�[���--TEST--
Test ImagickDraw, getTextDirection
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('ImagickDraw', array('getTextDirection', 'setTextDirection'));
?>
--FILE--
<?php

require_once(dirname(__FILE__) . '/functions.inc');

$backgroundColor = 'rgb(225, 225, 225)';
$strokeColor = 'rgb(0, 0, 0)';
$fillColor = 'DodgerBlue2';



$draw = new \ImagickDraw();
setFontForImagickDraw($draw);

$draw->setStrokeColor($strokeColor);
$draw->setFillColor($fillColor);

$draw->setStrokeWidth(2);
$draw->setFontSize(56);

$directions = array(
	\Imagick::DIRECTION_LEFT_TO_RIGHT,
	\Imagick::DIRECTION_RIGHT_TO_LEFT,
	\Imagick::DIRECTION_LEFT_TO_RIGHT,
);

$i = 0;
foreach ($directions as $directionToSet) {
	$draw->setTextDirection($directionToSet);
	$directionReturned = $draw->getTextDirection();

	if ($directionReturned != $directionToSet) {
		echo "Direction error for $i \n";
	}

	$position = 36;
	if ($directionToSet == \Imagick::DIRECTION_RIGHT_TO_LEFT) {
		$position = 500 - 36;
	}

	$draw->annotation($position, (72 * $i) + 64, "Lorem Ipsum!");

	$i++;
}

$imagick = new \Imagick();
$imagick->newImage(500, 500, $backgroundColor);
$imagick->setImageFormat("png");
$imagick->drawImage($draw);

$bytes = $imagick->getImageBlob();
if (strlen($bytes) <= 0) { echo "Failed to generate image.";}
 
$imagick->writeImage(__DIR__ . '/directionTest.png');

echo "Ok";
?>
--CLEAN--
<?php
$f = __DIR__ . '/directionTest.png';
if (file_exists($f)) {
    unlink($f);
}
?>
--EXPECTF--
Ok
PKƉ	[0Iy���bug59378_windows.phptnu�[���--TEST--
Test PHP bug #59378 writing to php://temp is incomplete
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$imagick = new Imagick();
$imagick->newPseudoImage(640, 480, "LOGO:");
$imagick->setFormat("png");

// Although the bug was about php://memory, that isn'--TEST--
// available to use as a filehandle on Windows, so may as well
// just test php://temp instead.
$fp = fopen("php://temp", 'r+');
$imagick->writeImageFile($fp);
rewind($fp);
$memoryBlob = stream_get_contents($fp);
fclose($fp);

//This test depends on getImageBlob working correctly.
$imageBlob = $imagick->getImageBlob();

//Read the images from the data blobs.
$imageReopened = new Imagick();
$imageReopened->readImageBlob($imageBlob);
$memoryReopened = new Imagick();
$memoryReopened->readImageBlob($memoryBlob);

//Compare to see if they are identical.
$result = $imageReopened->compareImages($memoryReopened, \Imagick::METRIC_MEANABSOLUTEERROR);

if ($result[1] == 0) {
    echo "Reopened images are identical.";
}
else {
    echo "Error, reopened images have changed.";
    var_dump($result);
}

?>
--EXPECTF--
Reopened images are identical.
PKƉ	[ƀ���%095_Imagick_normalizeImage_basic.phptnu�[���--TEST--
Test Imagick, normalizeImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$channel = Imagick::CHANNEL_DEFAULT;

function normalizeImage($channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $original = clone $imagick;
    $original->cropimage($original->getImageWidth() / 2, $original->getImageHeight(), 0, 0);
    $imagick->normalizeImage($channel);
    $imagick->compositeimage($original, \Imagick::COMPOSITE_ATOP, 0, 0);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

normalizeImage($channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKƉ	[��O���(053_Imagick_distortImage_RotatedArc.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $degrees = array( 180, 45, 100, 20 );
        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_BACKGROUND );
        $imagick->distortImage( \Imagick::DISTORTION_ARC, $degrees, TRUE );
        header( "Content-Type: image/jpeg" );
    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKƉ	[���(275_ImagickPixel_unitializedObjects.phptnu�[���--TEST--
Testing ImagickPixel with unitialized pixel_wand
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
requirePHP("5.6");
?>
--FILE--
<?php

interface MockInterface {}

class ImagickPixelMock extends \ImagickPixel implements MockInterface
{
    protected $foo1;
    protected $foo2;
    protected $foo3;
    protected $foo4;
}

$reflectionClass = new ReflectionClass('ImagickPixelMock');
$instance = $reflectionClass->newInstanceWithoutConstructor();
$methods = $reflectionClass->getMethods();

$methodsAndParams = array(
    'clear' => [],
    'destroy' => [],
    'getColor' => [],
    'getColorAsString' => [],
    'getColorCount' => [],
    'getColorQuantum' => [],
    'getColorValue' => [Imagick::COLOR_BLUE],
    'getColorValueQuantum' => [Imagick::COLOR_RED],
    'getHSL' => [],
    'getIndex' => [],
    'isPixelSimilar' =>  ['red', 0.1],
    'isPixelSimilarQuantum' =>  ['red', 100],
    'isSimilar' =>  ['red', 0.1],
    'setColor' => ['red'],
    'setcolorcount' => [4],
    'setColorValue' => [Imagick::COLOR_BLUE, 0.5],
    'setColorValueQuantum' => [Imagick::COLOR_BLUE, 1],
    'setHSL' => [0.5, 0.5, 0.5],
    'setIndex' => [5],
    'setcolorfrompixel' => [$instance],
);

$testedMethods = array();
foreach ($methodsAndParams as $methodName => $params) {

	if ($reflectionClass->hasMethod($methodName) == false) {
		continue;
	}

    try {
        call_user_func_array([$instance, $methodName], $params);
        echo "failed to throw an exception.\n";
    }
    catch (ImagickPixelException $ipe) {
        if (strpos($ipe->getMessage(), "Can not process empty ImagickPixel object") === false) {
            echo "Incorrect message: " . $ipe->getMessage() . "\n";
        }
    }

    $testedMethods[] = strtolower($methodName);
}


// pretend we tested these.
$testedMethods[] = '__construct';
$testedMethods[] = 'clone';

foreach ($methods as $method) {
	$allMethods[] = strtolower($method->getName());
}

// Have we tested all but __construct
$missedMethods = array_diff($allMethods, $testedMethods);

if (count($missedMethods) !== 0) {
	echo "We didn't test all of the ImagickPixel methods\n";
	var_dump($missedMethods);
}

echo "Ok"

?>
--EXPECTF--

OkPKƉ	[Uc�^��'083_Imagick_getPixelIterator_basic.phptnu�[���--TEST--
Test Imagick, getPixelIterator
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php


function getPixelIterator() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imageIterator = $imagick->getPixelIterator();

    /** @noinspection PhpUnusedLocalVariableInspection */
    foreach ($imageIterator as $row => $pixels) { /* Loop trough pixel rows */
        foreach ($pixels as $column => $pixel) { /* Loop through the pixels in the row (columns) */
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {
                $pixel->setColor("rgba(0, 0, 0, 0)"); /* Paint every second pixel black*/
            }
        }
        $imageIterator->syncIterator(); /* Sync the iterator, this is important to do on each iteration */
    }

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

getPixelIterator() ;
echo "Ok";
?>
--EXPECTF--
OkPKƉ	[��@��+104_Imagick_randomThresholdImage_basic.phptnu�[���--TEST--
Test Imagick, randomThresholdImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$lowThreshold = 0.1;
$highThreshold = 0.9;
$channel = Imagick::CHANNEL_DEFAULT;

function randomThresholdimage($lowThreshold, $highThreshold, $channel) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $imagick->randomThresholdimage(
        $lowThreshold * \Imagick::getQuantum(),
        $highThreshold * \Imagick::getQuantum(),
        $channel
    );
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

randomThresholdimage($lowThreshold, $highThreshold, $channel) ;
echo "Ok";
?>
--EXPECTF--
OkPKƉ	[����025-function-image.phptnu�[���--TEST--
Test functionimage
--SKIPIF--
<?php
$imageMagickBelowVersion = 0x700;
require_once(dirname(__FILE__) . '/skipif.inc');

?>
--FILE--
<?php
$im = new Imagick ('magick:rose');
$im->convolveimage (array (1, 'a', 1));

echo "OK" . PHP_EOL;
?>
--EXPECT--
OKPKƉ	[$�-ZZ'123_Imagick_setImageClipMask_basic.phptnu�[���--TEST--
Test Imagick, setImageClipMask
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
checkClassMethods('imagick', array('setImageClipMask'));

?>
--FILE--
<?php


function setImageClipMask() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $width = $imagick->getImageWidth();
    $height = $imagick->getImageHeight();

    $clipMask = new \Imagick();
    $clipMask->newPseudoImage(
        $width,
        $height,
        "canvas:transparent"
    );

    $draw = new \ImagickDraw();
    $draw->setFillColor('white');
    $draw->circle(
        $width / 2,
        $height / 2,
        ($width / 2) + ($width / 4),
        $height / 2
    );
    $clipMask->drawImage($draw);
    $imagick->setImageClipMask($clipMask);

    $imagick->negateImage(false);
    $imagick->setFormat("png");

    $bytes = $imagick->getImagesBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
    
}

setImageClipMask() ;
echo "Ok";
?>
--EXPECTF--
Deprecated: %s Imagick::setImageClipMask() is deprecated in %s
Ok
PKƉ	[�ϕ���&237_Tutorial_deconstructGif_basic.phptnu�[���--TEST--
Test Tutorial, deconstructGif
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$deconstruct = 1;

function makeSimpleGif($deconstruct) {
    $aniGif = new \Imagick();
    $aniGif->setFormat("gif");

    $circleRadius = 20;
    $imageFrames = 6;
    $imageSize = 200;

    $background = new \Imagick();
    $background->newpseudoimage($imageSize, $imageSize, "canvas:gray");

    $blackWhite = new \Imagick();
    $blackWhite->newpseudoimage($imageSize, $imageSize, "gradient:black-white");

    $backgroundPalette = clone $background;
    $backgroundPalette->quantizeImage(240, \Imagick::COLORSPACE_RGB, 8, false, false);

    $blackWhitePalette = clone $blackWhite;
    $blackWhitePalette->quantizeImage(16, \Imagick::COLORSPACE_RGB, 8, false, false);

    $backgroundPalette->addimage($blackWhitePalette);

    for($count=0 ; $count<$imageFrames ; $count++) {
        echo "Frame: ".$count."\n";
        $drawing = new \ImagickDraw();
        $drawing->setFillColor('white');
        $drawing->setStrokeColor('rgba(64, 64, 64, 0.8)');
        $strokeWidth = 4;
        $drawing->setStrokeWidth($strokeWidth);
        
        $distanceToMove = $imageSize + (($circleRadius + $strokeWidth) * 2);
        $offset = ($distanceToMove * $count / ($imageFrames -1)) - ($circleRadius + $strokeWidth);
        $drawing->translate($offset, ($imageSize / 2) + ($imageSize / 3 * cos(20 * $count / $imageFrames)));
        $drawing->circle(0, 0, $circleRadius, 0);

        $frame = clone $background;
        $frame->drawimage($drawing);
        $frame->clutimage($backgroundPalette);
        $frame->setImageDelay(10);
        $aniGif->addImage($frame);
    }

    if ($deconstruct == true) {
        $aniGif = $aniGif->deconstructImages();
    }

    $bytes = $aniGif->getImagesBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

makeSimpleGif($deconstruct) ;
echo "Ok";
?>
--EXPECTF--
Frame: 0
Frame: 1
Frame: 2
Frame: 3
Frame: 4
Frame: 5
OkPKƉ	[{ܴo--#059_Imagick_distortImage_Polar.phptnu�[���--TEST--
Test Imagick, distortImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$distortion = 1;

        //v6.4.2-6
        $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
        $points = array(
            0
        );

        //Only do partial arc
//        $points = array(
//            60,20, 0,0, -60,60
//        );

//        HorizontalTile
        
        $imagick->setimagebackgroundcolor("#fad888");
        $imagick->setImageVirtualPixelMethod( \Imagick::VIRTUALPIXELMETHOD_HORIZONTALTILE);
        $imagick->distortImage(\Imagick::DISTORTION_POLAR, $points, TRUE);

    $bytes = $imagick;
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 

echo "Ok";
?>
--EXPECTF--
OkPKƉ	[�!e�gg#121_Imagick_setImageBias_basic.phptnu�[���--TEST--
Test Imagick, setImageBias
--SKIPIF--
<?php 
    require_once(dirname(__FILE__) . '/skipif.inc'); 
    checkClassMethods('Imagick', array('setImageBias'));
?>
--FILE--
<?php

$bias = 0.5;

//requires ImageMagick version 6.9.0-1 to have an effect on convolveImage
function setImageBias($bias) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");

    $xKernel = array(
        -0.70, 0, 0.70,
        -0.70, 0, 0.70,
        -0.70, 0, 0.70
    );

    $imagick->setImageBias($bias * \Imagick::getQuantum());
    $imagick->convolveImage($xKernel, \Imagick::CHANNEL_ALL);

    $imagick->setImageFormat('png');

    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

setImageBias($bias) ;
echo "Ok";
?>
--EXPECTF--
Deprecated: %s Imagick::setImageBias() is deprecated in %s
Ok
PKƉ	[�ʍ66*035_Imagick_blackThresholdImage_basic.phptnu�[���--TEST--
Test Imagick, blackThresholdImage
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x675;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$thresholdColor = 'rgb(127, 127, 127)';

function blackThresholdImage($thresholdColor) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $imagick->blackthresholdimage($thresholdColor);
    $bytes = $imagick->getImageBlob();
    if (strlen($bytes) <= 0) { echo "Failed to generate image.";} 
}

blackThresholdImage($thresholdColor) ;
echo "Ok";
?>
--EXPECTF--
OkPK�	[��1BB010-compression.phptnu�[���--TEST--
leveldb - compression
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb-compression.test-db';

$db = new LevelDB($leveldb_path, array('compression' => 33));
unset($db);

$db = new LevelDB($leveldb_path, array('compression' => LEVELDB_SNAPPY_COMPRESSION));
$db->set("key", "value");

?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-compression.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
Warning: LevelDB::__construct(): Unsupported compression type in %s on line %s
==DONE==
PK�	[��
`##019-null-comparator.phptnu�[���--TEST--
leveldb - NULL comparator should not throw exception
--DESCRIPTION--
NULL is the default value of comparator open options
open with null shouldn't throw exception
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/null-comparator.test-db';

$db = new LevelDB($leveldb_path, array('comparator' => NULL));

?>
Should no exception
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/null-comparator.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECT--
Should no exception
==DONE==
PK�	[�ms���018-snapshot.phptnu�[���--TEST--
leveldb - snapshot
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb-snapshot.test-db';
@unlink($leveldb_path);

$db = new LevelDB($leveldb_path);
$db->put("key1", "value1");
$db->put("key2", "value2");

$snapshot = new LevelDBSnapshot($db);

$db->put("key3", "value3");


try {
	$it = new LevelDBIterator($db, array('snapshot' => ''));
} catch(LevelDBException $e) {
	var_dump($e->getMessage());
}

$it = $db->getIterator(array('snapshot' => $snapshot));
foreach($it as $k => $v) {
	echo "$k => $v\n";
}

var_dump($db->get("key3", array('snapshot' => $snapshot)));
var_dump($db->get("key3"));

echo "*** Release snapshot x1 ***\n";
$snapshot->release();
echo "*** Release snapshot x2 ***\n";
$snapshot->release();

echo "*** Try to use released snapshot ***\n";
try {
	$it = new LevelDBIterator($db, array('snapshot' => $snapshot));
} catch(LevelDBException $e) {
	var_dump($e->getMessage());
}
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-snapshot.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
string(69) "Invalid snapshot parameter, it must be an instance of LevelDBSnapshot"
key1 => value1
key2 => value2
bool(false)
string(6) "value3"
*** Release snapshot x1 ***
*** Release snapshot x2 ***
*** Try to use released snapshot ***
string(48) "Invalid snapshot parameter, it has been released"
==DONE==
PK�	[���[[011-getApproximateSizes.phptnu�[���--TEST--
leveldb - getApproximateSizes
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb-getApproximateSizes.test-db';

$db = new LevelDB($leveldb_path);
for($i=0; $i < 99999; ++$i) {
	$db->set("b{$i}", "value");
}

unset($db);

$db = new LevelDB($leveldb_path);

var_dump($db->getApproximateSizes(array("A", "B", 3), array("b0", "Z")));
var_dump($db->getApproximateSizes(array(), array()));
var_dump($db->getApproximateSizes(array("a", "b"), array("c", "Z")));
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-getApproximateSizes.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
Warning: LevelDB::getApproximateSizes(): The num of start keys and limit keys didn't match in %s on line %d
bool(false)
array(0) {
}
array(2) {
  [0]=>
  int(%d)
  [1]=>
  int(%d)
}
==DONE==
PK�	[�$��008-options.phptnu�[���--TEST--
leveldb - options open options
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_options.test-db';

try {
	$db = new LevelDB($leveldb_path, array("create_if_missing" => false));
} catch(LevelDBException $e) {
	echo $e->getMessage() . "\n";
}

try {
	$db = new LevelDB($leveldb_path, array("max_open_files" => 10));
	$db->set("key", "value");
	var_dump($db->get("key"));
} catch(LevelDBException $e) {
	echo $e->getMessage() . "\n";
}

unset($db);
try {
	$db = new LevelDB($leveldb_path, array("error_if_exists" => true));
} catch(LevelDBException $e) {
	echo $e->getMessage() . "\n";
}
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_options.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
Invalid argument: %s: does not exist (create_if_missing is false)
string(5) "value"
Invalid argument: %s: exists (error_if_exists is true)
==DONE==
PK�	[�A]*��003-openbasedir.phptnu�[���--TEST--
leveldb - open base dir
--INI--
open_basedir=.
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$cwd = getcwd();

$path = $cwd . '/../leveldb_openbasedir.test-db';
$db = new LevelDB($path);
LevelDB::destroy($path);
LevelDB::repair($path);
?>
--EXPECTF--
Warning: LevelDB::__construct(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s) in %s on line %d

Warning: LevelDB::destroy(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s) in %s on line %d

Warning: LevelDB::repair(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s) in %s on line %d
PK�	[��O�##014-iterator-destroy.phptnu�[���--TEST--
leveldb - iterator destroy
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_iterator_destroy.test-db';
$db = new LevelDB($leveldb_path);

$db->set("key", "value");
$it = new LevelDBIterator($db);

$it->destroy();
try {
	$it->next();
} catch(LevelDBException $e) {
	echo $e->getMessage() . "\n";
}
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_iterator_destroy.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
Iterator has been destroyed
==DONE==
PK�	[�5]5015-double-iterator.phptnu�[���--TEST--
leveldb - Fixed bug segfault when double construct iterator
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_iterator_double_construct.test-db';
$db = new LevelDB($leveldb_path);

$it1 = new LevelDBIterator($db);
$it2 = new LevelDBIterator($db);

$it1->destroy();
$it2->destroy();
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_iterator_double_construct.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
==DONE==
PK�	[
2k��012-getProperty.phptnu�[���--TEST--
leveldb - getProperty
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb-getProperty.test-db';

$db = new LevelDB($leveldb_path);
for($i=0; $i < 99999; ++$i) {
	$db->set("b{$i}", "value{$i}");
}

$stats = $db->getProperty('leveldb.stats');
var_dump($stats !== false);
var_dump(strlen($stats) > 1);
var_dump($db->getProperty('leveldb.num-files-at-level1'));
var_dump($db->getProperty('leveldb.num-files-at-level2'));
var_dump($db->getProperty('leveldb.num-files-at-level3'));

$sstables = $db->getProperty('leveldb.sstables');
var_dump($sstables !== false);
var_dump(strlen($sstables) > 1);

var_dump($db->getProperty('leveldb.anything'));
var_dump($db->getProperty('anythingelse'));
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-getProperty.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
bool(true)
bool(true)
string(1) "%d"
string(1) "%d"
string(1) "%d"
bool(true)
bool(true)
bool(false)
bool(false)
==DONE==
PK�	[����009-comparator.phptnu�[���--TEST--
leveldb - custom comparator
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb-comparator.test-db';

echo "*** could not use invalid custom comparator ***\n";
try {
	$db = new LevelDB($leveldb_path, array('comparator' => 'invaid_func'));
} catch(LevelDBException $e) {
	echo $e->getMessage() . "\n";
}

echo "*** valid custom comparator ***\n";
$db = new LevelDB($leveldb_path, array('comparator' => 'custom_comparator'));

$values = array(3, 1, 4, 6, 2, 5);
foreach($values as $v) {
	$db->set($v, $v);
}

$it = new LevelDBIterator($db);
foreach($it as $v) {
	echo "$v\n";
}
unset($it);
unset($db);

echo "*** custom comparator can only open with the same comparator again ***\n";
try {
	$db = new LevelDB($leveldb_path);
} catch(LevelDBException $e) {
	echo $e->getMessage() . "\n";
}


$db = new LevelDB($leveldb_path, array('comparator' => 'custom_comparator'));
var_dump($db->get(1) == 1);
unset($db);


echo "*** custom comparator which throw exception ***\n";
$db = new LevelDB($leveldb_path, array('comparator' => array('CustomFunc', 'willException')));
try {
	$db->set("Hi", "guys");
	var_dump($db->get("Hi"));
} catch(Exception $e) {
	echo $e->getMessage() . "\n";
}

// reverse DESC
function custom_comparator($a, $b) {
   if ($a == $b) {
        return 0;
    }
    return ($a > $b) ? -1 : 1;
}

class CustomFunc {
	public static function willException($a, $b) {
		throw new Exception("Oops!");
	}
}
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-comparator.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
*** could not use invalid custom comparator ***
Invalid open option: comparator, invaid_func() is not callable
*** valid custom comparator ***
6
5
4
3
2
1
*** custom comparator can only open with the same comparator again ***
Invalid argument: php_leveldb.custom_comparator%s leveldb.BytewiseComparator
bool(true)
*** custom comparator which throw exception ***
Oops!
==DONE==
PK�	[b��77007-db-close.phptnu�[���--TEST--
leveldb - db close
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_close.test-db';
$db = new LevelDB($leveldb_path);

$db->close();


unset($it);
unset($db);

// ensure destructeur properly close the db */
LevelDB::destroy($leveldb_path);
var_dump(file_exists($leveldb_path));
?>
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_close.test-db';
if (file_exists($leveldb_path)) LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
Deprecated: %s LevelDB::close() is deprecated in %s
bool(false)
PK�	[Ҧ��::*016-different-iterators-should-differ.phptnu�[���--TEST--
leveldb - different iterators should not affect each other
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_iterator_should_not_affect_eachother.test-db';
$db = new LevelDB($leveldb_path);

foreach(array(1, 2, 3, 4) as $k) {
	$db->put($k, $k);
}

$it1 = new LevelDBIterator($db);
$it2 = new LevelDBIterator($db);

foreach($it1 as $k => $v) {
	echo "$k => $v\n";
}

$it1->rewind();
var_dump($it1->next());
var_dump($it1->next());
var_dump($it1->current());
var_dump($it2->current());

$it1->destroy();
$it2->destroy();
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_iterator_should_not_affect_eachother.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
1 => 1
2 => 2
3 => 3
4 => 4
NULL
NULL
string(1) "3"
string(1) "1"
==DONE==
PK�	[��H��013-compactRange.phptnu�[���--TEST--
leveldb - compactRange
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb-compactRange.test-db';

$db = new LevelDB($leveldb_path);
for($i=0; $i < 99999; ++$i) {
	$db->set("b{$i}", "value{$i}");
}

var_dump($db->compactRange('a', 'Z'));
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-compactRange.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
NULL
==DONE==
PK�	[<����005-iterator.phptnu�[���--TEST--
leveldb - iterate through db
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_iterator.test-db';
$db = new LevelDB($leveldb_path);

/* Add test data, and the data will be be sorted */
$data = array(
	"First", "Second", "Third", 10, "", "Last"
);

foreach($data as $item) {
	$db->set($item, $item);
}

$it = new LevelDBIterator($db);

echo "*** Loop through ***\n";
for ($it->rewind(); $it->valid(); $it->next()) {
	echo $it->key() . " => " . $it->current() . "\n";
}

echo "\n*** Reset to last ***\n";
var_dump($it->last());
var_dump($it->key() . " => " . $it->current());

echo "\n*** Last->next will be invalid ***\n";
var_dump($it->next());
var_dump($it->valid());
var_dump($it->key());

echo "\n*** Seek to give key ***\n";
$it->seek("Second");
var_dump($it->current());

echo "\n*** Seek to a non-exist key will point to nearest next key ***\n";
$it->seek("11");
var_dump($it->current());

echo "\n*** Bound checking ***\n";
$it->rewind();
$it->prev();
$it->prev();
var_dump($it->current());

$it->next();
$it->next();
$it->next();
$it->next();
$it->next();
$it->next();
$it->next();
$it->next();
$it->next();
$it->next();
var_dump($it->current());

var_dump($it->getError());
?>
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_iterator.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
*** Loop through ***
 => 
10 => 10
First => First
Last => Last
Second => Second
Third => Third

*** Reset to last ***
NULL
string(14) "Third => Third"

*** Last->next will be invalid ***
NULL
bool(false)
bool(false)

*** Seek to give key ***
string(6) "Second"

*** Seek to a non-exist key will point to nearest next key ***
string(5) "First"

*** Bound checking ***
bool(false)
bool(false)
bool(false)
PK�	[l�����017-db-getIterator.phptnu�[���--TEST--
leveldb - LevelDB::getIterator()
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_get_iterator.test-db';
$db = new LevelDB($leveldb_path);

foreach(range(1, 9) as $item) {
	$db->set($item, $item);
}

$it = $db->getIterator();

var_dump(get_class($it));

for ($it->rewind(); $it->valid(); $it->next()) {
	echo $it->key() . " => " . $it->current() . "\n";
}
?>
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_get_iterator.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
string(15) "LevelDBIterator"
1 => 1
2 => 2
3 => 3
4 => 4
5 => 5
6 => 6
7 => 7
8 => 8
9 => 9
PK�	[:v|��leveldb.incnu�[���<?php

function leveldb_empty($db) {
	$it = new LevelDBIterator($db);

	for($it->rewind(); $it->valid(); $it->next()) {
		$db->delete($it->key());
	}
}
PK�	[1.�L99002-db-management.phptnu�[���--TEST--
leveldb - db management
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$path = dirname(__FILE__) . '/leveldb-db-op.test-db';
$db = new LevelDB($path);
$db->set("key", "value");

unset($db);
var_dump(LevelDB::destroy($path));
var_dump(file_exists($path));
?>
--EXPECTF--
bool(true)
bool(false)
PK�	[����11006-iterator-foreach.phptnu�[���--TEST--
leveldb - iterate through db by foreach
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_iterator-foreach.test-db';
$db = new LevelDB($leveldb_path);

/* Add test data, and the data will be be sorted */
$data = array(
	"First", "Second", "Third", 10, "", "Last"
);

foreach($data as $item) {
	$db->set($item, $item);
}

$it = new LevelDBIterator($db);

echo "*** Loop through in foreach style ***\n";
foreach ($it as $key => $value) {
	echo "{$key} => {$value}\n";
}

echo "*** Loop through in foreach with newly-created iterator ***\n";
foreach(new LevelDBIterator($db) as $key => $value){
	echo "{$key} => {$value}\n";
}
?>
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_iterator-foreach.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
*** Loop through in foreach style ***
 => 
10 => 10
First => First
Last => Last
Second => Second
Third => Third
*** Loop through in foreach with newly-created iterator ***
 => 
10 => 10
First => First
Last => Last
Second => Second
Third => Third
PK�	[��IP��004-write-batch.phptnu�[���--TEST--
leveldb - write batch
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/leveldb_batch.test-db';
$db = new LevelDB($leveldb_path);

echo "* batch write with setting\n";
$batch = new LevelDBWriteBatch();
$batch->set('batch_foo', 'batch_bar');
$batch->put('batch_foo2', 'batch_bar2');
$batch->delete('batch_foo');

var_dump($db->write($batch));

var_dump($db->get('batch_foo2'));
var_dump($db->get('batch_foo'));

echo "* batch write with delete\n";
$batch->clear();
$batch->delete('batch_foo2');
$batch->set('batch_foo', 'batch again');

var_dump($db->write($batch));

var_dump($db->get('batch_foo2'));
var_dump($db->get('batch_foo'));
?>
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb_batch.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
* batch write with setting
bool(true)
string(10) "batch_bar2"
bool(false)
* batch write with delete
bool(true)
bool(false)
string(11) "batch again"
PK�	[v���~~001-basic.phptnu�[���--TEST--
leveldb - basic: get(), set(), put(), delete()
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = __DIR__ . '/leveldb-basic.test-db';
$db = new LevelDB($leveldb_path);

var_dump($db->set('key', 'value'));
var_dump($db->get('key'));
var_dump($db->get('non-exists-key'));
var_dump($db->put('name', 'reeze'));
var_dump($db->get('name'));
var_dump($db->delete('name'));
var_dump($db->get('name'));
?>
--CLEAN--
<?php
$leveldb_path = __DIR__ . '/leveldb-basic.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
bool(true)
string(5) "value"
bool(false)
bool(true)
string(5) "reeze"
bool(true)
bool(false)
PK�	[Q$z?��020-null-snapshot.phptnu�[���--TEST--
leveldb - NULL snapshot should not throw exception
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php

$leveldb_path = dirname(__FILE__) . '/null-snapshot.test-db';

$db = new LevelDB($leveldb_path);

var_dump($db->get("key", array('snapshot' => NULL)));

?>
Should no exception
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/null-snapshot.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECT--
bool(false)
Should no exception
==DONE==
PKI�
[�MCtXX003.phptnu�[���--TEST--
xmlrpc_encode() Simple test encode array
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$params = array(
    "one" => "red",
    "two" => "blue",
    "three" => "green"
);

$response = xmlrpc_encode($params);
echo $response;

$params = array(
    "red",
    "blue",
    "green"
);

$response = xmlrpc_encode($params);
echo $response;

$params = array(
    0 => "red",
    1 => "blue",
    3 => "green"
);

$response = xmlrpc_encode($params);
echo $response;
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <struct>
   <member>
    <name>one</name>
    <value>
     <string>red</string>
    </value>
   </member>
   <member>
    <name>two</name>
    <value>
     <string>blue</string>
    </value>
   </member>
   <member>
    <name>three</name>
    <value>
     <string>green</string>
    </value>
   </member>
  </struct>
 </value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <array>
   <data>
    <value>
     <string>red</string>
    </value>
    <value>
     <string>blue</string>
    </value>
    <value>
     <string>green</string>
    </value>
   </data>
  </array>
 </value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <struct>
   <member>
    <name>0</name>
    <value>
     <string>red</string>
    </value>
   </member>
   <member>
    <name>1</name>
    <value>
     <string>blue</string>
    </value>
   </member>
   <member>
    <name>3</name>
    <value>
     <string>green</string>
    </value>
   </member>
  </struct>
 </value>
</param>
</params>
PKI�
[4{BX
bug74975.phptnu�[���--TEST--
Bug #74975	Different serialization for classes
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php

#[AllowDynamicProperties]
class Foo {

}

class Bar {

    public $xmlrpc_type;
    public $scalar;

}

$foo = new Foo();
$foo->xmlrpc_type = 'base64';
$foo->scalar = 'foobar';

$bar = new Bar();
$bar->xmlrpc_type = 'base64';
$bar->scalar = 'foobar';

echo xmlrpc_encode([
    'foo' => $foo,
    'bar' => $bar
]);

?>
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <struct>
   <member>
    <name>foo</name>
    <value>
     <base64>Zm9vYmFy&#10;</base64>
    </value>
   </member>
   <member>
    <name>bar</name>
    <value>
     <base64>Zm9vYmFy&#10;</base64>
    </value>
   </member>
  </struct>
 </value>
</param>
</params>
PKI�
[BG��	�	
bug50285.phptnu�[���--TEST--
Bug #50285 (xmlrpc does not preserve keys in encoded indexed arrays)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

function test1($func, $params) {
    return array(1=>'One', 3=>'Three', 5=>'Five');
}

function test2($func, $params) {
    return array('One', 'Three', 'Five', 5);
}

function test3($func, $params) {
    return array('One', 3 => 'Three', 'Five' => 5, 'Six');
}

function test4($func, $params) {
    return array('One', 'Three', 'Five', 'Six' => 6);
}

$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test1', 'test1');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test1</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));

// ------------

$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test2', 'test2');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test2</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));

// ------------

$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test3', 'test3');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test3</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));

// ------------

$server = xmlrpc_server_create();
$result = xmlrpc_server_register_method($server, 'test4', 'test4');
$HTTP_RAW_POST_DATA = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>test4</methodName>
<params />
</methodCall>
EOD;
$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
var_dump(xmlrpc_decode($response));

?>
--EXPECT--
array(3) {
  [1]=>
  string(3) "One"
  [3]=>
  string(5) "Three"
  [5]=>
  string(4) "Five"
}
array(4) {
  [0]=>
  string(3) "One"
  [1]=>
  string(5) "Three"
  [2]=>
  string(4) "Five"
  [3]=>
  int(5)
}
array(4) {
  [0]=>
  string(3) "One"
  [3]=>
  string(5) "Three"
  ["Five"]=>
  int(5)
  [4]=>
  string(3) "Six"
}
array(4) {
  [0]=>
  string(3) "One"
  [1]=>
  string(5) "Three"
  [2]=>
  string(4) "Five"
  ["Six"]=>
  int(6)
}
PKI�
[}u���
bug45555.phptnu�[���--TEST--
Bug #45555 (Segfault with invalid non-string as register_introspection_callback)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$options = array ();
$request = xmlrpc_encode_request ("system.describeMethods", $options);
$server = xmlrpc_server_create ();

xmlrpc_server_register_introspection_callback($server, 1);
xmlrpc_server_register_introspection_callback($server, array('foo', 'bar'));

$options = array ('output_type' => 'xml', 'version' => 'xmlrpc');
xmlrpc_server_call_method ($server, $request, NULL, $options);

?>
--EXPECTF--
Warning: xmlrpc_server_call_method(): Invalid callback '1' passed in %s on line %d

Warning: xmlrpc_server_call_method(): Invalid callback 'foo::bar' passed in %s on line %d
PKI�
[��6@��005.phptnu�[���--TEST--
xmlrpc_encode() Simple test encode type double and String
--CREDITS--
Michel Araujo <araujo_michel@yahoo.com.br>
#PHPSP 2013-08-22
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$response = xmlrpc_encode(3.24234);
echo $response;

$response = xmlrpc_encode(-3.24234);
echo $response;

$response = xmlrpc_encode('Is string');
echo $response;
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <double>3.24234</double>
 </value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <double>-3.24234</double>
 </value>
</param>
</params>
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>Is string</string>
 </value>
</param>
</params>
PKI�
[�w8���
bug71501.phptnu�[���--TEST--
Bug #71501 (xmlrpc_encode_request ignores encoding option)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
$params = 'Lê Trung Hiếu';
echo xmlrpc_encode_request('foo', $params, ['encoding' => 'UTF-8', 'escaping' => 'markup']);
?>
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>foo</methodName>
<params>
 <param>
  <value>
   <string>Lê Trung Hiếu</string>
  </value>
 </param>
</params>
</methodCall>
PKI�
[ԟs�
bug77242.phptnu�[���--TEST--
Bug #77242 (heap out of bounds read in xmlrpc_decode())
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
var_dump(xmlrpc_decode(base64_decode("PD94bWwgdmVyc2lvbmVuY29kaW5nPSJJU084ODU5NyKkpKSkpKSkpKSkpKSkpKSkpKSkpKSk")));
?>
--EXPECT--
NULLPKI�
[��@dd
bug61097.phptnu�[���--TEST--
Bug #61097 (Memory leak in xmlrpc functions copying zvals)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$server = xmlrpc_server_create();

$method = 'abc';
xmlrpc_server_register_introspection_callback($server, $method);
xmlrpc_server_register_method($server, 'abc', $method);

echo 'Done';
?>
--EXPECT--
Done
PKI�
[z�D	��
bug18916.phptnu�[���--TEST--
Bug #18916 (xmlrpc_set_type() not working)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--INI--
date.timezone="America/Sao_Paulo"
--FILE--
<?php

$params = date("Ymd\TH:i:s", time());
xmlrpc_set_type($params, 'datetime');
echo xmlrpc_encode($params);

?>
--EXPECTF--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <dateTime.iso8601>%dT%d:%d:%d</dateTime.iso8601>
 </value>
</param>
</params>
PKI�
[��?���
bug44996.phptnu�[���--TEST--
Bug #44996 (xmlrpc_decode() ignores time zone on iso8601.datetime)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

function DecodeDatetime($datetime) {
  print "\nISO 8601 datetime $datetime\n";
  $obj = xmlrpc_decode("<?xml version=\"1.0\"?><methodResponse><params><param><value><dateTime.iso8601>$datetime</dateTime.iso8601></value></param></params></methodResponse>");
  print_r($obj);
}

DecodeDatetime("20010909T01:46:40Z");
DecodeDatetime("20010909T00:46:40-01");
DecodeDatetime("2001-09-09T08:46:40+07:00");
DecodeDatetime("2001-09-08T21:46:40-0400");

?>
--EXPECT--
ISO 8601 datetime 20010909T01:46:40Z
stdClass Object
(
    [scalar] => 20010909T01:46:40Z
    [xmlrpc_type] => datetime
    [timestamp] => 1000000000
)

ISO 8601 datetime 20010909T00:46:40-01
stdClass Object
(
    [scalar] => 20010909T00:46:40-01
    [xmlrpc_type] => datetime
    [timestamp] => 1000000000
)

ISO 8601 datetime 2001-09-09T08:46:40+07:00
stdClass Object
(
    [scalar] => 2001-09-09T08:46:40+07:00
    [xmlrpc_type] => datetime
    [timestamp] => 1000000000
)

ISO 8601 datetime 2001-09-08T21:46:40-0400
stdClass Object
(
    [scalar] => 2001-09-08T21:46:40-0400
    [xmlrpc_type] => datetime
    [timestamp] => 1000000000
)
PKI�
[6Y��
bug70526.phptnu�[���--TEST--
Bug #70526 (xmlrpc_set_type returns false on success)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
$params = date("Ymd\TH:i:s", time());
$rv = xmlrpc_set_type($params, 'datetime');
var_dump($rv);
?>
--EXPECT--
bool(true)
PKI�
[B�.��007.phptnu�[���--TEST--
xmlrpc_decode() Simple test decode type int
--CREDITS--
Michel Araujo <araujo_michel@yahoo.com.br>
#PHPSP 2013-08-22
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <int>1</int>
 </value>
</param>
</params>
XML;

$response = xmlrpc_decode($xml);
echo $response;
--EXPECT--
1
PKI�
[*��5))004.phptnu�[���--TEST--
xmlrpc_encode() Simple test encode int
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$response = xmlrpc_encode(1);
echo $response;
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <int>1</int>
 </value>
</param>
</params>
PKI�
[ڒL���006.phptnu�[���--TEST--
xmlrpc_decode() Simple test decode type string
--CREDITS--
Michel Araujo <araujo_michel@yahoo.com.br>
#PHPSP 2013-08-22
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>Is string</string>
 </value>
</param>
</params>
XML;

$response = xmlrpc_decode($xml);
echo $response;
--EXPECT--
Is string
PKI�
[��b�PP
bug77380.phptnu�[���--TEST--
Bug #77380 (Global out of bounds read in xmlrpc base64 code)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
var_dump(xmlrpc_decode(base64_decode("PGJhc2U2ND7CkzwvYmFzZTY0Pgo=")));
?>
--EXPECT--
object(stdClass)#1 (2) {
  ["scalar"]=>
  string(0) ""
  ["xmlrpc_type"]=>
  string(6) "base64"
}
PKI�
[���!��
bug42736.phptnu�[���--TEST--
Bug #42736 (xmlrpc_server_call_method() crashes)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

class SOAP_Array {
    public function get($id){
        return $this->add($id);
    }
}

$xml = xmlrpc_server_create();

$Myrequest = '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>GetProducts</methodName><params><param><value><dateTime.iso8601>20060922T14:26:19</dateTime.iso8601></value></param></params></methodCall>';

class MyClass {
    function GetProducts($dummy, $time){
        return array('faultString' => $time);
    }
}
$myclass =  new MyClass();
xmlrpc_server_register_method($xml, 'GetProducts', array($myclass, 'GetProducts'));
$response = xmlrpc_server_call_method($xml, $Myrequest, null);

var_dump($response);

echo "Done\n";
?>
--EXPECT--
string(402) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
 <param>
  <value>
   <struct>
    <member>
     <name>faultString</name>
     <value>
      <array>
       <data>
        <value>
         <dateTime.iso8601>20060922T14:26:19</dateTime.iso8601>
        </value>
       </data>
      </array>
     </value>
    </member>
   </struct>
  </value>
 </param>
</params>
</methodResponse>
"
Done
PKI�
[jr44002.phptnu�[���--TEST--
inotify
--SKIPIF--
<?php if (!extension_loaded("inotify")) print "skip: inotify extension not loaded"; ?>
--FILE--
<?php 

$ino = inotify_init();
echo 'inotify_init(): ';
var_dump($ino);

$ret = fclose($ino);
echo 'fclose($ino): ';
var_dump($ret);
echo '$ino: ';
var_dump($ino);

$ino = inotify_init();
echo 'inotify_init(): ';
var_dump($ino);

echo 'inotify_queue_len($ino): ';
var_dump(inotify_queue_len($ino));

$watch = inotify_add_watch($ino, __FILE__, IN_ATTRIB|IN_OPEN|IN_CLOSE_NOWRITE);
echo 'inotify_add_watch($ino, __FILE__, IN_ATTRIB|IN_OPEN|IN_CLOSE_NOWRITE): ';
var_dump($watch);

$watch_dir = inotify_add_watch($ino, dirname(__FILE__), IN_ATTRIB|IN_OPEN|IN_CLOSE_NOWRITE);
echo 'inotify_add_watch($ino, dirname(__FILE__), IN_ATTRIB|IN_OPEN|IN_CLOSE_NOWRITE): ';
var_dump($watch_dir);

touch(__FILE__);
$fd = fopen(__FILE__,"r");
fclose($fd);

echo 'inotify_queue_len($ino): ';
var_dump(inotify_queue_len($ino));

$event_count = 6;
$all_events = array();

while ($event_count > 0) {
	$events = inotify_read($ino);
	if ($events === false) break;
	if (is_array($events)) {
		$all_events = array_merge($all_events, $events);
		$event_count -= count($events);
	}
}

function mysort($a,$b) {
	$a = print_r($a,true);
	$b = print_r($b,true);
	if ($a > $b) return 1;
	if ($a < $b) return -1;
	return 0;
}
// events do not always arrive in the same order, 
// we need to sort them to have a reproductible output
usort($all_events,'mysort');

echo 'inotify_read($ino): ';
var_dump($all_events);

$ret = inotify_rm_watch($ino,$watch);
echo 'inofity_rm_watch($ino,$watch): ';
var_dump($ret);
echo '$watch: ';
var_dump($watch);

$ret = fclose($ino);
echo 'fclose($ino): ';
var_dump($ret);
echo '$ino: ';
var_dump($ino);
?>
--EXPECTF--
inotify_init(): resource(%d) of type (stream)
fclose($ino): bool(true)
$ino: resource(%d) of type (Unknown)
inotify_init(): resource(%d) of type (stream)
inotify_queue_len($ino): int(0)
inotify_add_watch($ino, __FILE__, IN_ATTRIB|IN_OPEN|IN_CLOSE_NOWRITE): int(%d)
inotify_add_watch($ino, dirname(__FILE__), IN_ATTRIB|IN_OPEN|IN_CLOSE_NOWRITE): int(%d)
inotify_queue_len($ino): int(%d)
inotify_read($ino): array(6) {
  [0]=>
  array(4) {
    ["wd"]=>
    int(%d)
    ["mask"]=>
    int(16)
    ["cookie"]=>
    int(0)
    ["name"]=>
    string(0) ""
  }
  [1]=>
  array(4) {
    ["wd"]=>
    int(%d)
    ["mask"]=>
    int(32)
    ["cookie"]=>
    int(0)
    ["name"]=>
    string(0) ""
  }
  [2]=>
  array(4) {
    ["wd"]=>
    int(%d)
    ["mask"]=>
    int(4)
    ["cookie"]=>
    int(0)
    ["name"]=>
    string(0) ""
  }
  [3]=>
  array(4) {
    ["wd"]=>
    int(%d)
    ["mask"]=>
    int(16)
    ["cookie"]=>
    int(0)
    ["name"]=>
    string(7) "002.php"
  }
  [4]=>
  array(4) {
    ["wd"]=>
    int(%d)
    ["mask"]=>
    int(32)
    ["cookie"]=>
    int(0)
    ["name"]=>
    string(7) "002.php"
  }
  [5]=>
  array(4) {
    ["wd"]=>
    int(%d)
    ["mask"]=>
    int(4)
    ["cookie"]=>
    int(0)
    ["name"]=>
    string(7) "002.php"
  }
}
inofity_rm_watch($ino,$watch): bool(true)
$watch: int(%d)
fclose($ino): bool(true)
$ino: resource(%d) of type (Unknown)
PKI�
[#F`=uu
bug47818.phptnu�[���--TEST--
Bug #47818 (Segfault due to bound callback param)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

class MyXmlRpc {
    private $s;
    private $method;

    function impl($method_name, $params, $user_data){
        $this->method = $method_name;
        print "Inside impl(): {$this->method}\n";
        return array_sum($params);
    }

    function __construct() {
        $this->s = xmlrpc_server_create();
        xmlrpc_server_register_method($this->s, 'add', array($this, 'impl'));
    }

    function call($req) {
        return xmlrpc_server_call_method($this->s, $req, null);
    }

    function getMethod() {return $this->method;}

}

$x = new MyXmlRpc;
$resp = $x->call(xmlrpc_encode_request('add', array(1, 2, 3)));

$method = $x->getMethod();

print "Global scope: $method\n";

?>
--EXPECT--
Inside impl(): add
Global scope: add
PKI�
[����::
bug68027.phptnu�[���--TEST--
Bug #68027 (buffer overflow in mkgmtime() function)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php

$d = '6-01-01 20:00:00';
xmlrpc_set_type($d, 'datetime');
var_dump($d);
$datetime = "2001-0-08T21:46:40-0400";
$obj = xmlrpc_decode("<?xml version=\"1.0\"?><methodResponse><params><param><value><dateTime.iso8601>$datetime</dateTime.iso8601></value></param></params></methodResponse>");
print_r($obj);

$datetime = "34770-0-08T21:46:40-0400";
$obj = xmlrpc_decode("<?xml version=\"1.0\"?><methodResponse><params><param><value><dateTime.iso8601>$datetime</dateTime.iso8601></value></param></params></methodResponse>");
print_r($obj);

echo "Done\n";
?>
--EXPECTF--
object(stdClass)#1 (3) {
  ["scalar"]=>
  string(16) "6-01-01 20:00:00"
  ["xmlrpc_type"]=>
  string(8) "datetime"
  ["timestamp"]=>
  int(%d)
}
stdClass Object
(
    [scalar] => 2001-0-08T21:46:40-0400
    [xmlrpc_type] => datetime
    [timestamp] => %s
)
stdClass Object
(
    [scalar] => 34770-0-08T21:46:40-0400
    [xmlrpc_type] => datetime
    [timestamp] => %d
)
Done
PKI�
[���nn
bug45226.phptnu�[���--TEST--
Bug #45226 (xmlrpc_set_type() segfaults with valid ISO8601 date string)
--INI--
date.timezone="America/Sao_Paulo"
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$d = date(DATE_ISO8601);
xmlrpc_set_type($d, 'datetime');
echo xmlrpc_encode_request('method.call', array('date' => $d));

$d = '2008-01-01 20:00:00';
xmlrpc_set_type($d, 'datetime');
echo xmlrpc_encode_request('method.call', array('date' => $d));

?>
--EXPECTF--
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>method.call</methodName>
<params>
 <param>
  <value>
   <struct>
    <member>
     <name>date</name>
     <value>
      <dateTime.iso8601>%d-%d-%dT%d:%d:%d%s%d</dateTime.iso8601>
     </value>
    </member>
   </struct>
  </value>
 </param>
</params>
</methodCall>
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>method.call</methodName>
<params>
 <param>
  <value>
   <struct>
    <member>
     <name>date</name>
     <value>
      <dateTime.iso8601>%d-%d-%d %d:%d:%d</dateTime.iso8601>
     </value>
    </member>
   </struct>
  </value>
 </param>
</params>
</methodCall>
PKI�
[���_FF
bug40576.phptnu�[���--TEST--
Bug #40576 (double values are truncated to 6 decimal digits when encoding)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
?>
--INI--
precision=12
--FILE--
<?php

var_dump(xmlrpc_encode(1.123456789));
var_dump(xmlrpc_encode(11234567891010));
var_dump(xmlrpc_encode(11234567));
var_dump(xmlrpc_encode(""));
var_dump(xmlrpc_encode("test"));
var_dump(xmlrpc_encode("1.22222222222222222222222"));

echo "Done\n";
?>
--EXPECT--
string(125) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <double>1.123456789</double>
 </value>
</param>
</params>
"
string(130) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <double>1.1234567891E+13</double>
 </value>
</param>
</params>
"
string(116) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <int>11234567</int>
 </value>
</param>
</params>
"
string(106) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string/>
 </value>
</param>
</params>
"
string(118) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>test</string>
 </value>
</param>
</params>
"
string(139) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>1.22222222222222222222222</string>
 </value>
</param>
</params>
"
Done
PKI�
[V��=oobug70728_64bit.phptnu�[���--TEST--
Bug #70728 (Type Confusion Vulnerability in PHP_to_XMLRPC_worker)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
?>
--FILE--
<?php
$obj = new stdClass;
$obj->xmlrpc_type = 'base64';
$obj->scalar = 0x1122334455;
var_dump(xmlrpc_encode($obj));
var_dump($obj);
?>
--EXPECT--
string(135) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <base64>NzM1ODgyMjkyMDU=&#10;</base64>
 </value>
</param>
</params>
"
object(stdClass)#1 (2) {
  ["xmlrpc_type"]=>
  string(6) "base64"
  ["scalar"]=>
  int(73588229205)
}
PKI�
[��8���
bug50282.phptnu�[���--TEST--
Bug #50282 (xmlrpc_encode_request() changes object into array in calling function)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

class One { var $x = 10; }

$o = new One();
var_dump($o);
var_dump(xmlrpc_encode_request('test', $o));
var_dump($o);

?>
--EXPECTF--
object(One)#%d (1) {
  ["x"]=>
  int(10)
}
string(279) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>test</methodName>
<params>
 <param>
  <value>
   <struct>
    <member>
     <name>x</name>
     <value>
      <int>10</int>
     </value>
    </member>
   </struct>
  </value>
 </param>
</params>
</methodCall>
"
object(One)#%d (1) {
  ["x"]=>
  int(10)
}
PKI�
[Fnc��
bug37057.phptnu�[���--TEST--
Bug #37057 (xmlrpc_decode() may produce arrays with numeric string keys which are unaccessible)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$response='<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>50</name>
            <value><string>0.29</string></value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>';

$retval=xmlrpc_decode($response);
var_dump($retval);
var_dump($retval["50"]);
var_dump($retval[50]);

$response='<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>0</name>
            <value><string>0.29</string></value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>';

$retval=xmlrpc_decode($response);
var_dump($retval);
var_dump($retval["0"]);
var_dump($retval[0]);

echo "Done\n";
?>
--EXPECT--
array(1) {
  [50]=>
  string(4) "0.29"
}
string(4) "0.29"
string(4) "0.29"
array(1) {
  [0]=>
  string(4) "0.29"
}
string(4) "0.29"
string(4) "0.29"
Done
PKI�
[-�'
bug38431.phptnu�[���--TEST--
Bug #38431 (xmlrpc_get_type() crashes PHP on objects)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

var_dump(xmlrpc_get_type(new stdclass));
var_dump(xmlrpc_get_type(array()));
$var = array(1,2,3);
var_dump(xmlrpc_get_type($var));
$var = array("test"=>1,2,3);
var_dump(xmlrpc_get_type($var));
$var = array("test"=>1,"test2"=>2);
var_dump(xmlrpc_get_type($var));

echo "Done\n";
?>
--EXPECT--
string(5) "array"
string(5) "array"
string(5) "array"
string(5) "mixed"
string(6) "struct"
Done
PKI�
[I\�i
bug72647.phptnu�[���--TEST--
Bug #72647 (xmlrpc_encode() unexpected output after referencing array elements)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php

$ar = array(4, "a", 7);
$v = &$ar[1];
unset($v);

echo xmlrpc_encode($ar);
?>
--EXPECT--
<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <array>
   <data>
    <value>
     <int>4</int>
    </value>
    <value>
     <string>a</string>
    </value>
    <value>
     <int>7</int>
    </value>
   </data>
  </array>
 </value>
</param>
</params>
PKI�
[�
(qq
bug70728.phptnu�[���--TEST--
Bug #70728 (Type Confusion Vulnerability in PHP_to_XMLRPC_worker)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
?>
--FILE--
<?php
$obj = new stdClass;
$obj->xmlrpc_type = 'base64';
$obj->scalar = 0x1122334455;
var_dump(xmlrpc_encode($obj));
var_dump($obj);
?>
--EXPECT--
string(135) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <base64>NzM1ODgyMjkyMDU=&#10;</base64>
 </value>
</param>
</params>
"
object(stdClass)#1 (2) {
  ["xmlrpc_type"]=>
  string(6) "base64"
  ["scalar"]=>
  float(73588229205)
}
PKI�
[����
bug72155.phptnu�[���--TEST--
Bug #72155 (use-after-free caused by get_zval_xmlrpc_type)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
?>
--FILE--
<?php
if (false !== strpos(PHP_OS, "WIN")) {
    $fl = "c:\\windows\\explorer.exe";
} else {
    $fl = "/etc/passwd";
}
$var0 = fopen($fl,"r");
$var1 = xmlrpc_encode($var0);
var_dump($var1);
?>
--EXPECT--
string(109) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <int>5</int>
 </value>
</param>
</params>
"
PKI�
[���PP001.phptnu�[���--TEST--
xmlrpc_encode_request() with wrong arguments
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

var_dump(xmlrpc_encode_request(-1, 1));
var_dump(xmlrpc_encode_request("", 1));
var_dump(xmlrpc_encode_request(3.4, 1));

echo "Done\n";
?>
--EXPECTF--
string(174) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>-1</methodName>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
</params>
</methodCall>
"
string(160) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName/>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
</params>
</methodCall>
"
string(175) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>3.4</methodName>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
</params>
</methodCall>
"
Done
PKI�
[��[bb
bug51288.phptnu�[���--TEST--
Bug #51288 (CVE-2010-0397, NULL pointer deref when no <methodName> in request)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$method = NULL;
$req = '<?xml version="1.0"?><methodCall></methodCall>';
var_dump(xmlrpc_decode_request($req, $method));
var_dump($method);
echo "Done\n";
?>
--EXPECT--
NULL
NULL
Done
PKI�
[ޒ��YY
bug61264.phptnu�[���--TEST--
Bug #61264: xmlrpc_parse_method_descriptions leaks temporary variable
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<a>
 <b>foo</b>
</a>
XML;
var_dump(xmlrpc_parse_method_descriptions($xml));
?>
--EXPECT--
array(1) {
  ["b"]=>
  string(3) "foo"
}
PKI�
[l�|�
bug42189.phptnu�[���--TEST--
Bug #42189 (xmlrpc_get_type() crashes PHP on invalid dates)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$a = '~~~~~~~~~~~~~~~~~~';
$ok = xmlrpc_set_type($a, 'datetime');
var_dump($ok);

echo "Done\n";
?>
--EXPECT--
bool(false)
Done
PKI�
[u��IHH
bug45556.phptnu�[���--TEST--
Bug #45556 (Return value from callback isn't freed)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$options = array ();
$request = xmlrpc_encode_request ("system.describeMethods", $options);
$server = xmlrpc_server_create ();


function foo() { return 11111; }

class bar {
    static public function test() {
        return 'foo';
    }
}

xmlrpc_server_register_introspection_callback($server, 'foobar');
xmlrpc_server_register_introspection_callback($server, array('bar', 'test'));
xmlrpc_server_register_introspection_callback($server, array('foo', 'bar'));

$options = array ('output_type' => 'xml', 'version' => 'xmlrpc');
xmlrpc_server_call_method ($server, $request, NULL, $options);

?>
--EXPECTF--
Warning: xmlrpc_server_call_method(): Invalid callback 'foobar' passed in %s on line %d

Warning: xmlrpc_server_call_method(): XML parse error: [line 1, column 1, message: %s] Unable to add introspection data returned from bar::test() in %s on line %d

Warning: xmlrpc_server_call_method(): Invalid callback 'foo::bar' passed in %s on line %d
PKI�
[e�B�;;bug40576_64bit.phptnu�[���--TEST--
Bug #40576 (double values are truncated to 6 decimal digits when encoding)
--SKIPIF--
<?php
if (!extension_loaded("xmlrpc")) print "skip";
if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
?>
--INI--
precision=12
--FILE--
<?php

var_dump(xmlrpc_encode(1.123456789));
var_dump(xmlrpc_encode(11234567891010));
var_dump(xmlrpc_encode(11234567));
var_dump(xmlrpc_encode(""));
var_dump(xmlrpc_encode("test"));
var_dump(xmlrpc_encode("1.22222222222222222222222"));

echo "Done\n";
?>
--EXPECT--
string(125) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <double>1.123456789</double>
 </value>
</param>
</params>
"
string(119) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <int>-1066555326</int>
 </value>
</param>
</params>
"
string(116) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <int>11234567</int>
 </value>
</param>
</params>
"
string(106) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string/>
 </value>
</param>
</params>
"
string(118) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>test</string>
 </value>
</param>
</params>
"
string(139) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>1.22222222222222222222222</string>
 </value>
</param>
</params>
"
Done
PKI�
[�Y/�GG
bug50761.phptnu�[���--TEST--
Bug #50761 (system.multiCall crashes)
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php
$req = '<?xml version="1.0"?>
<methodCall>
<methodName>system.multiCall</methodName>
<params><param><value><array><data>
<value><struct>
<member><name>methodName</name><value><string>testMethodA</string></value></member>
<member><name>params</name><value><array><data><value><string>A</string>
</value></data></array></value></member>
</struct></value>
<value><struct>
<member><name>methodName</name><value><string>testMethodB</string></value></member>
<member><name>params</name><value><array><data><value><string>B</string>
</value></data></array></value></member>
</struct></value>
</data></array></value></param></params>
</methodCall>';

function testA($methodName, $params, $var){ return "C"; }
function testB($methodName, $params, $var){ return "D"; }

$server = xmlrpc_server_create();
xmlrpc_server_register_method($server, 'testMethodA', 'testA');
xmlrpc_server_register_method($server, 'testMethodB', 'testB');
$res = xmlrpc_server_call_method($server, $req, null);
echo $res;
?>
--EXPECT--
<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
 <param>
  <value>
   <array>
    <data>
     <value>
      <array>
       <data>
        <value>
         <string>C</string>
        </value>
       </data>
      </array>
     </value>
     <value>
      <array>
       <data>
        <value>
         <string>D</string>
        </value>
       </data>
      </array>
     </value>
    </data>
   </array>
  </value>
 </param>
</params>
</methodResponse>
PK��
[�j:׺�005_WKBReader.phptnu�[���--TEST--
WKBReader tests
--SKIPIF--
<?php if (!extension_loaded('geos')) { print "geos extension not loaded\n"; exit(1); } ?>
--FILE--
<?php

require dirname(__FILE__).'/TestHelper.php';

class WKBReaderTest extends GEOSTest
{
    public function testValidWKB()
    {
        $reader = new GEOSWKBReader();
        $writer = new GEOSWKTWriter();
        $writer->setRoundingPrecision(1);
        $writer->setOutputDimension(3);
        if (method_exists("GEOSWKTWriter", 'setTrim')) {
            $writer->setTrim(FALSE);
        }

        foreach ($this->providerValidWKB() as $test) {
            list ($wkb, $wkt, $srid) = $test;

            $geometry = $reader->readHEX($wkb);
            $this->assertEquals($wkt, $writer->write($geometry));
            $this->assertEquals($srid, $geometry->getSRID());

            $geometry = $reader->read(hex2bin($wkb));
            $this->assertEquals($wkt, $writer->write($geometry));
            $this->assertEquals($srid, $geometry->getSRID());
        }
    }

    private function providerValidWKB()
    {
        return array(
            array('0101000020e6100000000000000000f03f0000000000000040', 'POINT (1.0 2.0)', 4326),
            array('01010000a0e6100000333333333333f33f3333333333330b406666666666661640', 'POINT Z (1.2 3.4 5.6)', 4326),
            array('0104000000030000000101000000000000000000f03f0000000000000040010100000000000000000008400000000000001040010100000000000000000014400000000000001840', 'MULTIPOINT (1.0 2.0, 3.0 4.0, 5.0 6.0)', 0),
            array('0104000080030000000101000080000000000000f03f00000000000000400000000000000840010100008000000000000010400000000000001440000000000000184001010000800000000000001c4000000000000020400000000000002240', 'MULTIPOINT Z (1.0 2.0 3.0, 4.0 5.0 6.0, 7.0 8.0 9.0)', 0),
            array('01040000207b00000000000000', 'MULTIPOINT EMPTY', 123),
            array('0102000020c801000003000000000000000000f03f00000000000000400000000000000840000000000000104000000000000008400000000000000040', 'LINESTRING (1.0 2.0, 3.0 4.0, 3.0 2.0)', 456),
            array('01020000a0db03000003000000000000000000f03f000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001c4000000000000020400000000000002240', 'LINESTRING Z (1.0 2.0 3.0, 4.0 5.0 6.0, 7.0 8.0 9.0)', 987),
            array('01020000201503000000000000', 'LINESTRING EMPTY', 789),
            array('0105000020d204000002000000010200000002000000000000000000f03f0000000000000000000000000000044000000000000000400102000000020000009a9999999999174000000000000020409a99999999990d40000000000000f03f', 'MULTILINESTRING ((1.0 0.0, 2.5 2.0), (5.9 8.0, 3.7 1.0))', 1234),
            array('01050000a0e110000002000000010200008002000000000000000000f03f0000000000000000000000000000f03f00000000000004400000000000000040000000000000f03f0102000080020000009a99999999991740000000000000204000000000000008409a99999999990d40000000000000f03f0000000000000840', 'MULTILINESTRING Z ((1.0 0.0 1.0, 2.5 2.0 1.0), (5.9 8.0 3.0, 3.7 1.0 3.0))', 4321),
            array('01050000203930000000000000', 'MULTILINESTRING EMPTY', 12345),
            array('0103000020f40100000100000004000000000000000000f03f000000000000f03f000000000000f03f000000000000f83f000000000000f83f000000000000f03f000000000000f03f000000000000f03f', 'POLYGON ((1.0 1.0, 1.0 1.5, 1.5 1.0, 1.0 1.0))', 500),
            array('0103000020f30100000200000005000000000000000000000000000000000000000000000000000000000000000000084000000000000008400000000000000840000000000000084000000000000000000000000000000000000000000000000005000000000000000000f03f000000000000f03f000000000000f03f0000000000000040000000000000004000000000000000400000000000000040000000000000f03f000000000000f03f000000000000f03f', 'POLYGON ((0.0 0.0, 0.0 3.0, 3.0 3.0, 3.0 0.0, 0.0 0.0), (1.0 1.0, 1.0 2.0, 2.0 2.0, 2.0 1.0, 1.0 1.0))', 499),
            array('01030000a06300000001000000040000009a9999999999f13f9a9999999999014000000000000000009a999999999901403333333333331d409a9999999999f13f00000000000021409a999999999901409a9999999999f13f9a9999999999f13f9a999999999901400000000000000000', 'POLYGON Z ((1.1 2.2 0.0, 2.2 7.3 1.1, 8.5 2.2 1.1, 1.1 2.2 0.0))', 99),
            array('01030000200100000000000000', 'POLYGON EMPTY', 1),
            array('0106000020020000000100000001030000000200000005000000000000000000000000000000000000000000000000000000000000000000084000000000000008400000000000000840000000000000084000000000000000000000000000000000000000000000000005000000000000000000f03f000000000000f03f000000000000f03f0000000000000040000000000000004000000000000000400000000000000040000000000000f03f000000000000f03f000000000000f03f', 'MULTIPOLYGON (((0.0 0.0, 0.0 3.0, 3.0 3.0, 3.0 0.0, 0.0 0.0), (1.0 1.0, 1.0 2.0, 2.0 2.0, 2.0 1.0, 1.0 1.0)))', 2),
            array('01060000a003000000010000000103000080020000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000008400000000000000840000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000f03f000000000000f03f9a9999999999f13f000000000000f03f00000000000000409a9999999999f13f000000000000004000000000000000409a9999999999f13f0000000000000040000000000000f03f9a9999999999f13f000000000000f03f000000000000f03f9a9999999999f13f', 'MULTIPOLYGON Z (((0.0 0.0 0.0, 0.0 3.0 0.0, 3.0 3.0 0.0, 3.0 0.0 0.0, 0.0 0.0 0.0), (1.0 1.0 1.1, 1.0 2.0 1.1, 2.0 2.0 1.1, 2.0 1.0 1.1, 1.0 1.0 1.1)))', 3),
            array('01060000200400000000000000', 'MULTIPOLYGON EMPTY', 4),
            array('01070000200f270000060000000101000000000000000000f03f00000000000000400104000000030000000101000000000000000000f03f0000000000000040010100000000000000000008400000000000001040010100000000000000000014400000000000001840010200000003000000000000000000f03f00000000000000400000000000000840000000000000104000000000000008400000000000000040010500000002000000010200000002000000000000000000f03f0000000000000000000000000000044000000000000000400102000000020000009a9999999999174000000000000020409a99999999990d40000000000000f03f01030000000200000005000000000000000000000000000000000000000000000000000000000000000000084000000000000008400000000000000840000000000000084000000000000000000000000000000000000000000000000005000000000000000000f03f000000000000f03f000000000000f03f0000000000000040000000000000004000000000000000400000000000000040000000000000f03f000000000000f03f000000000000f03f01060000000100000001030000000200000005000000000000000000000000000000000000000000000000000000000000000000084000000000000008400000000000000840000000000000084000000000000000000000000000000000000000000000000005000000000000000000f03f000000000000f03f000000000000f03f0000000000000040000000000000004000000000000000400000000000000040000000000000f03f000000000000f03f000000000000f03f', 'GEOMETRYCOLLECTION (POINT (1.0 2.0), MULTIPOINT (1.0 2.0, 3.0 4.0, 5.0 6.0), LINESTRING (1.0 2.0, 3.0 4.0, 3.0 2.0), MULTILINESTRING ((1.0 0.0, 2.5 2.0), (5.9 8.0, 3.7 1.0)), POLYGON ((0.0 0.0, 0.0 3.0, 3.0 3.0, 3.0 0.0, 0.0 0.0), (1.0 1.0, 1.0 2.0, 2.0 2.0, 2.0 1.0, 1.0 1.0)), MULTIPOLYGON (((0.0 0.0, 0.0 3.0, 3.0 3.0, 3.0 0.0, 0.0 0.0), (1.0 1.0, 1.0 2.0, 2.0 2.0, 2.0 1.0, 1.0 1.0))))', 9999),
            array('01070000200903000000000000', 'GEOMETRYCOLLECTION EMPTY', 777),
        );
    }

    public function testBogusWKB()
    {
        $reader = new GEOSWKBReader();

        try {
            $reader->read(hex2bin('1234567890abcdef'));
            $this->assertTrue(FALSE); # this is just to fail if we get here
        } catch (Exception $e) {
            $this->assertContains('ParseException', $e->getMessage());
        }
    }

    public function testBogusHexWKB()
    {
        $reader = new GEOSWKBReader();

        try {
            $reader->readHEX('1234567890abcdef');
            $this->assertTrue(FALSE); # this is just to fail if we get here
        } catch (Exception $e) {
            $this->assertContains('ParseException', $e->getMessage());
        }
    }
}

WKBReaderTest::run();

?>
--EXPECT--
WKBReaderTest->testValidWKB	OK
WKBReaderTest->testBogusWKB	OK
WKBReaderTest->testBogusHexWKB	OK
PK��
[��p''004_WKBWriter.phptnu�[���--TEST--
WKBWriter tests
--SKIPIF--
<?php if (!extension_loaded('geos')) { print "geos extension not loaded\n"; exit(1); } ?>
--FILE--
<?php

require dirname(__FILE__).'/TestHelper.php';

class WKBWriterTest extends GEOSTest
{
    public function testWKBWriter__construct()
    {
        $writer = new GEOSWKBWriter();
        $this->assertNotNull($writer);
    }

    public function testWKBWriter_getOutputDimension()
    {
        $writer = new GEOSWKBWriter();
        $this->assertEquals(2, $writer->getOutputDimension());
    }

    public function testWKBWriter_setOutputDimension()
    {
        $writer = new GEOSWKBWriter();
        $writer->setOutputDimension(3);
        $this->assertEquals(3, $writer->getOutputDimension());
        $writer->setOutputDimension(2);
        $this->assertEquals(2, $writer->getOutputDimension());

        # 1 is invalid
        try {
            $writer->setOutputDimension(1);
            $this->assertTrue(FALSE);
        } catch (Exception $e) {
            $this->assertContains('must be 2 or 3', $e->getMessage());
        }

        # 4 is invalid
        try {
            $writer->setOutputDimension(4);
            $this->assertTrue(FALSE);
        } catch (Exception $e) {
            $this->assertContains('must be 2 or 3', $e->getMessage());
        }
    }

    public function testWKBWriter_getsetByteOrder()
    {
        $writer = new GEOSWKBWriter();

        /* Machine-dependent */
        $bo = $writer->getByteOrder();

        $obo = $bo ? 0 : 1;
        $writer->setByteOrder($obo);
        $this->assertEquals($obo, $writer->getByteOrder());

        # Anything different from 0 (BIG_ENDIAN) or 1 (LITTLE_ENDIAN)
        # is invalid
        try {
            $writer->setByteOrder(5);
            $this->assertTrue(FALSE);
        } catch (Exception $e) {
            $this->assertContains('LITTLE (1) or BIG (0)', $e->getMessage());
        }
    }

    public function testWKBWriter_getsetIncludeSRID()
    {
        $writer = new GEOSWKBWriter();

        $this->assertEquals(FALSE, $writer->getIncludeSRID());
        $writer->setIncludeSRID(TRUE);
        $this->assertEquals(TRUE, $writer->getIncludeSRID());
        $writer->setIncludeSRID(FALSE);
        $this->assertEquals(FALSE, $writer->getIncludeSRID());
    }

    /**
     * @dataProvider providerWKBWriter_write
     *
     * @param integer $byteOrder       The byte order: 0 for BIG endian, 1 for LITTLE endian.
     * @param integer $inputDimension  The input dimension: 2 or 3.
     * @param integer $outputDimension The output dimension: 2 or 3.
     * @param boolean $includeSrid     Whether to include the SRID in the output.
     * @param string  $wkb             The expected HEX WKB output.
     */
    public function runWKBWriter_write($byteOrder, $inputDimension, $outputDimension, $includeSrid, $wkb)
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKBWriter();

        $writer->setByteOrder($byteOrder);
        $writer->setOutputDimension($outputDimension);
        $writer->setIncludeSRID($includeSrid);

        if ($inputDimension === 3) {
            $g = $reader->read('POINT(6 7 8)');
            $g->setSRID(53);
        } else {
            $g = $reader->read('POINT(6 7)');
            $g->setSRID(43);
        }

        $this->assertEquals(hex2bin($wkb), $writer->write($g));
        $this->assertEquals($wkb, $writer->writeHEX($g));
    }

    public function testWKBWriter_write()
    {
        // 2D input
        $this->runWKBWriter_write(1, 2, 2, false, '010100000000000000000018400000000000001C40');        // 2D LITTLE endian
        $this->runWKBWriter_write(1, 2, 2, true, '01010000202B00000000000000000018400000000000001C40'); // 2D LITTLE endian + SRID
        $this->runWKBWriter_write(0, 2, 2, false, '00000000014018000000000000401C000000000000');        // 2D BIG endian
        $this->runWKBWriter_write(0, 2, 2, true, '00200000010000002B4018000000000000401C000000000000'); // 2D BIG endian + SRID
        $this->runWKBWriter_write(1, 2, 3, false, '010100000000000000000018400000000000001C40');        // 3D LITTLE endian
        $this->runWKBWriter_write(1, 2, 3, true, '01010000202B00000000000000000018400000000000001C40'); // 3D LITTLE endian + SRID
        $this->runWKBWriter_write(0, 2, 3, false, '00000000014018000000000000401C000000000000');        // 3D BIG endian
        $this->runWKBWriter_write(0, 2, 3, true, '00200000010000002B4018000000000000401C000000000000'); // 3D BIG endian + SRID

        // 3D input
        $this->runWKBWriter_write(1, 3, 2, false, '010100000000000000000018400000000000001C40');                        // 2D LITTLE endian
        $this->runWKBWriter_write(1, 3, 2, true, '01010000203500000000000000000018400000000000001C40');                 // 2D LITTLE endian + SRID
        $this->runWKBWriter_write(0, 3, 2, false, '00000000014018000000000000401C000000000000');                        // 2D BIG endian
        $this->runWKBWriter_write(0, 3, 2, true, '0020000001000000354018000000000000401C000000000000');                 // 2D BIG endian + SRID
        $this->runWKBWriter_write(1, 3, 3, false, '010100008000000000000018400000000000001C400000000000002040');        // 3D LITTLE endian
        $this->runWKBWriter_write(1, 3, 3, true, '01010000A03500000000000000000018400000000000001C400000000000002040'); // 3D LITTLE endian + SRID
        $this->runWKBWriter_write(0, 3, 3, false, '00800000014018000000000000401C0000000000004020000000000000');        // 3D BIG endian
        $this->runWKBWriter_write(0, 3, 3, true, '00A0000001000000354018000000000000401C0000000000004020000000000000'); // 3D BIG endian + SRID
    }

    public function testInvalidWriteThrowsException()
    {
        $writer = new GEOSWKBWriter();

        try {
            $writer->write(1);
            $this->assertTrue(false);
        } catch (ErrorException $e) {
            $this->assertContains('expects parameter 1 to be object, int', $e->getMessage());
        } catch (Error $e) {
            $this->assertContains('Argument #1', $e->getMessage());
        }
    }

    public function testInvalidWriteHEXThrowsException()
    {
        $writer = new GEOSWKBWriter();

        try {
            $writer->writeHEX(1);
            $this->assertTrue(false);
        } catch (ErrorException $e) {
            $this->assertContains('expects parameter 1 to be object, int', $e->getMessage());
        } catch (Error $e) {
            $this->assertContains('Argument #1', $e->getMessage());
	    }
    }
}

WKBWriterTest::run();

?>
--EXPECT--
WKBWriterTest->testWKBWriter__construct	OK
WKBWriterTest->testWKBWriter_getOutputDimension	OK
WKBWriterTest->testWKBWriter_setOutputDimension	OK
WKBWriterTest->testWKBWriter_getsetByteOrder	OK
WKBWriterTest->testWKBWriter_getsetIncludeSRID	OK
WKBWriterTest->testWKBWriter_write	OK
WKBWriterTest->testInvalidWriteThrowsException	OK
WKBWriterTest->testInvalidWriteHEXThrowsException	OK
PK��
[���yy002_WKTWriter.phptnu�[���--TEST--
WKTWriter tests
--SKIPIF--
<?php if (!extension_loaded('geos')) { print "geos extension not loaded\n"; exit(1); } ?>
--FILE--
<?php

require dirname(__FILE__).'/TestHelper.php';

class WKTWriterTest extends GEOSTest
{
    public function testWKTWriter__construct()
    {
        $writer = new GEOSWKTWriter();
        $this->assertNotNull($writer);
    }

    public function testWKTWriter_write()
    {
        $writer = new GEOSWKTWriter();
        $reader = new GEOSWKTReader();

        try {
            $writer->write(1);
            $this->assertTrue(FALSE); # this is just to fail if we get here
        } catch (Exception $e) {
            $this->assertContains('expects parameter 1', $e->getMessage());
        } catch (Error $e) {
            $this->assertContains('Argument #1', $e->getMessage());
        }

        $g = $reader->read('POINT(6 7)');

        $this->assertEquals('POINT (6.0000000000000000 7.0000000000000000)',
            $writer->write($g));
    }

    public function testWKTWriter_setTrim()
    {
        if (!method_exists("GEOSWKTWriter", 'setTrim')) {
            return;
        }

        $writer = new GEOSWKTWriter();
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(6 7)');
        $this->assertNotNull($g);

        $writer->setTrim(TRUE);
        $this->assertEquals('POINT (6 7)',
            $writer->write($g));

        $writer->setTrim(FALSE);
        $this->assertEquals('POINT (6.0000000000000000 7.0000000000000000)',
            $writer->write($g));

    }

    public function testWKT_roundTrip()
    {
        $r = new GEOSWKTReader();
        $w = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setTrim')) {
            $w->setTrim(TRUE);
        }

        $in[] = 'POINT (0 0)';
        $in[] = 'POINT EMPTY';
        $in[] = 'MULTIPOINT (0 1, 2 3)';
        $in[] = 'MULTIPOINT EMPTY';
        $in[] = 'LINESTRING (0 0, 2 3)';
        $in[] = 'LINESTRING EMPTY';
        $in[] = 'MULTILINESTRING ((0 1, 2 3), (10 10, 3 4))';
        $in[] = 'MULTILINESTRING EMPTY';
        $in[] = 'POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))';
        $in[] = 'POLYGON EMPTY';
        $in[] = 'MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((10 10, 10 14, 14 14, 14 10, 10 10), (11 11, 11 12, 12 12, 12 11, 11 11)))';
        $in[] = 'MULTIPOLYGON EMPTY';
        $in[] = 'GEOMETRYCOLLECTION (MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((10 10, 10 14, 14 14, 14 10, 10 10), (11 11, 11 12, 12 12, 12 11, 11 11))), POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)), MULTILINESTRING ((0 0, 2 3), (10 10, 3 4)), LINESTRING (0 0, 2 3), MULTIPOINT (0 0, 2 3), POINT (9 0))';
        $in[] = 'GEOMETRYCOLLECTION EMPTY';

        foreach ($in as $i) {
            $this->assertEquals($i, $w->write($r->read($i)));
        }

    }

    public function testWKTWriter_setRoundingPrecision()
    {
        if (!method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            return;
        }

        $writer = new GEOSWKTWriter();
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(6.123456 7.123456)');

        $this->assertEquals('POINT (6.1234560000000000 7.1234560000000000)',
            $writer->write($g));

        $writer->setRoundingPrecision(2);
        $this->assertEquals('POINT (6.12 7.12)', $writer->write($g));

        $writer->setRoundingPrecision(5); /* rounds */
        $this->assertEquals('POINT (6.12346 7.12346)', $writer->write($g));

        $writer->setRoundingPrecision(1);
        $this->assertEquals('POINT (6.1 7.1)', $writer->write($g));

        $writer->setRoundingPrecision(0);
        $this->assertEquals('POINT (6 7)', $writer->write($g));

    }

    public function testWKTWriter_getOutputDimension()
    {
        if (!method_exists("GEOSWKTWriter", 'getOutputDimension')) {
            return;
        }

        $writer = new GEOSWKTWriter();
        $this->assertEquals(2, $writer->getOutputDimension());
    }

    public function testWKTWriter_setOutputDimension()
    {
        if (!method_exists("GEOSWKTWriter", 'setOutputDimension')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $g3d = $reader->read('POINT(1 2 3)');
        $g2d = $reader->read('POINT(3 2)');

        $writer = new GEOSWKTWriter();
        $writer->setTrim(TRUE);

        # Only 2d by default
        $this->assertEquals('POINT (1 2)', $writer->write($g3d));

        # 3d if requested _and_ available
        $writer->setOutputDimension(3);
        $this->assertEquals('POINT Z (1 2 3)', $writer->write($g3d));
        $this->assertEquals('POINT (3 2)', $writer->write($g2d));

        # 1 is invalid
        try {
            $writer->setOutputDimension(1);
            $this->assertTrue(FALSE);
        } catch (Exception $e) {
            $this->assertContains('must be 2 or 3', $e->getMessage());
        }

        # 4 is invalid
        try {
            $writer->setOutputDimension(4);
            $this->assertTrue(FALSE);
        } catch (Exception $e) {
            $this->assertContains('must be 2 or 3', $e->getMessage());
        }

    }

    public function testWKTWriter_setOld3D()
    {
        if (!method_exists("GEOSWKTWriter", 'setOld3D')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $g3d = $reader->read('POINT(1 2 3)');

        $writer = new GEOSWKTWriter();
        $writer->setTrim(TRUE);

        # New 3d WKT by default
        $writer->setOutputDimension(3);
        $this->assertEquals('POINT Z (1 2 3)', $writer->write($g3d));

        # Switch to old
        $writer->setOld3D(TRUE);
        $this->assertEquals('POINT (1 2 3)', $writer->write($g3d));

        # Old3d flag is not reset when changing dimensions
        $writer->setOutputDimension(2);
        $this->assertEquals('POINT (1 2)', $writer->write($g3d));
        $writer->setOutputDimension(3);
        $this->assertEquals('POINT (1 2 3)', $writer->write($g3d));

        # Likewise, dimensions spec is not reset when changing old3d flag
        $writer->setOld3D(FALSE);
        $this->assertEquals('POINT Z (1 2 3)', $writer->write($g3d));

    }
}

WKTWriterTest::run();

?>
--EXPECT--
WKTWriterTest->testWKTWriter__construct	OK
WKTWriterTest->testWKTWriter_write	OK
WKTWriterTest->testWKTWriter_setTrim	OK
WKTWriterTest->testWKT_roundTrip	OK
WKTWriterTest->testWKTWriter_setRoundingPrecision	OK
WKTWriterTest->testWKTWriter_getOutputDimension	OK
WKTWriterTest->testWKTWriter_setOutputDimension	OK
WKTWriterTest->testWKTWriter_setOld3D	OK
PK��
[��v��003_WKTReader.phptnu�[���--TEST--
WKTReader tests
--SKIPIF--
<?php if (!extension_loaded('geos')) { print "geos extension not loaded\n"; exit(1); } ?>
--FILE--
<?php

require dirname(__FILE__).'/TestHelper.php';

class WKTReaderTest extends GEOSTest
{
    public function testWKTReader__construct()
    {
        $reader = new GEOSWKTReader();
        $this->assertNotNull($reader);
    }

    public function testWKTReader_read()
    {
        $reader = new GEOSWKTReader();

        /* Good WKT */
        $geom = $reader->read('POINT(0 0)');
        $this->assertNotNull($geom);
        $geom = $reader->read('POINT(0 0 0)');
        $this->assertNotNull($geom);
        $geom = $reader->read('POINT Z (0 0 0)');
        $this->assertNotNull($geom);
        $geom = $reader->read('POINT EMPTY');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTIPOINT(0 0 1, 2 3 4)');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTIPOINT Z (0 0 1, 2 3 4)');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTIPOINT((0 0), (2 3))');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTIPOINT EMPTY');
        $this->assertNotNull($geom);
        $geom = $reader->read('LINESTRING(0 0 1, 2 3 4)');
        $this->assertNotNull($geom);
        $geom = $reader->read('LINESTRING EMPTY');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTILINESTRING((0 0 1, 2 3 4),
                                               (10 10 2, 3 4 5))');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTILINESTRING Z ((0 0 1, 2 3 4),
                                               (10 10 2, 3 4 5))');
        $this->assertNotNull($geom);
        $geom = $reader->read('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertNotNull($geom);
        $geom = $reader->read('POLYGON EMPTY');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTIPOLYGON(
                                ((0 0, 1 0, 1 1, 0 1, 0 0)),
                                ((10 10, 10 14, 14 14, 14 10, 10 10),
                                    (11 11, 11 12, 12 12, 12 11, 11 11))
                               )');
        $this->assertNotNull($geom);
        $geom = $reader->read('MULTIPOLYGON EMPTY');
        $this->assertNotNull($geom);
        $geom = $reader->read('GEOMETRYCOLLECTION(
                MULTIPOLYGON(
                 ((0 0, 1 0, 1 1, 0 1, 0 0)),
                 ((10 10, 10 14, 14 14, 14 10, 10 10),
                  (11 11, 11 12, 12 12, 12 11, 11 11))
                ),
                POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)),
                MULTILINESTRING((0 0, 2 3), (10 10, 3 4)),
                LINESTRING(0 0, 2 3),
                MULTIPOINT(0 0, 2 3),
                POINT(9 0)
        )');
        $this->assertNotNull($geom);
        $geom = $reader->read('GEOMETRYCOLLECTION EMPTY');
        $this->assertNotNull($geom);
    }

    public function testBogusWKT()
    {
        $reader = new GEOSWKTReader();

        /* BOGUS WKT */
        try {
            $reader->read("MULTIDOT(0 1 2 3)");
            $this->assertTrue(FALSE); # this is just to fail if we get here
        } catch (Exception $e) {
            $this->assertContains('ParseException', $e->getMessage());
        }
    }

    public function testNoArgumentsToRead()
    {
        $reader = new GEOSWKTReader();

        /* BOGUS call (#448) */
        try {
            $reader->read();
            $this->assertTrue(FALSE); # this is just to fail if we get here
        } catch (Exception $e) {
            $this->assertContains('expects exactly 1 parameter',
                                  $e->getMessage());
        } catch (Error $e) {
            $this->assertContains('expects exactly 1', $e->getMessage());
        }
    }
}

WKTReaderTest::run();

?>
--EXPECT--
WKTReaderTest->testWKTReader__construct	OK
WKTReaderTest->testWKTReader_read	OK
WKTReaderTest->testBogusWKT	OK
WKTReaderTest->testNoArgumentsToRead	OK
PK��
[�f�!!000_General.phptnu�[���--TEST--
General tests
--SKIPIF--
<?php if (!extension_loaded('geos')) { print "geos extension not loaded\n"; exit(1); } ?>
--FILE--
<?php

require dirname(__FILE__).'/TestHelper.php';

class GeneralTest extends GEOSTest
{
    public function testGEOSVersion()
    {
        $this->assertContains('-CAPI-', GEOSVersion());
    }

    public function testConstants()
    {
        $this->assertEquals(1, GEOSBUF_CAP_ROUND);
        $this->assertEquals(2, GEOSBUF_CAP_FLAT);
        $this->assertEquals(3, GEOSBUF_CAP_SQUARE);

        $this->assertEquals(1, GEOSBUF_JOIN_ROUND);
        $this->assertEquals(2, GEOSBUF_JOIN_MITRE);
        $this->assertEquals(3, GEOSBUF_JOIN_BEVEL);

        $this->assertEquals(0, GEOS_POINT);
        $this->assertEquals(1, GEOS_LINESTRING);
        $this->assertEquals(2, GEOS_LINEARRING);
        $this->assertEquals(3, GEOS_POLYGON);
        $this->assertEquals(4, GEOS_MULTIPOINT);
        $this->assertEquals(5, GEOS_MULTILINESTRING);
        $this->assertEquals(6, GEOS_MULTIPOLYGON);
        $this->assertEquals(7, GEOS_GEOMETRYCOLLECTION);

        $this->assertEquals(1, GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE);

        $this->assertEquals(1, GEOSRELATE_BNR_MOD2);
        $this->assertEquals(1, GEOSRELATE_BNR_OGC);
        $this->assertEquals(2, GEOSRELATE_BNR_ENDPOINT);
        $this->assertEquals(3, GEOSRELATE_BNR_MULTIVALENT_ENDPOINT);
        $this->assertEquals(4, GEOSRELATE_BNR_MONOVALENT_ENDPOINT);
    }
}

GeneralTest::run();

?>
--EXPECT--
GeneralTest->testGEOSVersion	OK
GeneralTest->testConstants	OK
PK��
[4v�''TestHelper.phpnu�[���<?php

# hex2bin for PHP < 5.4
# https://gist.github.com/mcrumley/5672621
if (!function_exists('hex2bin')) {
    function hex2bin($str) {
        $map = array(
            '00'=>"\x00", '10'=>"\x10", '20'=>"\x20", '30'=>"\x30", '40'=>"\x40", '50'=>"\x50", '60'=>"\x60", '70'=>"\x70",
            '01'=>"\x01", '11'=>"\x11", '21'=>"\x21", '31'=>"\x31", '41'=>"\x41", '51'=>"\x51", '61'=>"\x61", '71'=>"\x71",
            '02'=>"\x02", '12'=>"\x12", '22'=>"\x22", '32'=>"\x32", '42'=>"\x42", '52'=>"\x52", '62'=>"\x62", '72'=>"\x72",
            '03'=>"\x03", '13'=>"\x13", '23'=>"\x23", '33'=>"\x33", '43'=>"\x43", '53'=>"\x53", '63'=>"\x63", '73'=>"\x73",
            '04'=>"\x04", '14'=>"\x14", '24'=>"\x24", '34'=>"\x34", '44'=>"\x44", '54'=>"\x54", '64'=>"\x64", '74'=>"\x74",
            '05'=>"\x05", '15'=>"\x15", '25'=>"\x25", '35'=>"\x35", '45'=>"\x45", '55'=>"\x55", '65'=>"\x65", '75'=>"\x75",
            '06'=>"\x06", '16'=>"\x16", '26'=>"\x26", '36'=>"\x36", '46'=>"\x46", '56'=>"\x56", '66'=>"\x66", '76'=>"\x76",
            '07'=>"\x07", '17'=>"\x17", '27'=>"\x27", '37'=>"\x37", '47'=>"\x47", '57'=>"\x57", '67'=>"\x67", '77'=>"\x77",
            '08'=>"\x08", '18'=>"\x18", '28'=>"\x28", '38'=>"\x38", '48'=>"\x48", '58'=>"\x58", '68'=>"\x68", '78'=>"\x78",
            '09'=>"\x09", '19'=>"\x19", '29'=>"\x29", '39'=>"\x39", '49'=>"\x49", '59'=>"\x59", '69'=>"\x69", '79'=>"\x79",
            '0a'=>"\x0a", '1a'=>"\x1a", '2a'=>"\x2a", '3a'=>"\x3a", '4a'=>"\x4a", '5a'=>"\x5a", '6a'=>"\x6a", '7a'=>"\x7a",
            '0b'=>"\x0b", '1b'=>"\x1b", '2b'=>"\x2b", '3b'=>"\x3b", '4b'=>"\x4b", '5b'=>"\x5b", '6b'=>"\x6b", '7b'=>"\x7b",
            '0c'=>"\x0c", '1c'=>"\x1c", '2c'=>"\x2c", '3c'=>"\x3c", '4c'=>"\x4c", '5c'=>"\x5c", '6c'=>"\x6c", '7c'=>"\x7c",
            '0d'=>"\x0d", '1d'=>"\x1d", '2d'=>"\x2d", '3d'=>"\x3d", '4d'=>"\x4d", '5d'=>"\x5d", '6d'=>"\x6d", '7d'=>"\x7d",
            '0e'=>"\x0e", '1e'=>"\x1e", '2e'=>"\x2e", '3e'=>"\x3e", '4e'=>"\x4e", '5e'=>"\x5e", '6e'=>"\x6e", '7e'=>"\x7e",
            '0f'=>"\x0f", '1f'=>"\x1f", '2f'=>"\x2f", '3f'=>"\x3f", '4f'=>"\x4f", '5f'=>"\x5f", '6f'=>"\x6f", '7f'=>"\x7f",

            '80'=>"\x80", '90'=>"\x90", 'a0'=>"\xa0", 'b0'=>"\xb0", 'c0'=>"\xc0", 'd0'=>"\xd0", 'e0'=>"\xe0", 'f0'=>"\xf0",
            '81'=>"\x81", '91'=>"\x91", 'a1'=>"\xa1", 'b1'=>"\xb1", 'c1'=>"\xc1", 'd1'=>"\xd1", 'e1'=>"\xe1", 'f1'=>"\xf1",
            '82'=>"\x82", '92'=>"\x92", 'a2'=>"\xa2", 'b2'=>"\xb2", 'c2'=>"\xc2", 'd2'=>"\xd2", 'e2'=>"\xe2", 'f2'=>"\xf2",
            '83'=>"\x83", '93'=>"\x93", 'a3'=>"\xa3", 'b3'=>"\xb3", 'c3'=>"\xc3", 'd3'=>"\xd3", 'e3'=>"\xe3", 'f3'=>"\xf3",
            '84'=>"\x84", '94'=>"\x94", 'a4'=>"\xa4", 'b4'=>"\xb4", 'c4'=>"\xc4", 'd4'=>"\xd4", 'e4'=>"\xe4", 'f4'=>"\xf4",
            '85'=>"\x85", '95'=>"\x95", 'a5'=>"\xa5", 'b5'=>"\xb5", 'c5'=>"\xc5", 'd5'=>"\xd5", 'e5'=>"\xe5", 'f5'=>"\xf5",
            '86'=>"\x86", '96'=>"\x96", 'a6'=>"\xa6", 'b6'=>"\xb6", 'c6'=>"\xc6", 'd6'=>"\xd6", 'e6'=>"\xe6", 'f6'=>"\xf6",
            '87'=>"\x87", '97'=>"\x97", 'a7'=>"\xa7", 'b7'=>"\xb7", 'c7'=>"\xc7", 'd7'=>"\xd7", 'e7'=>"\xe7", 'f7'=>"\xf7",
            '88'=>"\x88", '98'=>"\x98", 'a8'=>"\xa8", 'b8'=>"\xb8", 'c8'=>"\xc8", 'd8'=>"\xd8", 'e8'=>"\xe8", 'f8'=>"\xf8",
            '89'=>"\x89", '99'=>"\x99", 'a9'=>"\xa9", 'b9'=>"\xb9", 'c9'=>"\xc9", 'd9'=>"\xd9", 'e9'=>"\xe9", 'f9'=>"\xf9",
            '8a'=>"\x8a", '9a'=>"\x9a", 'aa'=>"\xaa", 'ba'=>"\xba", 'ca'=>"\xca", 'da'=>"\xda", 'ea'=>"\xea", 'fa'=>"\xfa",
            '8b'=>"\x8b", '9b'=>"\x9b", 'ab'=>"\xab", 'bb'=>"\xbb", 'cb'=>"\xcb", 'db'=>"\xdb", 'eb'=>"\xeb", 'fb'=>"\xfb",
            '8c'=>"\x8c", '9c'=>"\x9c", 'ac'=>"\xac", 'bc'=>"\xbc", 'cc'=>"\xcc", 'dc'=>"\xdc", 'ec'=>"\xec", 'fc'=>"\xfc",
            '8d'=>"\x8d", '9d'=>"\x9d", 'ad'=>"\xad", 'bd'=>"\xbd", 'cd'=>"\xcd", 'dd'=>"\xdd", 'ed'=>"\xed", 'fd'=>"\xfd",
            '8e'=>"\x8e", '9e'=>"\x9e", 'ae'=>"\xae", 'be'=>"\xbe", 'ce'=>"\xce", 'de'=>"\xde", 'ee'=>"\xee", 'fe'=>"\xfe",
            '8f'=>"\x8f", '9f'=>"\x9f", 'af'=>"\xaf", 'bf'=>"\xbf", 'cf'=>"\xcf", 'df'=>"\xdf", 'ef'=>"\xef", 'ff'=>"\xff",
        );

        $strlen = strlen($str);

        if ($strlen % 2 !== 0) {
            user_error('Hexadecimal input string must have an even length', E_USER_WARNING);
            return false;
        }

        if (strspn($str, '0123456789ABCDEFabcdef') !== $strlen) {
            return false;
        }

        return strtr(strtolower($str), $map);
    }
}

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

class GEOSTest
{
    static public function run()
    {
        $instance = new static();

        foreach (get_class_methods($instance) as $method) {
            if (strpos($method, 'test') === 0) {
                $class = get_class($instance);

                try {
                    $instance->$method();
                    print "{$class}->{$method}\tOK" . PHP_EOL;
                } catch (Exception $e) {
                    print "{$class}->{$method}\tERROR:" . PHP_EOL;
                    print $e->getMessage() . "\n";
                    debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
                    throw $e;
                }
            }
        }
    }

    public function assertContains($expected, $actual)
    {
        if (strpos($actual, $expected) === false) {
            throw new Exception("Expected '{$expected}' to contain '{$actual}'.");
        }
    }

    public function assertEquals($expected, $actual)
    {
        if ($actual != $expected) {
            throw new Exception("Expected {$expected} to equal {$actual}.");
        }
    }

    public function assertNull($actual)
    {
        if (!is_null($actual)) {
            throw new Exception("Expected null.");
        }
    }

    public function assertNotNull($actual)
    {
        if (is_null($actual)) {
            throw new Exception("Expected not null.");
        }
    }

    public function assertTrue($expected)
    {
        if ($expected !== true) {
            throw new Exception("Expected true");
        }
    }

    public function assertFalse($expected)
    {
        if ($expected !== false) {
            throw new Exception("Expected false");
        }
    }

    public function assertType($expectedType, $value)
    {
        $validType = false;

        switch ($expectedType) {
            case 'array':
                $validType = is_array($value);
        }

        if (!$validType) {
            throw new Exception("Expected type '{$expectedType}.'");
        }
    }
}
PK��
[�~����001_Geometry.phptnu�[���--TEST--
Geometry tests
--SKIPIF--
<?php if (!extension_loaded('geos')) { print "geos extension not loaded\n"; exit(1); } ?>
--FILE--
<?php

require dirname(__FILE__).'/TestHelper.php';

class GeometryTest extends GEOSTest
{
    public function testGeometry_serialization()
    {
        $reader = new GEOSWKTReader();

        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setTrim')) {
            $writer->setTrim(TRUE);
        }

        if (method_exists("GEOSWKTWriter", 'setOutputDimension')) {
            $writer->setOutputDimension(3);
        }

        $g = $reader->read('POINT(6 7 8)');
        $g->setSRID(54);

        $a = array('geom' => $g, 'name' => 'test geometry');
        $srl = serialize($a);
        $a2 = unserialize($srl);

        $this->assertEquals('POINT Z (6 7 8)', $writer->write($a['geom']));

    }

    public function testGeometry_project()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(1 2)');
        $g2 = $reader->read('POINT(3 4)');

        /* The method only accept lineal geometries */
        try {
            $prj = $g->project($g2);
            $this->assertTrue(FALSE); # this is just to fail if we get here
        } catch (Exception $e) {
            $this->assertContains('lineal', $e->getMessage());
        }

        $g = $reader->read('LINESTRING(0 0, 10 0)');

        $g2 = $reader->read('POINT(0 0)');
        $prj = $g->project($g2);
        $this->assertEquals(0, $prj);
        $prj = $g->project($g2, TRUE);
        $this->assertEquals(0, $prj);

        $g2 = $reader->read('POINT(10 0)');
        $prj = $g->project($g2);
        $this->assertEquals(10, $prj);
        $prj = $g->project($g2, TRUE);
        $this->assertEquals(1, $prj);

        $g2 = $reader->read('POINT(5 0)');
        $prj = $g->project($g2);
        $this->assertEquals(5, $prj);
        $prj = $g->project($g2, TRUE);
        $this->assertEquals(0.5, $prj);

        $g = $reader->read('MULTILINESTRING((0 0, 10 0),(20 10, 20 20))');

        $g2 = $reader->read('POINT(20 0)');
        $prj = $g->project($g2);
        $this->assertEquals(10, $prj);
        $prj = $g->project($g2, TRUE);
        $this->assertEquals(0.5, $prj);

        $g2 = $reader->read('POINT(20 5)');
        $prj = $g->project($g2);
        $this->assertEquals(10, $prj);
        $prj = $g->project($g2, TRUE);
        $this->assertEquals(0.5, $prj);


    }

    public function testGeometry_interpolate()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setTrim')) {
            $writer->setTrim(TRUE);
        }

        /* The method only accept LineString geometries */
        $g = $reader->read('POINT(1 2)');
        try {
            $prj = $g->interpolate(0);
            $this->assertTrue(FALSE); # this is just to fail if we get here
        } catch (Exception $e) {
            $this->assertContains('LineString', $e->getMessage());
        }

        $g = $reader->read('LINESTRING(0 0, 10 0)');

        $prj = $g->interpolate(0);
        $this->assertNotNull($prj);
        $this->assertEquals('POINT (0 0)', $writer->write($prj));
        $prj = $g->interpolate(0, TRUE);
        $this->assertNotNull($prj);
        $this->assertEquals('POINT (0 0)', $writer->write($prj));

        $prj = $g->interpolate(5);
        $this->assertNotNull($prj);
        $this->assertEquals('POINT (5 0)', $writer->write($prj));
        $prj = $g->interpolate(0.5, TRUE);
        $this->assertNotNull($prj);
        $this->assertEquals('POINT (5 0)', $writer->write($prj));

        /* return closest on longer distance */
        $prj = $g->interpolate(20);
        $this->assertNotNull($prj);
        $this->assertEquals('POINT (10 0)', $writer->write($prj));
        $prj = $g->interpolate(2, TRUE);
        $this->assertNotNull($prj);
        $this->assertEquals('POINT (10 0)', $writer->write($prj));

    }

    public function testGeometry_buffer()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $b = $g->buffer(0);
        $this->assertEquals('POLYGON EMPTY', $writer->write($b));

        $b = $g->buffer(10);
        $this->assertEquals('POLYGON ((10 0, 10 -2, 9 -4, 8 -6, 7 -7, 6 -8, 4 -9, 2 -10, 0 -10, -2 -10, -4 -9, -6 -8, -7 -7, -8 -6, -9 -4, -10 -2, -10 -0, -10 2, -9 4, -8 6, -7 7, -6 8, -4 9, -2 10, -0 10, 2 10, 4 9, 6 8, 7 7, 8 6, 9 4, 10 2, 10 0))', $writer->write($b));

        # One segment per quadrant
        $b = $g->buffer(10, array('quad_segs' => 1));
        $this->assertEquals('POLYGON ((10 0, 0 -10, -10 -0, -0 10, 10 0))', $writer->write($b));

        /* End cap styles */

        $g = $reader->read('LINESTRING(0 0, 100 0)');

        $b = $g->buffer(10, array(
            'quad_segs' => 1,
            'endcap' => GEOSBUF_CAP_ROUND
        ));
        $this->assertEquals('POLYGON ((100 10, 110 0, 100 -10, 0 -10, -10 0, 0 10, 100 10))', $writer->write($b));

        $b = $g->buffer(10, array(
            'quad_segs' => 1,
            'endcap' => GEOSBUF_CAP_FLAT
        ));
        $this->assertEquals('POLYGON ((100 10, 100 -10, 0 -10, 0 10, 100 10))', $writer->write($b));

        $b = $g->buffer(10, array(
            'quad_segs' => 1,
            'endcap' => GEOSBUF_CAP_SQUARE
        ));
        $this->assertEquals('POLYGON ((100 10, 110 10, 110 -10, 0 -10, -10 -10, -10 10, 100 10))', $writer->write($b));

        /* Join styles */

        $g = $reader->read('LINESTRING(0 0, 100 0, 100 100)');

        $b = $g->buffer(10, array(
            'quad_segs' => 2,
            'join' => GEOSBUF_JOIN_ROUND
        ));
        $this->assertEquals('POLYGON ((90 10, 90 100, 93 107, 100 110, 107 107, 110 100, 110 0, 107 -7, 100 -10, 0 -10, -7 -7, -10 0, -7 7, 0 10, 90 10))', $writer->write($b));

        $b = $g->buffer(10, array(
            'quad_segs' => 2,
            'join' => GEOSBUF_JOIN_BEVEL
        ));
        $this->assertEquals('POLYGON ((90 10, 90 100, 93 107, 100 110, 107 107, 110 100, 110 0, 100 -10, 0 -10, -7 -7, -10 0, -7 7, 0 10, 90 10))', $writer->write($b));

        $b = $g->buffer(10, array(
            'quad_segs' => 2,
            'join' => GEOSBUF_JOIN_MITRE
        ));
        $this->assertEquals('POLYGON ((90 10, 90 100, 93 107, 100 110, 107 107, 110 100, 110 -10, 0 -10, -7 -7, -10 0, -7 7, 0 10, 90 10))', $writer->write($b));

        /* Check that elements of the passed style array are not
         * type-converted (buffer op will need to type-convert
         * internally)
         */
        $ary = array('a' => 1);

        $myStyle = array(
            'quad_segs' => "a string",
            'join' => "1",
            'endcap' => $ary,
            'mitre_limit' => 2 /* an int.. */
        );
        $this->assertEquals('string', gettype($myStyle['quad_segs']));
        $this->assertEquals('string', gettype($myStyle['join']));
        $this->assertEquals('array', gettype($myStyle['endcap']));
        $this->assertEquals('integer', gettype($myStyle['mitre_limit']));
        $b = $g->buffer(10, $myStyle);
        $this->assertEquals('string', gettype($myStyle['quad_segs']));
        $this->assertEquals('string', gettype($myStyle['join']));
        $this->assertEquals('array', gettype($myStyle['endcap']));
        $this->assertEquals('integer', gettype($myStyle['mitre_limit']));

        /* Single-sided buffering */

        $g = $reader->read('LINESTRING(0 0, 100 0)');

        $b = $g->buffer(10, array(
            'single_sided' => true
        ));
        $this->assertEquals('POLYGON ((100 0, 0 0, 0 10, 100 10, 100 0))', $writer->write($b));

        $b = $g->buffer(-10, array(
            'single_sided' => true
        ));
        $this->assertEquals('POLYGON ((0 0, 100 0, 100 -10, 0 -10, 0 0))', $writer->write($b));
    }

    public function testGeometry_offsetCurve()
    {
        if (!method_exists("GEOSGeometry", 'offsetCurve')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        $writer->setRoundingPrecision(0);

        /* Join styles */

        $g = $reader->read('LINESTRING(0 0, 100 0, 100 100)');

        /* left, round join */
        $b = $g->offsetCurve(10, array(
            'quad_segs' => 2,
            'join' => GEOSBUF_JOIN_ROUND
        ));
        $this->assertEquals('LINESTRING (0 10, 90 10, 90 100)', $writer->write($b));

        /* left, bevel join */
        $b = $g->offsetCurve(10, array(
            'quad_segs' => 2,
            'join' => GEOSBUF_JOIN_BEVEL
        ));
        $this->assertEquals('LINESTRING (0 10, 90 10, 90 100)', $writer->write($b));

          /* left, mitre join */
        $b = $g->offsetCurve(10, array(
            'quad_segs' => 2,
            'join' => GEOSBUF_JOIN_MITRE
        ));
        $this->assertEquals('LINESTRING (0 10, 90 10, 90 100)', $writer->write($b));
    }

    public function testGeometry_envelope()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $b = $g->envelope();
        $this->assertEquals('POINT (0 0)', $writer->write($b));

        $g = $reader->read('LINESTRING(0 0, 10 10)');
        $b = $g->envelope();
        $this->assertEquals('POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))', $writer->write($b));
    }

    public function testGeometry_intersection()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        /* POINT - POINT */
        $g = $reader->read('POINT(0 0)');
        $g2 = $reader->read('POINT(0 0)');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'POINT (0 0)', $writer->write($gi));

        /* POINT - LINE */
        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $g2 = $reader->read('POINT(5 0)');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'POINT (5 0)', $writer->write($gi));

        /* LINE - LINE */
        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'POINT (5 0)', $writer->write($gi));
        $g2 = $reader->read('LINESTRING(5 0, 20 0)');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'LINESTRING (5 0, 10 0)', $writer->write($gi));

        /* LINE - POLY */
        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'LINESTRING (5 0, 5 10)', $writer->write($gi));
        $g2 = $reader->read('LINESTRING(10 0, 20 0)');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'POINT (10 0)', $writer->write($gi));

        /* POLY - POLY */
        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
        $g2 = $reader->read('POLYGON((5 -5, 5 5, 15 5, 15 -5, 5 -5))');
        $gi = $g->intersection($g2);
        $this->assertTrue($gi->equals($reader->read('POLYGON ((10 5, 10 0, 5 0, 5 5, 10 5))')));
        $g2 = $reader->read('POLYGON((10 0, 20 0, 20 -5, 10 -5, 10 0))');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'POINT (10 0)', $writer->write($gi));
        $g2 = $reader->read('POLYGON((8 0, 20 0, 20 -5, 10 -5, 8 0))');
        $gi = $g->intersection($g2);
        $this->assertEquals( 'LINESTRING (8 0, 10 0)', $writer->write($gi));
    }

    public function testGeometry_clipByRect()
    {
        if (!method_exists("GEOSGeometry", 'clipByRect')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();
        $writer->setRoundingPrecision(0);

        /* POINT */
        $g = $reader->read('POINT(0 0)');
        $gi = $g->clipByRect(-1,-1,1,1);
        $this->assertEquals( 'POINT (0 0)', $writer->write($gi));
        $gi = $g->clipByRect(1,1,2,2);
        $this->assertEquals( 'GEOMETRYCOLLECTION EMPTY', $writer->write($gi));

        /* LINE */
        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $gi = $g->clipByRect(1,-1,2,1);
        $this->assertEquals( 'LINESTRING (1 0, 2 0)', $writer->write($gi));

        /* POLY */
        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
        $gi = $g->clipByRect(1,1,5,5);
        $this->assertEquals( 'POLYGON ((1 1, 1 5, 5 5, 5 1, 1 1))', $writer->write($gi));
        $gi = $g->clipByRect(-1,-1,5,5);
        $this->assertEquals( 'POLYGON ((0 0, 0 5, 5 5, 5 0, 0 0))', $writer->write($gi));
    }

    public function testGeometry_convexHull()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $b = $g->convexHull();
        $this->assertEquals('POINT (0 0)', $writer->write($b));

        $g = $reader->read('LINESTRING(0 0, 10 10)');
        $b = $g->convexHull();
        $this->assertEquals('LINESTRING (0 0, 10 10)', $writer->write($b));

        $g = $reader->read('POLYGON((0 0, 0 10, 5 5, 10 10, 10 0, 0 0))');
        $b = $g->convexHull();
        $this->assertEquals('POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))', $writer->write($b));
    }

    public function testGeometry_difference()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        /* LINE - POINT */
        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $g2 = $reader->read('POINT(5 0)');
        $gi = $g->difference($g2);
        $this->assertEquals('LINESTRING (0 0, 10 0)', $writer->write($gi));

        /* POINT - LINE */
        $g = $reader->read('POINT(5 0)');
        $g2 = $reader->read('LINESTRING(0 1, 10 1)');
        $gi = $g->difference($g2);
        $this->assertEquals( 'POINT (5 0)', $writer->write($gi));

        /* LINE - LINE */
        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
        $gi = $g->difference($g2);
        $this->assertEquals( 'MULTILINESTRING ((0 0, 5 0), (5 0, 10 0))', $writer->write($gi));
        $g2 = $reader->read('LINESTRING(5 0, 20 0)');
        $gi = $g->difference($g2);
        $this->assertEquals( 'LINESTRING (0 0, 5 0)', $writer->write($gi));

    }

    public function testGeometry_symdifference()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        /* LINE - POINT */
        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $g2 = $reader->read('POINT(5 0)');
        $gi = $g->symDifference($g2);
        $this->assertEquals('LINESTRING (0 0, 10 0)', $writer->write($gi));

        /* POINT - LINE */
        $g = $reader->read('POINT(5 0)');
        $g2 = $reader->read('LINESTRING(0 0, 10 0)');
        $gi = $g->symDifference($g2);
        $this->assertEquals( 'LINESTRING (0 0, 10 0)', $writer->write($gi));
        $g2 = $reader->read('LINESTRING(0 1, 10 1)');
        $gi = $g->symDifference($g2);
        $this->assertEquals('GEOMETRYCOLLECTION (POINT (5 0), LINESTRING (0 1, 10 1))', $writer->write($gi));
    }

    public function testGeometry_boundary()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $b = $g->boundary();
        $this->assertEquals('GEOMETRYCOLLECTION EMPTY', $writer->write($b));

        $g = $reader->read('LINESTRING(0 0, 10 10)');
        $b = $g->boundary();
        $this->assertEquals('MULTIPOINT (0 0, 10 10)', $writer->write($b));

        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),( 5 5, 5 6, 6 6, 6 5, 5 5))');
        $b = $g->boundary();
        $this->assertEquals('MULTILINESTRING ((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 5 6, 6 6, 6 5, 5 5))', $writer->write($b));
    }

    public function testGeometry_union()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        /* POINT - POINT */
        $g = $reader->read('POINT(0 0)');
        $g2 = $reader->read('POINT(0 0)');
        $gi = $g->union($g2);
        $this->assertEquals( 'POINT (0 0)', $writer->write($gi));
        $g2 = $reader->read('POINT(1 0)');
        $gi = $g->union($g2);
        $this->assertEquals( 'MULTIPOINT (0 0, 1 0)', $writer->write($gi));

        /* LINE - POINT */
        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $g2 = $reader->read('POINT(5 0)');
        $gi = $g->union($g2);
        $this->assertEquals('LINESTRING (0 0, 10 0)', $writer->write($gi));

        /* POINT - LINE */
        $g = $reader->read('POINT(5 0)');
        $g2 = $reader->read('LINESTRING(0 0, 10 0)');
        $gi = $g->union($g2);
        $this->assertEquals( 'LINESTRING (0 0, 10 0)', $writer->write($gi));
        $g2 = $reader->read('LINESTRING(0 1, 10 1)');
        $gi = $g->union($g2);
        $this->assertEquals('GEOMETRYCOLLECTION (POINT (5 0), LINESTRING (0 1, 10 1))', $writer->write($gi));
    }

    public function testGeometry_pointOnSurface()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $b = $g->pointOnSurface();
        $this->assertEquals('POINT (0 0)', $writer->write($b));

        $g = $reader->read('LINESTRING(0 0, 5 5, 10 10)');
        $b = $g->pointOnSurface();
        $this->assertEquals('POINT (5 5)', $writer->write($b));

        $g = $reader->read('POLYGON((0 0, 0 10, 5 5, 10 10, 10 0, 0 0))');
        $b = $g->pointOnSurface();
        $this->assertEquals('POINT (1 8)', $writer->write($b));
    }

    public function testGeometry_centroid()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $b = $g->centroid();
        $this->assertEquals('POINT (0 0)', $writer->write($b));

        $g = $reader->read('LINESTRING(0 0, 10 10)');
        $b = $g->centroid();
        $this->assertEquals('POINT (5 5)', $writer->write($b));

        $g = $reader->read('POLYGON((0 0, 0 10, 5 5, 10 10, 10 0, 0 0))');
        $b = $g->centroid();
        $this->assertEquals('POINT (5 4)', $writer->write($b));
    }

    public function testGeometry_relate()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $g2 = $reader->read('POINT(0 0)');
        $ret = $g->relate($g2);
        $this->assertEquals('0FFFFFFF2', $ret);
        $ret = $g->relate($g2, '0FFFFFFF2');
        $this->assertEquals(TRUE, $ret);
        $ret = $g->relate($g2, '0*******T');
        $this->assertEquals(TRUE, $ret);
        $ret = $g->relate($g2, '0*******1');
        $this->assertEquals(FALSE, $ret);

        $g = $reader->read('POINT(0 0)');
        $g2 = $reader->read('POINT(1 0)');
        $ret = $g->relate($g2);
        $this->assertEquals('FF0FFF0F2', $ret);
        $ret = $g->relate($g2, 'FF0FFF0F2');
        $this->assertEquals(TRUE, $ret);
        $ret = $g->relate($g2, 'F*******2');
        $this->assertEquals(TRUE, $ret);
        $ret = $g->relate($g2, 'T*******2');
        $this->assertEquals(FALSE, $ret);

        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
        $g2 = $reader->read('POINT(1 0)');
        $ret = $g->relate($g2);
        $this->assertEquals('FF20F1FF2', $ret);
        $ret = $g->relate($g2, 'FF20F1FF2');
        $this->assertEquals(TRUE, $ret);
        $ret = $g->relate($g2, 'F****T**T');
        $this->assertEquals(TRUE, $ret);
        $ret = $g->relate($g2, 'T*******2');
        $this->assertEquals(FALSE, $ret);

    }

    public function testGeometry_relateBoundaryNodeRule()
    {
        if (!method_exists("GEOSGeometry", 'relateBoundaryNodeRule')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('LINESTRING(0 0, 2 4, 5 5, 0 0)');
        $g2 = $reader->read('POINT(0 0)');

        $ret = $g->relateBoundaryNodeRule($g2, GEOSRELATE_BNR_OGC);
        $this->assertEquals('0F1FFFFF2', $ret);

        $ret = $g->relateBoundaryNodeRule($g2, GEOSRELATE_BNR_ENDPOINT);
        $this->assertEquals('FF10FFFF2', $ret);

    }

    public function testGeometry_polygonize()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('GEOMETRYCOLLECTION(
            LINESTRING(0 0, 10 10),
            LINESTRING(185 221, 100 100),
            LINESTRING(185 221, 88 275, 180 316),
            LINESTRING(185 221, 292 281, 180 316),
            LINESTRING(189 98, 83 187, 185 221),
            LINESTRING(189 98, 325 168, 185 221))
            )');

        $g2 = $reader->read('POINT(0 0)');

        $ret = GEOSPolygonize($g);

        $this->assertEquals('array', gettype($ret));
        $this->assertEquals('array', gettype($ret['rings']));
        $this->assertEquals('array', gettype($ret['cut_edges']));
        $this->assertEquals('array', gettype($ret['dangles']));
        $this->assertEquals('array', gettype($ret['invalid_rings']));

        $this->assertEquals(2, count($ret['rings']));
        $this->assertEquals('POLYGON ((185 221, 88 275, 180 316, 292 281, 185 221))', # JTS-confirmed!
            $writer->write($ret['rings'][0]));
        $this->assertEquals('POLYGON ((189 98, 83 187, 185 221, 325 168, 189 98))', # JTS-confirmed !
            $writer->write($ret['rings'][1]));

        $this->assertEquals(0, count($ret['cut_edges']));

        $this->assertEquals(0, count($ret['invalid_rings']));

        /*
         * FIXME: the duplicated dangle (0 0, 10 10) is unexpected
         */

        $this->assertEquals(2, count($ret['dangles']));
        $this->assertEquals('LINESTRING (185 221, 100 100)', # JTS-confirmed !
            $writer->write($ret['dangles'][0]));
        $this->assertEquals('LINESTRING (0 0, 10 10)', # JTS-confirmed !
            $writer->write($ret['dangles'][1]));


        ###########################################################

        $g = $g->union($g2); /* Now make sure linestrings are noded */

        $ret = GEOSPolygonize($g);

        $this->assertEquals('array', gettype($ret));
        $this->assertEquals('array', gettype($ret['rings']));
        $this->assertEquals('array', gettype($ret['cut_edges']));
        $this->assertEquals('array', gettype($ret['dangles']));
        $this->assertEquals('array', gettype($ret['invalid_rings']));

        $this->assertEquals(2, count($ret['dangles']));
        $this->assertEquals('LINESTRING (132 146, 100 100)', $writer->write($ret['dangles'][0]));
        $this->assertEquals('LINESTRING (0 0, 10 10)', $writer->write($ret['dangles'][1]));

        $this->assertEquals(0, count($ret['invalid_rings']));

    // TODO: test a polygonize run with cut lines and invalid_rings

    }

    public function testGeometry_lineMerge()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('MULTILINESTRING(
            (0 0, 10 10),
            (10 10, 10 0),
            (5 0, 10 0),
            (5 -5, 5 0)
            )');

        $ret = GEOSLineMerge($g);

        $this->assertEquals('array', gettype($ret));
        $this->assertEquals('1', count($ret));

        $this->assertEquals('LINESTRING (0 0, 10 10, 10 0, 5 0, 5 -5)', $writer->write($ret[0]));

    }

    public function testGeometry_sharedPaths()
    {
        if (!function_exists('GEOSSharedPaths')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        /* LINE - LINE */
        $g1 = $reader->read('LINESTRING(0 0, 50 0)');
        $g2 = $reader->read('MULTILINESTRING((5 0, 15 0),(40 0, 30 0))');
        $gs = GEOSSharedPaths($g1, $g2);
        $this->assertEquals('GEOMETRYCOLLECTION (MULTILINESTRING ((5 0, 15 0)), MULTILINESTRING ((30 0, 40 0)))', $writer->write($gs));
    }

    public function testGeometry_simplify()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('LINESTRING(0 0, 3 4, 5 10, 10 0, 10 9, 5 11, 0 9)');
        $gs = $g->simplify(2);
        $this->assertEquals( 'LINESTRING (0 0, 5 10, 10 0, 10 9, 0 9)', $writer->write($gs));
        $gs = $g->simplify(2, TRUE);
        $this->assertEquals( 'LINESTRING (0 0, 5 10, 10 0, 10 9, 5 11, 0 9)', $writer->write($gs));
    }

    public function testGeometry_extractUniquePoints()
    {
        if (!method_exists("GEOSGeometry", 'extractUniquePoints')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read(
    'GEOMETRYCOLLECTION (
        MULTIPOLYGON (
            ((0 0, 1 0, 1 1, 0 1, 0 0)),
            ((10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11))
        ),
        POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)),
        MULTILINESTRING ((0 0, 2 3), (10 10, 3 4)),
        LINESTRING (0 0, 2 3),
        MULTIPOINT (0 0, 2 3),
        POINT (9 0),
        POINT(1 0)),
        LINESTRING EMPTY
    ');

        $gs = $g->extractUniquePoints();
        if ( ! $gs ) RETURN_NULL(); /* should get an exception before */

        $this->assertEquals('MULTIPOINT (0 0, 1 0, 1 1, 0 1, 10 10, 10 14, 14 14, 14 10, 11 11, 11 12, 12 12, 12 11, 2 3, 3 4, 9 0)', $writer->write($gs));
    }

    public function testGeometry_relationalOps()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g1 = $reader->read('POINT(0 0)');
        $g2 = $reader->read('POINT(0 0)');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertFalse( $g1->touches($g2) ); /* no bounds, can't touch */
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertTrue( $g1->within($g2) );
        $this->assertTrue( $g1->contains($g2) );
        $this->assertFalse( $g1->overlaps($g2) );
        $this->assertTrue( $g1->equals($g2) );
        $this->assertTrue( $g1->equalsExact($g2) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertTrue( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertTrue( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('POINT(0 0)');
        $g2 = $reader->read('LINESTRING(0 0, 10 0)');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertTrue( $g1->touches($g2) );
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertFalse( $g1->within($g2) );
        $this->assertFalse( $g1->contains($g2) );
        $this->assertFalse( $g1->overlaps($g2) );
        $this->assertFalse( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 10) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertFalse( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertTrue( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('POINT(5 0)');
        $g2 = $reader->read('LINESTRING(0 0, 10 0)');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertFalse( $g1->touches($g2) );
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertTrue( $g1->within($g2) );
        $this->assertFalse( $g1->contains($g2) );
        $this->assertFalse( $g1->overlaps($g2) );
        $this->assertFalse( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 10) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertFalse( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertTrue( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('LINESTRING(5 -5, 5 5)');
        $g2 = $reader->read('LINESTRING(0 0, 10 0)');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertFalse( $g1->touches($g2) );
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertTrue( $g1->crosses($g2) );
        $this->assertFalse( $g1->within($g2) );
        $this->assertFalse( $g1->contains($g2) );
        $this->assertFalse( $g1->overlaps($g2) );
        $this->assertFalse( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 1) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertFalse( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertFalse( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('LINESTRING(5 0, 15 0)');
        $g2 = $reader->read('LINESTRING(0 0, 10 0)');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertFalse( $g1->touches($g2) );
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertFalse( $g1->within($g2) );
        $this->assertFalse( $g1->contains($g2) );
        $this->assertTrue( $g1->overlaps($g2) );
        $this->assertFalse( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 1) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertFalse( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertFalse( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('LINESTRING(0 0, 5 0, 10 0)');
        $g2 = $reader->read('LINESTRING(0 0, 10 0)');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertFalse( $g1->touches($g2) );
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertTrue( $g1->within($g2) );
        $this->assertTrue( $g1->contains($g2) );
        $this->assertFalse( $g1->overlaps($g2) );
        $this->assertTrue( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 1) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertTrue( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertTrue( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
        $g2 = $reader->read('POLYGON((5 -5, 5 5, 15 5, 15 -5, 5 -5))');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertFalse( $g1->touches($g2) );
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertFalse( $g1->within($g2) );
        $this->assertFalse( $g1->contains($g2) );
        $this->assertTrue( $g1->overlaps($g2) );
        $this->assertFalse( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 1) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertFalse( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertFalse( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
        $g2 = $reader->read('POINT(15 15)');

        $this->assertTrue( $g1->disjoint($g2) );
        $this->assertFalse( $g1->touches($g2) );
        $this->assertFalse( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertFalse( $g1->within($g2) );
        $this->assertFalse( $g1->contains($g2) );
        $this->assertFalse( $g1->overlaps($g2) );
        $this->assertFalse( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 1) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertFalse( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertFalse( $g1->coveredBy($g2) );
        }

        $g1 = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
        $g2 = $reader->read('POINT(5 0)');

        $this->assertFalse( $g1->disjoint($g2) );
        $this->assertTrue( $g1->touches($g2) );
        $this->assertTrue( $g1->intersects($g2) );
        $this->assertFalse( $g1->crosses($g2) );
        $this->assertFalse( $g1->within($g2) );
        $this->assertFalse( $g1->contains($g2) );
        $this->assertFalse( $g1->overlaps($g2) );
        $this->assertFalse( $g1->equals($g2) );
        $this->assertFalse( $g1->equalsExact($g2, 1) );

        if (method_exists("GEOSGeometry", 'covers')) {
            $this->assertTrue( $g1->covers($g2) );
        }

        if (method_exists("GEOSGeometry", 'coveredBy')) {
            $this->assertFalse( $g1->coveredBy($g2) );
        }

    }

    public function testGeometry_isEmpty()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g1 = $reader->read('POINT(0 0)');
        $this->assertFalse( $g1->isEmpty() );

        $g1 = $reader->read('POINT EMPTY');
        $this->assertTrue( $g1->isEmpty() );

        $g1 = $reader->read('LINESTRING(0 0, 10 0)');
        $this->assertFalse( $g1->isEmpty() );

        $g1 = $reader->read('LINESTRING EMPTY');
        $this->assertTrue( $g1->isEmpty() );

        $g1 = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 0))');
        $this->assertFalse( $g1->isEmpty() );

        $g1 = $reader->read('POLYGON EMPTY');
        $this->assertTrue( $g1->isEmpty() );

        $g1 = $reader->read('GEOMETRYCOLLECTION(POINT(0 0))');
        $this->assertFalse( $g1->isEmpty() );

        $g1 = $reader->read('GEOMETRYCOLLECTION EMPTY');
        $this->assertTrue( $g1->isEmpty() );
    }

    public function testGeometry_checkValidity()
    {
        if (!method_exists("GEOSGeometry", 'checkValidity')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POINT(0 0)');
        $val = $g->checkValidity();
        $this->assertType( 'array', $val );
        $this->assertTrue( $val['valid'] );
        $this->assertFalse( isset($val['reason']) );
        $this->assertFalse( isset($val['location']) );

        $g = $reader->read('POINT(0 NaN)');
        $val = $g->checkValidity();
        $this->assertType( 'array', $val );
        $this->assertFalse( $val['valid'] );
        $this->assertEquals( 'Invalid Coordinate', $val['reason'] );
        $this->assertEquals( 'POINT (0 nan)',
            $writer->write($val['location']) );

        $g = $reader->read(
           'POLYGON((0 0, -10 10, 10 10, 0 0, 4 5, -4 5, 0 0)))'
        );
        $val = $g->checkValidity();
        $this->assertType( 'array', $val );
        $this->assertFalse( $val['valid'] );
        $this->assertEquals( 'Ring Self-intersection', $val['reason'] );
        $this->assertEquals( 'POINT (0 0)',
            $writer->write($val['location']) );

        $g = $reader->read(
           'POLYGON((0 0, -10 10, 10 10, 0 0, 4 5, -4 5, 0 0)))'
        );
        $flags = GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE;
        $val = $g->checkValidity($flags);
        $this->assertType( 'array', $val );
        $this->assertTrue( $val['valid'] );
        $this->assertFalse( isset($val['reason']) );
        $this->assertFalse( isset($val['location']) );
    }

    public function testGeometry_isSimple()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertTrue( $g->isSimple() );

        $g = $reader->read('LINESTRING(0 0, 10 0)');
        $this->assertTrue( $g->isSimple() );

        $g = $reader->read('LINESTRING(0 0, 10 0, 5 5, 5 -5)');
        $this->assertFalse( $g->isSimple() );
    }

    public function testGeometry_isRing()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertFalse( $g->isRing() );

        $g = $reader->read('LINESTRING(0 0, 10 0, 5 5, 5 -5)');
        $this->assertFalse( $g->isRing() );

        $g = $reader->read('LINESTRING(0 0, 10 0, 5 5, 0 0)');
        $this->assertTrue( $g->isRing() );
    }

    public function testGeometry_hasZ()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertFalse( $g->hasZ() );

        $g = $reader->read('POINT(0 0 0)');
        $this->assertTrue( $g->hasZ() );

    }

    public function testGeometry_isClosed()
    {
        if (!method_exists("GEOSGeometry", 'isClosed')) {
            return;
        }

        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        try  {
            $this->assertFalse( $g->isClosed() );
            $this->assertTrue(FALSE);
        } catch (Exception $e) {
            $this->assertContains('LineString', $e->getMessage());
        }

        $g = $reader->read('LINESTRING(0 0, 10 0, 5 5, 5 -5)');
        $this->assertFalse( $g->isClosed() );

        $g = $reader->read('LINESTRING(0 0, 10 0, 5 5, 0 0)');
        $this->assertTrue( $g->isClosed() );
    }

    public function testGeometry_type()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertEquals('Point', $g->typeName());
        $this->assertEquals(GEOS_POINT, $g->typeId());

        $g = $reader->read('MULTIPOINT (0 1, 2 3)');
        $this->assertEquals('MultiPoint', $g->typeName());
        $this->assertEquals(GEOS_MULTIPOINT, $g->typeId());

        $g = $reader->read('LINESTRING (0 0, 2 3)');
        $this->assertEquals('LineString', $g->typeName());
        $this->assertEquals(GEOS_LINESTRING, $g->typeId());

        $g = $reader->read('MULTILINESTRING ((0 1, 2 3), (10 10, 3 4))');
        $this->assertEquals('MultiLineString', $g->typeName());
        $this->assertEquals(GEOS_MULTILINESTRING, $g->typeId());

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertEquals('Polygon', $g->typeName());
        $this->assertEquals(GEOS_POLYGON, $g->typeId());

        $g = $reader->read('MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((10 10, 10 14, 14 14, 14 10, 10 10), (11 11, 11 12, 12 12, 12 11, 11 11)))');
        $this->assertEquals('MultiPolygon', $g->typeName());
        $this->assertEquals(GEOS_MULTIPOLYGON, $g->typeId());

        $g = $reader->read('GEOMETRYCOLLECTION (MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((10 10, 10 14, 14 14, 14 10, 10 10), (11 11, 11 12, 12 12, 12 11, 11 11))), POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)), MULTILINESTRING ((0 0, 2 3), (10 10, 3 4)), LINESTRING (0 0, 2 3), MULTIPOINT (0 0, 2 3), POINT (9 0))');
        $this->assertEquals('GeometryCollection', $g->typeName());
        $this->assertEquals(GEOS_GEOMETRYCOLLECTION, $g->typeId());
    }

    public function testGeometry_srid()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertEquals(0, $g->getSRID());
        $g->setSRID(2);
        $this->assertEquals(2, $g->getSRID());
    }

    public function testGeometry_numGeometries()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertEquals(1, $g->numGeometries());

        $g = $reader->read('MULTIPOINT (0 1, 2 3)');
        $this->assertEquals(2, $g->numGeometries());

        $g = $reader->read('LINESTRING (0 0, 2 3)');
        $this->assertEquals(1, $g->numGeometries());

        $g = $reader->read('MULTILINESTRING ((0 1, 2 3), (10 10, 3 4))');
        $this->assertEquals(2, $g->numGeometries());

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertEquals(1, $g->numGeometries());

        $g = $reader->read('MULTIPOLYGON (
            ((0 0, 1 0, 1 1, 0 1, 0 0)),
            ((10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11)))');
        $this->assertEquals(2, $g->numGeometries());

        $g = $reader->read('GEOMETRYCOLLECTION (
            MULTIPOLYGON (
                ((0 0, 1 0, 1 1, 0 1, 0 0)),
                ((10 10, 10 14, 14 14, 14 10, 10 10),
                    (11 11, 11 12, 12 12, 12 11, 11 11))
            ),
            POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)),
            MULTILINESTRING ((0 0, 2 3), (10 10, 3 4)),
            LINESTRING (0 0, 2 3),
            MULTIPOINT (0 0, 2 3),
            POINT (9 0))');
        $this->assertEquals(6, $g->numGeometries());
    }

    public function testGeometry_geometryN()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $c = $g->geometryN(0);
        $this->assertTrue( $g->equalsExact($c) );

        $g = $reader->read('MULTIPOINT (0 1, 2 3)');
        $this->assertEquals($reader->read('POINT(0 1)'), $g->geometryN(0));
        $this->assertEquals($reader->read('POINT(2 3)'), $g->geometryN(1));

        $c = $g->geometryN(2);
        $this->assertNull( $c );

    }

    public function testGeometry_numInteriorRings()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertEquals(0, $g->numInteriorRings());

        $g = $reader->read('POLYGON (
            (10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11))');
        $this->assertEquals(1, $g->numInteriorRings());

        $g = $reader->read('POLYGON (
            (10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11),
                (13 11, 13 12, 13.5 12, 13.5 11, 13 11))');
        $this->assertEquals(2, $g->numInteriorRings());

        $g = $reader->read('POINT (0 0)');
        try {
            $g->numInteriorRings();
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'Polygon', $e->getMessage() );
        }

    }

    public function testGeometry_numPoints()
    {
        if (!method_exists("GEOSGeometry", 'numPoints')) {
            return;
        }

        $reader = new GEOSWKTReader();

        $g = $reader->read('LINESTRING (0 0, 1 0, 1 1, 0 1)');
        $this->assertEquals(4, $g->numPoints());

        $g = $reader->read('POINT (0 0)');
        try {
            $g->numPoints();
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'LineString', $e->getMessage() );
        }

    }

    public function testGeometry_getXY()
    {
        if (!method_exists("GEOSGeometry", 'getX')) {
            return;
        }

        if (!method_exists("GEOSGeometry", 'getY')) {
            return;
        }

        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT (1 2)');
        $this->assertEquals(1, $g->getX());
        $this->assertEquals(2, $g->getY());

        $g = $reader->read('LINESTRING (0 0, 1 1)');
        try {
            $g->getX();
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'Point', $e->getMessage() );
        }

        try {
            $g->getY();
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'Point', $e->getMessage() );
        }

    }

    public function testGeometry_interiorRingN()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POLYGON (
            (10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11))');
        $r = $g->interiorRingN(0);
        $this->assertEquals('LINEARRING (11 11, 11 12, 12 12, 12 11, 11 11)',
            $writer->write($r) );

        $g = $reader->read('POLYGON (
            (10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11),
                (13 11, 13 12, 13.5 12, 13.5 11, 13 11))');
        $r = $g->interiorRingN(0);
        $this->assertEquals('LINEARRING (11 11, 11 12, 12 12, 12 11, 11 11)',
            $writer->write($r) );
        $r = $g->interiorRingN(1);
        $this->assertEquals('LINEARRING (13 11, 13 12, 14 12, 14 11, 13 11)',
            $writer->write($r) );

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertNull($g->interiorRingN(0));

        $g = $reader->read('POINT (0 0)');
        try {
            $g->interiorRingN(0);
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'Polygon', $e->getMessage() );
        }

    }

    public function testGeometry_exteriorRing()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POLYGON (
            (10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11))');
        $r = $g->exteriorRing();
        $this->assertEquals('LINEARRING (10 10, 10 14, 14 14, 14 10, 10 10)',
            $writer->write($r) );

        $g = $reader->read('POINT (0 0)');
        try {
            $g->exteriorRing(0);
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'Polygon', $e->getMessage() );
        }

    }

    public function testGeometry_numCoordinates()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertEquals(1, $g->numCoordinates());

        $g = $reader->read('MULTIPOINT (0 1, 2 3)');
        $this->assertEquals(2, $g->numCoordinates());

        $g = $reader->read('LINESTRING (0 0, 2 3)');
        $this->assertEquals(2, $g->numCoordinates());

        $g = $reader->read('MULTILINESTRING ((0 1, 2 3), (10 10, 3 4))');
        $this->assertEquals(4, $g->numCoordinates());

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertEquals(5, $g->numCoordinates());

        $g = $reader->read('MULTIPOLYGON (
            ((0 0, 1 0, 1 1, 0 1, 0 0)),
            ((10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11)))');
        $this->assertEquals(15, $g->numCoordinates());

        $g = $reader->read('GEOMETRYCOLLECTION (
            MULTIPOLYGON (
                ((0 0, 1 0, 1 1, 0 1, 0 0)),
                ((10 10, 10 14, 14 14, 14 10, 10 10),
                    (11 11, 11 12, 12 12, 12 11, 11 11))
            ),
            POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)),
            MULTILINESTRING ((0 0, 2 3), (10 10, 3 4)),
            LINESTRING (0 0, 2 3),
            MULTIPOINT (0 0, 2 3),
            POINT (9 0))');
        $this->assertEquals(29, $g->numCoordinates());
    }

    public function testGeometry_dimension()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertEquals(0, $g->dimension());

        $g = $reader->read('MULTIPOINT (0 1, 2 3)');
        $this->assertEquals(0, $g->dimension());

        $g = $reader->read('LINESTRING (0 0, 2 3)');
        $this->assertEquals(1, $g->dimension());

        $g = $reader->read('MULTILINESTRING ((0 1, 2 3), (10 10, 3 4))');
        $this->assertEquals(1, $g->dimension());

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertEquals(2, $g->dimension());

        $g = $reader->read('MULTIPOLYGON (
            ((0 0, 1 0, 1 1, 0 1, 0 0)),
            ((10 10, 10 14, 14 14, 14 10, 10 10),
                (11 11, 11 12, 12 12, 12 11, 11 11)))');
        $this->assertEquals(2, $g->dimension());

        $g = $reader->read('GEOMETRYCOLLECTION (
            MULTIPOLYGON (
                ((0 0, 1 0, 1 1, 0 1, 0 0)),
                ((10 10, 10 14, 14 14, 14 10, 10 10),
                    (11 11, 11 12, 12 12, 12 11, 11 11))
            ),
            POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)),
            MULTILINESTRING ((0 0, 2 3), (10 10, 3 4)),
            LINESTRING (0 0, 2 3),
            MULTIPOINT (0 0, 2 3),
            POINT (9 0))');
        $this->assertEquals(2, $g->dimension());
    }

    public function testGeometry_coordinateDimension()
    {
        if (!method_exists("GEOSGeometry", 'coordinateDimension')) {
            return;
        }

        $reader = new GEOSWKTReader();

        $g = $reader->read('POINT(0 0)');
        $this->assertEquals(2, $g->coordinateDimension());

        $g = $reader->read('POINT(0 0 0)');
        $this->assertEquals(3, $g->coordinateDimension());

    }

    public function testGeometry_pointN()
    {
        if (!method_exists("GEOSGeometry", 'pointN')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();
        $writer->setRoundingPrecision(0);

        $g = $reader->read('LINESTRING (10 10, 10 14, 14 14, 14 10)');
        $this->assertEquals('POINT (10 10)', $writer->write($g->pointN(0)) );
        $this->assertEquals('POINT (10 14)', $writer->write($g->pointN(1)) );
        $this->assertEquals('POINT (14 14)', $writer->write($g->pointN(2)) );
        $this->assertEquals('POINT (14 10)', $writer->write($g->pointN(3)) );
        $this->assertNull( $g->pointN(4) );

        $g = $reader->read('LINEARRING (11 11, 11 12, 12 11, 11 11)');
        $this->assertEquals('POINT (11 11)', $writer->write($g->pointN(0)) );
        $this->assertEquals('POINT (11 12)', $writer->write($g->pointN(1)) );
        $this->assertEquals('POINT (12 11)', $writer->write($g->pointN(2)) );
        $this->assertEquals('POINT (11 11)', $writer->write($g->pointN(3)) );

        $g = $reader->read('POINT (0 0)');
        try {
            $g->pointN(0);
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'LineString', $e->getMessage() );
        }

    }

    public function testGeometry_startendPoint()
    {
        if (!method_exists("GEOSGeometry", 'startPoint')) {
            return;
        }

        if (!method_exists("GEOSGeometry", 'endPoint')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('LINESTRING (10 10, 10 14, 14 14, 14 10)');
        $this->assertEquals('POINT (10 10)', $writer->write($g->startPoint()) );
        $this->assertEquals('POINT (14 10)', $writer->write($g->endPoint()) );
        $this->assertNull( $g->pointN(4) );

        $g = $reader->read('LINEARRING (11 11, 11 12, 12 11, 11 11)');
        $this->assertEquals('POINT (11 11)', $writer->write($g->startPoint()) );
        $this->assertEquals('POINT (11 11)', $writer->write($g->endPoint()) );

        $g = $reader->read('POINT (0 0)');
        try {
            $g->pointN(0);
            $this->assertTrue( FALSE );
        } catch (Exception $e) {
            $this->assertContains( 'LineString', $e->getMessage() );
        }

    }

    public function testGeometry_area()
    {
        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();

        if (method_exists("GEOSWKTWriter", 'setRoundingPrecision')) {
            $writer->setRoundingPrecision(0);
        }

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertEquals( 1.0, $g->area() );

        $g = $reader->read('POINT (0 0)');
        $this->assertEquals( 0.0, $g->area() );

        $g = $reader->read('LINESTRING (0 0 , 10 0)');
        $this->assertEquals( 0.0, $g->area() );

    }

    public function testGeometry_length()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');
        $this->assertEquals( 4.0, $g->length() );

        $g = $reader->read('POINT (0 0)');
        $this->assertEquals( 0.0, $g->length() );

        $g = $reader->read('LINESTRING (0 0 , 10 0)');
        $this->assertEquals( 10.0, $g->length() );

    }

    public function testGeometry_distance()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');

        $g2 = $reader->read('POINT(0.5 0.5)');
        $this->assertEquals( 0.0, $g->distance($g2) );

        $g2 = $reader->read('POINT (-1 0)');
        $this->assertEquals( 1.0, $g->distance($g2) );

        $g2 = $reader->read('LINESTRING (3 0 , 10 0)');
        $this->assertEquals( 2.0, $g->distance($g2) );

    }

    public function testGeometry_hausdorffDistance()
    {
        $reader = new GEOSWKTReader();

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');

        $g2 = $reader->read('POINT(0 10)');
        $this->assertEquals( 10.0, round($g->hausdorffDistance($g2)) );

        $g2 = $reader->read('POINT (-1 0)');
        $this->assertEquals( 2.0, round($g->hausdorffDistance($g2)) );

        $g2 = $reader->read('LINESTRING (3 0 , 10 0)');
        $this->assertEquals( 9.0, round($g->hausdorffDistance($g2)) );

    }

    public function testGeometry_delaunayTriangulation()
    {
        if (!method_exists("GEOSGeometry", 'delaunayTriangulation')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();
        $writer->setRoundingPrecision(0);

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');

        $b = $g->delaunayTriangulation();
        $this->assertEquals('GEOMETRYCOLLECTION (POLYGON ((0 1, 0 0, 1 0, 0 1)), POLYGON ((0 1, 1 0, 1 1, 0 1)))', $writer->write($b));

        $b = $g->delaunayTriangulation(0,true);
        $this->assertEquals('MULTILINESTRING ((0 1, 1 1), (0 0, 0 1), (0 0, 1 0), (1 0, 1 1), (0 1, 1 0))', $writer->write($b));

    }

    public function testGeometry_voronoiDiagram()
    {
        if (!method_exists("GEOSGeometry", 'voronoiDiagram')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();
        $writer->setRoundingPrecision(0);

        $g = $reader->read('MULTIPOINT(0 0, 100 0, 100 100, 0 100)');

        $b = $g->voronoiDiagram();
        $this->assertEquals('GEOMETRYCOLLECTION (POLYGON ((50 50, 50 200, 200 200, 200 50, 50 50)), POLYGON ((50 -100, 50 50, 200 50, 200 -100, 50 -100)), POLYGON ((-100 50, -100 200, 50 200, 50 50, -100 50)), POLYGON ((-100 -100, -100 50, 50 50, 50 -100, -100 -100)))', $writer->write($b->normalize()));

        $b = $g->voronoiDiagram(0, 1);
        $this->assertEquals('MULTILINESTRING ((50 50, 200 50), (50 50, 50 200), (50 -100, 50 50), (-100 50, 50 50))', $writer->write($b->normalize()));

        $b = $g->voronoiDiagram(0, 1, $g->buffer(1000));
        $this->assertEquals('MULTILINESTRING ((50 50, 1100 50), (50 50, 50 1100), (50 -1000, 50 50), (-1000 50, 50 50))', $writer->write($b->normalize()));

    }

    public function testGeometry_snapTo()
    {
        if (!method_exists("GEOSGeometry", 'snapTo')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();
        $writer->setTrim(true);

        $g = $reader->read('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');

        $g2 = $reader->read('POINT(0.1 0)');

        $snapped = $g->snapTo($g2, 0);
        $this->assertEquals('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))', $writer->write($snapped));

        $snapped = $g->snapTo($g2, 0.5);
        $this->assertEquals('POLYGON ((0.1 0, 1 0, 1 1, 0 1, 0.1 0))', $writer->write($snapped));
    }

    public function testGeometry_node()
    {
        if (!method_exists("GEOSGeometry", 'node')) {
            return;
        }

        $reader = new GEOSWKTReader();
        $writer = new GEOSWKTWriter();
        $writer->setTrim(true);

        $g = $reader->read('LINESTRING(0 0, 10 0, 5 -5, 5 5)');

        $noded = $g->node();
        $this->assertEquals('MULTILINESTRING ((0 0, 5 0), (5 0, 10 0, 5 -5, 5 0), (5 0, 5 5))', $writer->write($noded));

    }
}

GeometryTest::run();

?>
--EXPECT--
GeometryTest->testGeometry_serialization	OK
GeometryTest->testGeometry_project	OK
GeometryTest->testGeometry_interpolate	OK
GeometryTest->testGeometry_buffer	OK
GeometryTest->testGeometry_offsetCurve	OK
GeometryTest->testGeometry_envelope	OK
GeometryTest->testGeometry_intersection	OK
GeometryTest->testGeometry_clipByRect	OK
GeometryTest->testGeometry_convexHull	OK
GeometryTest->testGeometry_difference	OK
GeometryTest->testGeometry_symdifference	OK
GeometryTest->testGeometry_boundary	OK
GeometryTest->testGeometry_union	OK
GeometryTest->testGeometry_pointOnSurface	OK
GeometryTest->testGeometry_centroid	OK
GeometryTest->testGeometry_relate	OK
GeometryTest->testGeometry_relateBoundaryNodeRule	OK
GeometryTest->testGeometry_polygonize	OK
GeometryTest->testGeometry_lineMerge	OK
GeometryTest->testGeometry_sharedPaths	OK
GeometryTest->testGeometry_simplify	OK
GeometryTest->testGeometry_extractUniquePoints	OK
GeometryTest->testGeometry_relationalOps	OK
GeometryTest->testGeometry_isEmpty	OK
GeometryTest->testGeometry_checkValidity	OK
GeometryTest->testGeometry_isSimple	OK
GeometryTest->testGeometry_isRing	OK
GeometryTest->testGeometry_hasZ	OK
GeometryTest->testGeometry_isClosed	OK
GeometryTest->testGeometry_type	OK
GeometryTest->testGeometry_srid	OK
GeometryTest->testGeometry_numGeometries	OK
GeometryTest->testGeometry_geometryN	OK
GeometryTest->testGeometry_numInteriorRings	OK
GeometryTest->testGeometry_numPoints	OK
GeometryTest->testGeometry_getXY	OK
GeometryTest->testGeometry_interiorRingN	OK
GeometryTest->testGeometry_exteriorRing	OK
GeometryTest->testGeometry_numCoordinates	OK
GeometryTest->testGeometry_dimension	OK
GeometryTest->testGeometry_coordinateDimension	OK
GeometryTest->testGeometry_pointN	OK
GeometryTest->testGeometry_startendPoint	OK
GeometryTest->testGeometry_area	OK
GeometryTest->testGeometry_length	OK
GeometryTest->testGeometry_distance	OK
GeometryTest->testGeometry_hausdorffDistance	OK
GeometryTest->testGeometry_delaunayTriangulation	OK
GeometryTest->testGeometry_voronoiDiagram	OK
GeometryTest->testGeometry_snapTo	OK
GeometryTest->testGeometry_node	OK
PK&;�Z��@�	info.phptnu�[���PK&;�Z
��	�	Eroundtrip.phptnu�[���PK&;�Z+�\\1compatibility.phptnu�[���PKV�[M%�dSS�%yaml_parse_spec_bool.phptnu�[���PKV�[�SS��&k'yaml_parse_wiki_YtsBasicTests_006.phptnu�[���PKV�[������)bug_75029.phptnu�[���PKV�[J�n0""{+bug_69465.phptnu�[���PKV�[$�$77&�.yaml_parse_wiki_YtsBasicTests_007.phptnu�[���PKV�[E�B��'h1yaml_parse_wiki_YtsStrangeKeys_001.phptnu�[���PKV�[���VVA3yaml_parse_spec_seq.phptnu�[���PKV�[�~��PP�8yaml_emit_004.phptnu�[���PKV�[�ͫh&q:yaml_parse_wiki_YtsBasicTests_004.phptnu�[���PKV�[-E+ �<yaml_parse_spec_float.phptnu�[���PKV�[|�I;--&>?yaml_parse_wiki_YtsBasicTests_009.phptnu�[���PKV�[��(�Ayaml_parse_wiki_YtsBlockMapping_003.phptnu�[���PKV�[]A���$+Dyaml_parse_wiki_YtsMapInSeq_002.phptnu�[���PKV�[(�#m��(Fbug_60628.phptnu�[���PKV�[��OLyaml_parse_spec_omap.phptnu�[���PKV�[�����Pyaml_parse_005.phptnu�[���PKV�[^	4K���Xyaml_parse_002.phptnu�[���PKV�[�k&��o[yaml_parse_spec_binary.phptnu�[���PKV�[�Vc�YY�_yaml_emit_005.phptnu�[���PKV�[c�m���Rabug_64019.phptnu�[���PKV�[`�F��$<dyaml_parse_wiki_YtsMapInSeq_001.phptnu�[���PKV�[e��M��Mfbug_72204.phptnu�[���PKV�[�!�zzhyaml_parse_spec_set.phptnu�[���PKV�[�޳���iyaml_emit_006.phptnu�[���PKV�[��Ҟ��xyaml_parse_spec_pairs.phptnu�[���PKV�[��&QQ
�|yaml_001.phptnu�[���PKV�[�|��=�yaml_parse_spec_map.phptnu�[���PKV�[�t�aa�bug_79494.phptnu�[���PKV�[�L�+KK��bug_79567.phptnu�[���PKV�[?i��ttB�bug_59860.phptnu�[���PKV�[J����bug_61770.phptnu�[���PKV�[6K��775�yaml_parse_url_001.phptnu�[���PKV�[1M�����bug_80324.phptnu�[���PKV�[-0����bug_61923.phptnu�[���PKV�[uT�����bug_64694.phptnu�[���PKV�[�::g�bug_69617.phptnu�[���PKV�[�9V��ߠyaml_parse_spec_timestamp.phptnu�[���PKV�[3iM_���bug_21995.phptnu�[���PKV�[1_R�**ͥyaml_parse_file_001.phptnu�[���PKV�[q<>�
�
?�yaml_parse_001.phptnu�[���PKV�[E�#
H�bug_74799.yamlnu�[���PKW�[��..��yaml_parse_file_002.phptnu�[���PKW�[���&�yaml_parse_wiki_YtsBasicTests_001.phptnu�[���PKW�[�M5��v�yaml_parse_007.phptnu�[���PKW�[�:��||Q�yaml_emit_file_basic.phptnu�[���PKW�[w7jj(�yaml_parse_wiki_YtsBlockMapping_001.phptnu�[���PKW�[#������yaml_emit_009.phptnu�[���PKW�[�������bug_79866.phptnu�[���PKW�[w�b�&��yaml_parse_wiki_YtsBasicTests_002.phptnu�[���PKW�[�[#d��&2�yaml_parse_wiki_YtsBasicTests_008.phptnu�[���PKW�[���.��$
�yaml_parse_wiki_YtsMapInSeq_003.phptnu�[���PKW�[�43���yaml_emit_007.phptnu�[���PKW�[�X�zz��yaml_parse_006.phptnu�[���PKW�[^
���bug_72540.phptnu�[���PKW�[R��G����yaml_parse_003.phptnu�[���PKW�[$�]���yaml_parse_spec_null.phptnu�[���PKW�[� o��Z�bug_parsing_alias.phptnu�[���PKW�[�9���L�yaml_parse_spec_str.phptnu�[���PKW�[ �H-RRo�yaml_parse_spec_merge.phptnu�[���PKW�[5�jh���yaml_parse_file_001.yamlnu�[���PKW�[��"(K1K1�bug_77720.phptnu�[���PKW�["�#�NN`-bug_76309.phptnu�[���PKW�['�բ��.bug_69616.phptnu�[���PKW�[Q6��+	+	�0yaml_parse_008.phptnu�[���PKW�[��GG
::yaml_002.phptnu�[���PKW�[(~̛AA�>bug_74799.phptnu�[���PKW�[J�Ba��(=Byaml_parse_wiki_YtsBlockMapping_002.phptnu�[���PKW�[�����'`Dyaml_parse_wiki_YtsStrangeKeys_002.phptnu�[���PKX�[�;���(�Fyaml_parse_wiki_YtsBlockMapping_004.phptnu�[���PKX�[������Hyaml_parse_spec_int.phptnu�[���PKX�[�5|T���Jyaml_emit_008.phptnu�[���PKX�[�[_zzQyaml_emit_003.phptnu�[���PKX�[3�=S���Wyaml_emit_001.phptnu�[���PKX�[c���TT&�`yaml_parse_wiki_YtsBasicTests_005.phptnu�[���PKX�[O�����cyaml_parse_004.phptnu�[���PKX�[û��__&�eyaml_parse_wiki_YtsBasicTests_003.phptnu�[���PKX�[�6Ƥ�ghyaml_emit_002.phptnu�[���PKݼ[."�00Mpssh2_sftp_002.phptnu�[���PKݼ[�Cc�??�rssh2_auth_pubkey_file.phptnu�[���PKݼ[s���}}Hutestkey_rsa.pubnu�[���PKݼ[�n?��
wbug63480.phptnu�[���PKݼ[7���$$yssh2_connect.phptnu�[���PKݼ[)�)�jj
�~bug79631.phptnu�[���PKݼ[秧�EE+�ssh2_send_eof.phptnu�[���PKݼ[x���
��ssh2_skip.incnu�[���PK�[��%����ssh2_shell.phptnu�[���PK�[�O�1[[��ssh2_auth_pubkey.phptnu�[���PK�[���t��
0�ssh2_test.incnu�[���PK�[�R-����testkey_rsanu�[���PK�[IV��Ŕssh2_stream_select.phptnu�[���PK�[r�)V�ssh2_auth.phptnu�[���PK�[=(�:�ssh2_sftp_001.phptnu�[���PK�[��ω����ssh2_exec.phptnu�[���PK|�[�
���extauth_03.phptnu�[���PK}�[<�oN���drcp_connection_class.phptnu�[���PK}�[�Z)���error1.phptnu�[���PK}�[�*���
ͱini_1.phptnu�[���PK}�[���j��extauth_01.phptnu�[���PK}�[(gׂ��clientversion.phptnu�[���PK[��lb||��lob_aliases.phptnu�[���PK[�%�HH��extauth_02.phptnu�[���PK[mz�M

�minfo.phptnu�[���PK!	[�����I�uuid_is_null.phptnu�[���PK!	[��D���v�uuid_variant.phptnu�[���PK!	[�x��X�uuid_compare.phptnu�[���PK!	[��kL�uuid_type.phptnu�[���PK!	[�>����uuid_parse.phptnu�[���PK!	[n�2�����uuid_generate_sha1.phptnu�[���PK!	[Rx����uuid_generate_md5.phptnu�[���PK!	[|�e<���uuid_create.phptnu�[���PK!	[�5��
L�uuid_mac.phptnu�[���PK!	[��F���=�uuid_time.phptnu�[���PK!	[Ϻ���uuid_is_valid.phptnu�[���PK	!	[�0+����uuid_unparse.phptnu�[���PK6X	[X��:���imap_close_basic.phptnu�[���PK6X	[/��a[[Cgh9309.phptnu�[���PK6X	[%�ˬ��imap_savebody_uid.phptnu�[���PK6X	[V�W��#�
imap_fetch_overview_variation5.phptnu�[���PK6X	[�:�Ċ�
�bug75774.phptnu�[���PK6X	[KP7rr�imap_body_errors.phptnu�[���PK6X	[~�:}kkXimap_body_uid.phptnu�[���PK6X	[��4%%imap_clearflag_full_uid.phptnu�[���PK6X	[�]�I
v$bug80215.phptnu�[���PK6X	[6;0����(imap_final.phptnu�[���PK7X	["��g
g
#�)imap_fetch_overview_variation6.phptnu�[���PK7X	[����
�4bug63126.phptnu�[���PK7X	[��p�hhq:imap_binary_basic.phptnu�[���PK7X	[�_]��Aimap_fetchbody_uid.phptnu�[���PK7X	[�0~ك�Dimap_setflag_full_uid.phptnu�[���PK7X	[�E  
�Kbug80226.phptnu�[���PK7X	[��8Nimap_renamemailbox_basic.phptnu�[���PK7X	[�1��==1Rimap_setflag_full_basic.phptnu�[���PK7X	[X�/�**�Wimap_lsub_basic.phptnu�[���PK7X	["@�MM
(\bug77020.phptnu�[���PK7X	[�����]imap_timeout_basic.phptnu�[���PK7X	[K�����aimap_utf8.phptnu�[���PK8X	[��3�TT�bimap_savebody_basic.phptnu�[���PK8X	[���s�fimap_8bit_basic.phptnu�[���PK8X	[3}�\��
�ibug46918.phptnu�[���PK8X	['���oimap_body_basic.phptnu�[���PK8X	[=timap_mail_copy_basic.phptnu�[���PK8X	[����
�wbug35669.phptnu�[���PK8X	[��R�uu	�~README.mdnu�[���PK8X	[պ�U==��imap_undelete_basic.phptnu�[���PK8X	[z�\|���nil_constant.phptnu�[���PK8X	[DvCH�� �imap_fetchheader_variation5.phptnu�[���PK8X	[@�n55�imap_bodystruct_basic.phptnu�[���PK8X	[1��^��l�imap_fetchstructure_errors.phptnu�[���PK8X	[���p��N�imap_mail_move_basic.phptnu�[���PK8X	[�7�D���imap_savebody_errors.phptnu�[���PK8X	[���+	+	"�imap_clearflag_full_basic.phptnu�[���PK8X	[���ZGG��imap_sort_uid.phptnu�[���PK8X	[`�*�&&$�imap_base64_basic.phptnu�[���PK9X	[�;d����imap_fetchstructure_uid.phptnu�[���PK9X	[�^�����imap_fetchmime_uid.phptnu�[���PK9X	[���й���imap_delete_uid.phptnu�[���PK9X	[C���%	%	��imap_headerinfo_basic.phptnu�[���PK9X	[�3�����imap_list_basic.phptnu�[���PK9X	[��h���imap_open_error.phptnu�[���PK9X	[6G6L����imap_fetchbody_errors.phptnu�[���PK9X	[�jv����imap_fetchheader_uid.phptnu�[���PK9X	[@֊/
u�bug80438.phptnu�[���PK9X	[��Jz]]
��bug80242.phptnu�[���PK9X	[�ʞ
k�bug80800.phptnu�[���PK9X	[,�е77
��bug40854.phptnu�[���PK9X	[��`777�bug31142_1.phptnu�[���PK:X	[ES%% ��imap_reopen_with_cl_expunge.phptnu�[���PK:X	[+�jK
"�bug77153.phptnu�[���PK:X	[H�,���u�imap_createmailbox_basic.phptnu�[���PK:X	[x���ZZ
��bug64076.phptnu�[���PK:X	[M�k���$A�imap_rfc822_write_address_basic.phptnu�[���PK:X	[�-]OOl�bug31142_2.phptnu�[���PK:X	[��~~��imap_open_with_cl_expunge.phptnu�[���PK:X	[PsCt�imap_mutf7_to_utf8.phptnu�[���PK:X	[���L��imap_fetchmime_errors.phptnu�[���PK:X	[_��imap_utf8_to_mutf7_basic.phptnu�[���PK:X	[`CF|pp`bug80710_1.phptnu�[���PK:X	[��)1�	�	imap_close_variation4.phptnu�[���PK;X	["o'���7imap_fetchbody_basic.phptnu�[���PK;X	[4�``Bbug45705_2.phptnu�[���PK;X	[?����$imap_search_basic.phptnu�[���PK;X	[�|��
�'bug32589.phptnu�[���PK;X	['.b&&�*imap_constructor.phptnu�[���PK;X	[ż=��$,imap_rfc822_parse_headers_basic.phptnu�[���PK;X	[Ss�����4imap_getsubscribed_basic.phptnu�[���PK;X	[ka�����9imap_gc_error.phptnu�[���PK;X	[��)��
�<bug80213.phptnu�[���PK;X	[���33�>imap_undelete_uid.phptnu�[���PK;X	[�L���'Bimap_fetchstructure_basic.phptnu�[���PK;X	[��I��Gimap_fetchheader_errors.phptnu�[���PK;X	[�L�H���Kimap_is_open.phptnu�[���PK;X	[j�Ɩ\\�Nbug45705_1.phptnu�[���PK;X	[1�2nn�Pimap_fetchheader_basic.phptnu�[���PK;X	[������
OXbug80223.phptnu�[���PK;X	[�y�i��
#[bug80216.phptnu�[���PK;X	[.O��
	]bug44098.phptnu�[���PK;X	[V_P�^^
=^bug53377.phptnu�[���PK;X	[(,�PP�`imap_append_basic.phptnu�[���PK;X	[B�chhnhimap_fetchbody_variation6.phptnu�[���PK;X	[72��
$nbug80220.phptnu�[���PK;X	[�BJ��tpsetup/clean.incnu�[���PK;X	[$��Kll|tsetup/skipif.incnu�[���PK;X	[��,_VV(vsetup/dovecot.confnu�[���PK;X	[F�s����{setup/imap_include.incnu�[���PK;X	[AUmm��setup/dovecotpassnu�[���PK;X	[#[�F5�setup/setup.shnu�[���PK;X	[�o�ۘ���bug80710_2.phptnu�[���PK;X	[U��l��d�imap_fetch_overview_uid.phptnu�[���PK;X	[�+6M��s�imap_fetch_overview_basic.phptnu�[���PK;X	[P�;;��imap_errors_basic.phptnu�[���PK{X	[2��%�060.solrquery_comon_query_params.phptnu�[���PK{X	[�����110.solrdismaxquery.phptnu�[���PK{X	[�5P��Ӹ019.solrclient_clone.phptnu�[���PK{X	[�j1YY��150.solrcollapsefunction.phptnu�[���PK{X	[86H���(b�062.solrquery_date_facet_parameters.phptnu�[���PK{X	[,��}SS#~�080.solrutils_escapequerychars.phptnu�[���PK{X	[ʆ�88$�test.config.incnu�[���PK{X	[ҫ߷����193.solrparams_getparams.phptnu�[���PK{X	[�n�UU&��116.solrdismaxquery_boostfunction.phptnu�[���PK{X	[��9�,;�059.solrinputdocument_set_getfieldboost.phptnu�[���PK{X	[��44(��103.solrresponse_get_array_response.phptnu�[���PK{X	[�=���0;�106.solrresponse_child_doc_response_solrdoc.phptnu�[���PK{X	[��Kzvv/�007.solrclient_deleteByIds.phptnu�[���PK{X	[�Iӽ��)��016.solrclient_sendUpdateStream_file.phptnu�[���PK{X	[w�#��"I�056.solrinputdocument_toArray.phptnu�[���PK{X	[�Gt:JJ1$�053.solrinputdocument_getchilddocumentscount.phptnu�[���PK{X	[k��b���bug_70495.phptnu�[���PK{X	[h��*���021.solrdocument_iterator.phptnu�[���PK{X	[�f}�))7�008.solrclient_rollback.phptnu�[���PK{X	[��@�77�067.solrquery__construct.phptnu�[���PK{X	[���wnn!0skip.if.server_not_configured.incnu�[���PK{X	[��x���197.solrparams_unserialize.phptnu�[���PK{X	[($��ss�023.solrdocument_merge.phptnu�[���PK{X	[�B����028.solrdocument_clone.phptnu�[���PK{X	[c���NN'�001.solrclient_addDocument_partial.phptnu�[���PK{X	[��q�**(�055.solrinputdocument_serialization.phptnu�[���PK{X	[b�[�>>/!014.solrclient_addDocument_nested_document.phptnu�[���PK{X	[�r���#�)160.solr_update_document_block.phptnu�[���PK{X	[�����2files/sample.htmlnu�[���PK{X	[i��J�J��3files/extract_file.1.pdfnu�[���PK{X	[*����_�
files/sample_1.xlsxnu�[���PK|X	[׼ɾ����
files/response_xml.3.xmlnu�[���PK|X	[-�pz�
files/bug67394.jsonnu�[���PK|X	[t!n�&*&*��
files/response_xml.1.xmlnu�[���PK|X	[%���Hfiles/response_xml.4.xmlnu�[���PK|X	[�EtY<R<Rafiles/solr-word.pdfnu�[���PK|X	[��|���qfiles/bug67394.xmlnu�[���PK|X	[R� ����tfiles/response_xml.2.xmlnu�[���PK|X	[\W�Pcc&�v114.solrdismaxquery_trigramfields.phptnu�[���PK|X	[�⻂��#kz059.solrinputdocument_getfield.phptnu�[���PK|X	[+�tTMMt|100.solrresponse_json.phptnu�[���PK|X	[Np,AAbug_68181.phptnu�[���PK|X	[�!��� ��057.solrinputdocument_clone.phptnu�[���PK|X	[g�4�uuو192.solrparams_getparam.phptnu�[���PK|X	[��a&����009.solrclient_optimize.phptnu�[���PK|X	[a�ʣ�� Ҏ059.solrinputdocument_clear.phptnu�[���PK|X	[����		Ӑbug_72740.phptnu�[���PK|X	[}���#�059.solrinputdocument_getboost.phptnu�[���PK|X	[k
���� @�047.solrobject_offsetExists.phptnu�[���PK|X	[����))4K�050.solrinputdocument_addchilddocument_02_error.phptnu�[���PK|X	[~� x��(آ105.solrresponse_child_doc_response.phptnu�[���PK|X	[��W�##�018.solrclient_setservlet.phptnu�[���PK|X	[S/

"w�004.solrclient_query_response.phptnu�[���PK|X	[������-ֱ003.solrclient_addDocuments_commitwithin.phptnu�[���PK|X	[������006.solrclient_system.phptnu�[���PK|X	[��E;��!�034.solrdocument_deletefield.phptnu�[���PK|X	[��~kDD#/�017.solrclient_deletebyqueries.phptnu�[���PK|X	[*��ffƾ037.solrdocument_getfield.phptnu�[���PK|X	[,}����#z�202.solrdocument_new_serialize.phptnu�[���PK|X	[�uM		 ��045.solrobject_array_access.phptnu�[���PK|X	[��YB��$��043.solrobject_magic_properties.phptnu�[���PK|X	[I--)gg(��059.solrinputdocument_getfieldnames.phptnu�[���PK|X	[z��B!��024.solrdocument_child_fetch.phptnu�[���PK|X	[}3�\77�070.solrquery_collapse.phptnu�[���PK|X	[k���#��109.solrresponse_gethttpstatus.phptnu�[���PK|X	[�����072.solrquery_expand.phptnu�[���PK|X	[c�8W����190.solrparams_setparam.phptnu�[���PK|X	[[)��bug_61836_error.phptnu�[���PK|X	[�7���/-�027.solrdocument_getinputdocument_children.phptnu�[���PK|X	[�E*��|�001.solrclient_addDocument.phptnu�[���PK|X	[�$�//!��066.solrquery_TermsComponent.phptnu�[���PK|X	[X�Z(DD,?�052.solrinputdocument_haschilddocuments.phptnu�[���PK|X	[.�@622&�058.solrinputdocument_deletefield.phptnu�[���PK|X	[�"y�..!g�017.solrclient_deletebyquery.phptnu�[���PK|X	[�_R�xx�012.solrclient_getById.phptnu�[���PK|X	[�2��!�200.solrextractrequest_clone.phptnu�[���PK|X	[�T���bug_unknown.phptnu�[���PK|X	[L��!��(�061.solrquery_simpleFacetParameters.phptnu�[���PK|X	[0�%>>(x059.solrinputdocument_getfieldcount.phptnu�[���PK|X	[t|���013.solrclient_getByIds.phptnu�[���PK|X	[
�{���!(082.solrutils_getsolrversion.phptnu�[���PK|X	[���]��!Q032.solrdocument_fieldexists.phptnu�[���PK|X	[sU~��.000.solr_int_arg.phptnu�[���PK|X	[m��+$!003.solrclient_options.phptnu�[���PK|X	[c��		#�,109.solrresponse_getrequesturl.phptnu�[���PK|X	[���UU�/bug_68179.phptnu�[���PK|X	[�V?i+w1104.solrresponse_get_response_maxscore.phptnu�[���PK|X	[�C����$�6046.solrobject_getpropertynames.phptnu�[���PK|X	[������)�8182.solrdocumentfield_unset_property.phptnu�[���PK|X	[������:101.solrresponse_parseMode.phptnu�[���PK|X	[�����)�=063.solrquery_HighlightingParameters.phptnu�[���PK|X	[ao>h�� �Q092.solrserverexception_php.phptnu�[���PK|X	[��t��,?U051.solrinputdocument_getchilddocuments.phptnu�[���PK|X	[H{�66%PX029.solrdocument_serialize_php81.phptnu�[���PK|X	[i�TXX�\017.solrclient_threads.phptnu�[���PK|X	[$nH,YY%~_113.solrdismaxquery_bigramfields.phptnu�[���PK|X	[)�ܭRR',c026.solrdocument_getchilddocscount.phptnu�[���PK|X	[�6���!�d011.solrclient_phps_response.phptnu�[���PK|X	[��I��,
g054.solrinputdocument_addchilddocuments.phptnu�[���PK|X	[��삓�=jbug_69156.phptnu�[���PK|X	[�[�m010.solrclient_getOptions.phptnu�[���PK|X	[E����bp030.solrdocument_magic.phptnu�[���PK|X	[^�b��)�r130.parameters_simple_list_separator.phptnu�[���PK|X	[F�+??(wt016.solrclient_sendUpdateStream_bin.phptnu�[���PK|X	[�}�!��y083.solrutils_getsolrstats.phptnu�[���PK|X	[�V����G|bug_70482.phptnu�[���PK|X	[Sj��0G�151.solrcollapsefunction_illegal_operations.phptnu�[���PK|X	[ �s
pp,��003.solrclient_addDocument_no_overwrite.phptnu�[���PK|X	[������#j�196.solrparams_serialize_php81.phptnu�[���PK|X	[�2_.��E�019.solrclient_serialize.phptnu�[���PK|X	[2��x!!.1�050.solrinputdocument_addchilddocument_01.phptnu�[���PK|X	[�S�EE��bug_72033.phptnu�[���PK|X	[*�D
D
 3�059.solrinputdocument_merge.phptnu�[���PK|X	[C,�++"ǥ036.solrdocument_array_access.phptnu�[���PK|X	[�w)�%%)D�108.solrresponse_getdigestedresponse.phptnu�[���PK|X	[��7z``!±064.solrquery_StatsComponent.phptnu�[���PK|X	[@�&���s�084.solrutils_queryphrase.phptnu�[���PK|X	[�N�D����bug_59511_error.phptnu�[���PK|X	[�v��%��071.solrquery_collapse_exception.phptnu�[���PK|X	[k)�Y		"��069.solrquery_GroupParameters.phptnu�[���PK|X	[ڡJ
���005.solrclient_query_error.phptnu�[���PK|X	[�ӹ�yy+�196.solrparams_serialize.phptnu�[���PK|X	[���				"��020.solrdocument_update_field.phptnu�[���PK|X	[���`��#L�111.solrdismaxquery_boostquery.phptnu�[���PK|X	[�*��)H�181.solrdocumentfield_write_property.phptnu�[���PK|X	[{%ff3�004.solrclient_query_terms.phptnu�[���PK|X	[��MIBB#��035.solrdocument_getfieldnames.phptnu�[���PK|X	[�Z�0}�015.solrclient_addDocuments_nested_document.phptnu�[���PK|X	[�/������191.solrparams_addparam.phptnu�[���PK|X	[�F 
 
2�040.solrobject_xmlresponse.phptnu�[���PK|X	[t��<YY%��059.solrinputdocument_setversion.phptnu�[���PK|X	[x�/���"O�042.solrobject_magic_property.phptnu�[���PK|X	[��^�MM��102.solrresponse_phps.phptnu�[���PK|X	[����

',
081.solrutils_digest_json_response.phptnu�[���PK|X	[%lx				/�
044.solrobject_dimension_access_properties.phptnu�[���PK|X	[��/<#�
068.solrquery_parameters_error.phptnu�[���PK|X	[�~�y��W
000.solr_server_compat.phptnu�[���PK|X	[_�����#J
020.solrdocument_adding_fields.phptnu�[���PK|X	[*3����$
059.solrinputdocument_sort.phptnu�[���PK|X	[F_�-�� i-
002.solrclient_addDocuments.phptnu�[���PK|X	[\���&�1
022.solrdocument_getInputDocument.phptnu�[���PK|X	[bf��
�3
bootstrap.incnu�[���PK|X	[��G[nn!6
203.solrquery_strict_types.phptnu�[���PK|X	[S���{{%�:
194.solrparams_getpreparedparams.phptnu�[���PK|X	[�=���<
007.solrclient_deleteById.phptnu�[���PK|X	[�5�qq%�?
112.solrdismaxquery_query_parser.phptnu�[���PK|X	[[)�vLL hA
090.solrserverexception_xml.phptnu�[���PK|X	[ �$gBBE
000.solrclient_ping.phptnu�[���PK|X	[iT����#�G
115.solrdismaxquery_userfields.phptnu�[���PK|X	[���dJ
bug_70496.phptnu�[���PK|X	[���44BN
065.solrquery_MoreLikeThis.phptnu�[���PK|X	[ղs���U
016.solrclient_request.phptnu�[���PK|X	[�̘��Z
000.solr_int_arg_strict.phptnu�[���PK|X	[GN��  (�_
023.solrdocument_merge_no_overwrite.phptnu�[���PK|X	[�`�IIUf
109.solrresponse_success.phptnu�[���PK|X	[oˆ���h
198.solrparams_clone.phptnu�[���PK|X	[83�^^0k
008.solrclient_commit.phptnu�[���PK|X	[������n
195.solrparams_tostring.phptnu�[���PK|X	[�fA��!�p
091.solrserverexception_json.phptnu�[���PK|X	[���+8t
107.solrresponse_getrawresponseheaders.phptnu�[���PK|X	[�
*z��$�x
180.solrdocumentfield_construct.phptnu�[���PK|X	[Dk''�y
029.solrdocument_serialize.phptnu�[���PK|X	[�
qV$$A~
033.solrdocument_sort.phptnu�[���PK|X	[�a���%��
201.solrextractrequest_serialize.phptnu�[���PK|X	[)�*�%��
041.solrobject_illegal_operation.phptnu�[���PK|X	[�j�&$�
059.solrinputdocument_fieldexists.phptnu�[���PK|X	[��MSLL'~�
025.solrdocument_haschilddocuments.phptnu�[���PK|X	[
��d��!�
031.solrdocument_clear.phptnu�[���PK|X	[~�'���
�
019.solrclient_getdebug.phptnu�[���PK‰	[*��)ؘ
306_Imagick_interpolativeResizeImage.phptnu�[���PK‰	[o���cc%P�
159_Imagick_transformImage_basic.phptnu�[���PK‰	[Ro.
��!�
173_ImagickDraw_bezier_basic.phptnu�[���PK‰	[2�k#��D�
004_clone.phptnu�[���PK‰	[t�D_��|�
236_Imagick_identify_basic.phptnu�[���PK‰	[�b=��%R�
119_Imagick_sepiaToneImage_basic.phptnu�[���PK‰	[��oٽ�$��
070_Imagick_equalizeImage_case2.phptnu�[���PK‰	[��W[["��
144_Imagick_spliceImage_basic.phptnu�[���PK‰	[ȭ=��� Q�
074_Imagick_flopImage_basic.phptnu�[���PK‰	[ͷr�<<,[�
266_ImagickDraw_getFontResolution_basic.phptnu�[���PK‰	[�l
�2�
251_ImagickPixelIterator_setIteratorRow_basic.phptnu�[���PK‰	[O�g"	"	/V�
280_imagickkernel_exception_invalid_origin.phptnu�[���PK‰	[��MM%��
100_Imagick_posterizeImage_basic.phptnu�[���PK‰	[�#��+y�
220_ImagickDraw_setStrokeOpacity_basic.phptnu�[���PK‰	[�:���.U�
217_ImagickDraw_setStrokeMiterLimit_basic.phptnu�[���PK‰	[f��b��W�
320_Imagick_getOptions.phptnu�[���PK‰	[���~~.�
276_Imagick_artifacts.phptnu�[���PK‰	[��}.EE'��
106_Imagick_reduceNoiseImage_basic.phptnu�[���PK‰	[���rii��
294_Imagick_cannyEdgeImage.phptnu�[���PK‰	[��!���&J�
188_ImagickDraw_pushPattern_basic.phptnu�[���PK‰	[<�.T&&��
261_compositeImageGravity.phptnu�[���PK‰	[� ��
131_Imagick_setOption_case2.phptnu�[���PK‰	[�n���#R�
314_Imagick_getBackgroundColor.phptnu�[���PK‰	[3֔YY*��
027_Imagick_adaptiveResizeImage_basic.phptnu�[���PK‰	[!��ccM�
321_Imagick_getOrientation.phptnu�[���PK‰	[����3��
073_Imagick_forwardFourierTransformImage_basic.phptnu�[���PK‰	[����NN"|243_Tutorial_svgExample_basic.phptnu�[���PK‰	[z�&198_ImagickDraw_setClipPath_basic.phptnu�[���PK‰	[�$P��� �227_ImagickDraw_skewY_basic.phptnu�[���PK‰	[X��j��%`281_imagick_houghLineImage_basic.phptnu�[���PK‰	[�l2���-�088_Imagick_implodeImageWithMethod_basic.phptnu�[���PK‰	[!��CC�076_Imagick_fxImage_basic.phptnu�[���PK‰	[���oo+s028_Imagick_adaptiveSharpenImage_basic.phptnu�[���PK‰	[x�Մ��"=272_imagick_identifyimagetype.phptnu�[���PK‰	[�4d!,, L132_Imagick_setOption_case3.phptnu�[���PK‰	[
��

�!175_ImagickDraw_arc_basic.phptnu�[���PK‰	[uIm���1 '250_ImagickPixelIterator_resetIterator_basic.phptnu�[���PK‰	[�1�;S
S
.025-get-color.phptnu�[���PK‰	[!�5F$$+�;152_Imagick_swirlImageWithMethod_basic.phptnu�[���PK‰	[6���� >185_ImagickDraw_point_basic.phptnu�[���PK‰	[�t˭II*aA239_Tutorial_gradientReflection_basic.phptnu�[���PK‰	[F��$��)G213_ImagickDraw_setStrokeAlpha_basic.phptnu�[���PK‰	[���*SS ,K048_Imagick_cropImage_basic.phptnu�[���PK‰	[����TT �M041_Imagick_chopImage_basic.phptnu�[���PK‰	[R�e޲�
sPbug21229.phptnu�[���PK‰	[D�ڊUU$bS093_Imagick_modulateImage_basic.phptnu�[���PK‰	[>z�e��!V138_Imagick_shaveImage_basic.phptnu�[���PK‰	[�			 X278_Imagick_optimaze_gif.phptnu�[���PK‰	[���2HH�ahoughline_input_image.pngnu�[���PK‰	[Y1��&h063_Imagick_distortImage_Shepards.phptnu�[���PK‰	[ț+"1p066_Imagick_embossImage_basic.phptnu�[���PK‰	[�JXuZZ �r130_Imagick_setOption_case1.phptnu�[���PK‰	[ӥ��4u322_Imagick_getResolution.phptnu�[���PK‰	[�64>>)#x197_ImagickDraw_roundRectangle_basic.phptnu�[���PK‰	[D�٭II�|009_properties.phptnu�[���PK‰	[1��jj$F~085_Imagick_haldClutImage_basic.phptnu�[���PK‰	[�UU��(�256_Imagick_exportImagePixels_basic.phptnu�[���PK‰	[?� �jj"��049_Imagick_deskewImage_basic.phptnu�[���PK‰	[������#��112_Imagick_roundCorners_basic.phptnu�[���PK‰	[Z�!]]ƒ001_imagick_readimage.phptnu�[���PK‰	[�1����!m�195_ImagickDraw_rotate_basic.phptnu�[���PK‰	[dgr�		"��186_ImagickDraw_polygon_basic.phptnu�[���PKÉ	[꣮��� �196_ImagickDraw_scale_basic.phptnu�[���PKÉ	[�aP--�260_localContrastImage.phptnu�[���PKÉ	[n���@@"��039_Imagick_borderImage_basic.phptnu�[���PKÉ	[L4+�xx&�323_Imagick_getType.phptnu�[���PKÉ	[�ӅPP&�054_Imagick_distortImage_Bilinear.phptnu�[���PKÉ	[��!���&��193_ImagickDraw_pushPattern_basic.phptnu�[���PKÉ	[6wep**,Ͱ143_Imagick_spreadImageWithMethod_basic.phptnu�[���PKÉ	[�lύ�S�325_Imagick_setDepth.phptnu�[���PKÉ	[uC~:��$)�235_ImagickDraw_translate_basic.phptnu�[���PKÉ	[�)�VQQ$Y�151_Imagick_subImageMatch_basic.phptnu�[���PKÉ	[�kͪ55$��296_Imagick_waveletDenoiseImage.phptnu�[���PKÉ	[nm?��$��181_ImagickDraw_pathStart_basic.phptnu�[���PKÉ	[/A��  !��078_Imagick_gammaImage_basic.phptnu�[���PKÉ	[i�XtzzB�326_Imagick_setExtract.phptnu�[���PKÉ	[�~�**%�045_Imagick_compositeImage_basic.phptnu�[���PKÉ	[�bb(��080_Imagick_gaussianBlurImage_basic.phptnu�[���PKÉ	[����00@�273_imagick_falsyimage.phptnu�[���PKÉ	[�������305_Imagick_complexImages.phptnu�[���PKÉ	[G����� ��067_Imagick_edgeImage_basic.phptnu�[���PKÉ	[�����-��211_ImagickDraw_setStrokeAntialias_basic.phptnu�[���PKÉ	[-ιL		#�289_Imagick_setImageMask_basic.phptnu�[���PKÉ	[�Ỡ�$x�013-read-filehandle-file-stream.phptnu�[���PKÉ	[b���'l�241_Tutorial_psychedelicFont_basic.phptnu�[���PKÉ	[���i>>(h�058_Imagick_distortImage_Polynomial.phptnu�[���PKÉ	[Mߥ���292_index_iterator.phptnu�[���PKÉ	[ {���&G�203_ImagickDraw_setFillRule_basic.phptnu�[���PKÉ	[�)���%O242_Tutorial_levelizeImage_basic.phptnu�[���PKÉ	[�A��77�008_newpseudoimage.phptnu�[���PKÉ	[�`�d"234_Tutorial_edgeExtend_basic.phptnu�[���PKÉ	[��{y��"q143_Imagick_spreadImage_basic.phptnu�[���PKÉ	[�u��NN#�135_Imagick_sharpenImage_basic.phptnu�[���PKÉ	[�Hb���-G247_ImagickPixelIterator_construct_basic.phptnu�[���PKÉ	[�E�G��&|013-read-filehandle-memory-stream.phptnu�[���PKÉ	[UދC((�007_thumbnail_fill.phptnu�[���PKÉ	[�ty� !180_ImagickDraw_matte_basic.phptnu�[���PKÉ	[ћ��"n%315_Imagick_getImageArtifacts.phptnu�[���PKÉ	[4	�zmm�*003_cast_color_opacity.phptnu�[���PKÉ	[��nk""%�.265_ImagickDraw_getOpacity_basic.phptnu�[���PKÉ	[®.�==3330_Imagick_newImage.phptnu�[���PKÉ	[�}��EE#�5300_Imagick_autoThresholdImage.phptnu�[���PKÉ	[����-*8030_Imagick_adaptiveThresholdImage_basic.phptnu�[���PKÉ	[���S##%_;268_ImagickDraw_getDensity_basic.phptnu�[���PKÉ	[j����%�?097_Imagick_newPseudoImage_basic.phptnu�[���PKÉ	[�h�VV#B245_Tutorial_screenEmbed_basic.phptnu�[���PKÉ	[�#�FF)�F133_Imagick_setSamplingFactors_basic.phptnu�[���PKÉ	[��a~��)VJ221_ImagickDraw_setStrokeWidth_basic.phptnu�[���PKÉ	[��t�$$yNbug_72226.phptnu�[���PKÉ	[J
d�~~=�P183_ImagickDraw_pathCurveToQuadraticBezierAbsolute_basic.phptnu�[���PKÉ	[y<mAA+�X218_ImagickDraw_setStrokeLineCap_basic.phptnu�[���PKÉ	[b�s8VV6b]249_ImagickPixelIterator_getNextIteratorRow_basic.phptnu�[���PKÉ	[�*~�{{*b075_Imagick_floodFillPaintImage_basic.phptnu�[���PKÉ	[�S`ff'�e118_Imagick_setImageArtifact_basic.phptnu�[���PKÉ	[*��'�j165_Imagick_unsharpMaskImage_basic.phptnu�[���PKÉ	[�m

,�m279_ImagickDraw_setTextInterlineSpacing.phptnu�[���PKÉ	[O=6��((v163_Imagick_uniqueImageColors_basic.phptnu�[���PKÉ	[������!*y052_Imagick_distortImage_Arc.phptnu�[���PKÉ	[�T�bb&\}206_ImagickDraw_setFontSize_basic.phptnu�[���PKÉ	[�	����bug_66098.phptnu�[���PKÉ	[����)1�208_ImagickDraw_setFontStretch_basic.phptnu�[���PKÉ	[D	a�ff�295_Imagick_setSeed.phptnu�[���PKÉ	[�U���(Ƌ051_Imagick_distortImage_Projection.phptnu�[���PKÉ	[nS,�+�031_Imagick_affineTransformImage_basic.phptnu�[���PKÉ	[��oo(r�081_Imagick_getImageHistogram_basic.phptnu�[���PKÉ	[JB���$9�069_Imagick_equalizeImage_case1.phptnu�[���PKÉ	[��ɥ�#V�060_Imagick_distortImage_Polar.phptnu�[���PKÉ	[����
N�Biter_500.jpgnu�[���PKÉ	[#��//#�r329_imagick_getImageBlob_empty.phptnu�[���PKĉ	[VQ�4��$$u101_Imagick_quantizeImage_basic.phptnu�[���PKĉ	[�E[*tt#x154_Imagick_textureImage_basic.phptnu�[���PKĉ	[�ۅ�cc(�z029_Imagick_adaptiveBlurImage_basic.phptnu�[���PKĉ	[N��DD&�}282_ini_settings_set_falsy_string.phptnu�[���PKĉ	[���uMM$5�299_Imagick_rangeThresholdImage.phptnu�[���PKĉ	[c>=�--*ք168_Imagick_whiteThresholdImage_basic.phptnu�[���PKĉ	[ݞ�``]�179_ImagickDraw_line_basic.phptnu�[���PKĉ	[� L��"�259_Imagick_colorPoints_basic.phptnu�[���PKĉ	[h�\�>
>
�014-setresourcelimit.phptnu�[���PKĉ	[��c���$l�099_Imagick_oilPaintImage_basic.phptnu�[���PKĉ	[�$�:����018-clone-length.phptnu�[���PKĉ	[.7T���%��033_Imagick_autoLevelImage_basic.phptnu�[���PKĉ	[�~�;��!��136_Imagick_shadeImage_basic.phptnu�[���PKĉ	[�_�ssإ077_Imagick_frameImage_im7.phptnu�[���PKĉ	[�H&__$��167_Imagick_vignetteImage_basic.phptnu�[���PKĉ	[�8��M�246_antialias_image.phptnu�[���PKĉ	[��Y**$T�043_Imagick_colorizeImage_basic.phptnu�[���PKĉ	[u�<��ҵ064_cropThumbNailImage.phptnu�[���PKĉ	[�j�N��"ؽ176_ImagickDraw_ellipse_basic.phptnu�[���PKĉ	[�6�����274_imagick_setImageAlpha.phptnu�[���PKĉ	[J
d�~~=��182_ImagickDraw_pathCurveToQuadraticBezierAbsolute_basic.phptnu�[���PKĉ	[d���[[#��107_Imagick_recolorImage_basic.phptnu�[���PKĉ	[z�&/�192_ImagickDraw_setClipPath_basic.phptnu�[���PKĉ	[�ugG%%��191_ImagickDraw_push_basic.phptnu�[���PKĉ	[���K���311_Imagick_channelFxImage.phptnu�[���PKĉ	[ӌn��!E�114_Imagick_scaleImage_basic.phptnu�[���PKĉ	[M�um#`�184_ImagickDraw_polyline_basic.phptnu�[���PKĉ	[�;9�
�

��skipif.incnu�[���PKĉ	[Y�9���3��057_Imagick_distortImage_PerspectiveProjection.phptnu�[���PKĉ	[�l����$�034_Imagick_annotateImage_basic.phptnu�[���PKĉ	[:���+&�240_Tutorial_imagickCompositeGen_basic.phptnu�[���PKĉ	[�����:308_Imagick_levelizeImage.phptnu�[���PKĉ	[�����/O161_Imagick_transformImageColorspace_basic.phptnu�[���PKĉ	[���̚�.<038_Imagick_brightnessContrastImage_basic.phptnu�[���PKĉ	[_�'4285_ini_settings_set_truthy_string.phptnu�[���PKĉ	[��Mx��!087_Imagick_levelImage_basic.phptnu�[���PKĉ	[B�|����022-writeimagefileformat.phptnu�[���PKĉ	[96W���$253_getHdri.phptnu�[���PKĉ	[V�b�..%�%226_ImagickDraw_setViewBox_basic.phptnu�[���PKĉ	[I%rkk&m+199_ImagickDraw_setClipRule_basic.phptnu�[���PKĉ	[T��WW*.1166_Imagick_waveImageWithMethod_basic.phptnu�[���PKĉ	[H??!�3137_Imagick_shearImage_basic.phptnu�[���PKĉ	[\�0cc*o6125_Imagick_setImageOrientation_basic.phptnu�[���PKĉ	[��>�;;,9317_Imagick_getImageMean.phptnu�[���PKĉ	[�N�||�<026_phpinfo.phptnu�[���PKĉ	[6���!p>174_ImagickDraw_affine_basic.phptnu�[���PKĉ	[U9uv&�G102_Imagick_radialBlurImage_basic.phptnu�[���PKĉ	[9l����

Kbug20636.phptnu�[���PKĉ	[�,o�~~N318_Imagick_getImageRange.phptnu�[���PKĉ	[���@@�P005_bestfit.phptnu�[���PKĉ	[��c���%cR065_Imagick_despeckleImage_basic.phptnu�[���PKĉ	[мx�  �T297_Imagick_meanShiftImage.phptnu�[���PKĉ	[�E�'��%�V158_Imagick_transposeImage_basic.phptnu�[���PKĉ	[)�(�>>$Y270_imagick_restoreErrorHandler.phptnu�[���PKĉ	[cvח���[291_reflection.phptnu�[���PKĉ	[ܷr���%�_319_Imagick_getInterpolateMethod.phptnu�[���PKĉ	[E�n..-c216_ImagickDraw_setStrokeDashArray_basic.phptnu�[���PKĉ	[�m7�>>�h255_getFeatures.phptnu�[���PKĉ	[���� j109_Imagick_rollImage_basic.phptnu�[���PKĉ	[���1$]l099_Imagick_oilPaintImage_sigma.phptnu�[���PKĉ	[��:l��&�n094_Imagick_motionBlurImage_basic.phptnu�[���PKĉ	[�'�L�q290_imagick_profileimage.phptnu�[���PKĉ	[l�^S""+�r116_Imagick_separateImageChannel_basic.phptnu�[���PKĉ	[u
"C))Yu002_thumbnail.phptnu�[���PKĉ	[7]���%Ą212_ImagickDraw_setGravity_basic.phptnu�[���PKĉ	[kv)ABB$܊103_Imagick_readImageBlob_basic.phptnu�[���PKĉ	[taj%%-r�269_ImagickPixel_setColorFromPixel_basic.phptnu�[���PKĉ	[�{v##!�015-imagickdrawsetresolution.phptnu�[���PKĉ	[�]MPP h�324_Imagick_polynomialImage.phptnu�[���PKĉ	[����NN�145_imagickkernel_coverage.phptnu�[���PKĉ	[�ugG%%��187_ImagickDraw_push_basic.phptnu�[���PKĉ	[�<{�� �039_Imagick_borderImage_im7.phptnu�[���PKĉ	[��i�� .�156_Imagick_tintImage_basic.phptnu�[���PKĉ	[W趺PP�263_autoGammaImage.phptnu�[���PKĉ	[��ޑ����bug_71742.phptnu�[���PKĉ	[,$�5��$��177_ImagickDraw_composite_basic.phptnu�[���PKĉ	[���l��012-clone-separation.phptnu�[���PKĉ	[S�<��,]�224_ImagickDraw_setTextUnderColor_basic.phptnu�[���PKĉ	[`\�^^
?�bug59378.phptnu�[���PKĉ	[�K$ ��042_Imagick_clutImage_basic.phptnu�[���PKĉ	[����pp,0�219_ImagickDraw_setStrokeLineJoin_basic.phptnu�[���PKĉ	[D.�kkk ��047_Imagick_convolveImage_6.phptnu�[���PKĉ	[�'�5,,"��141_Imagick_sketchImage_basic.phptnu�[���PKĉ	[�4E�BB 5�037_Imagick_blurImage_basic.phptnu�[���PKĉ	[{�s��-�252_ImagickPixelIterator_construct_basic.phptnu�[���PKĉ	[�G�00"��110_Imagick_resizeImage_basic.phptnu�[���PKĉ	[J����'201_ImagickDraw_setFillAlpha_basic.phptnu�[���PKĉ	[�[-���&{162_Imagick_transverseImage_basic.phptnu�[���PKĉ	[\����#�
309_Imagick_orderedDitherImage.phptnu�[���PKĉ	[C���$�170_ImagickPixel_setColor_basic.phptnu�[���PKĉ	[|�"��(207_ImagickDraw_setFontFamily_basic.phptnu�[���PKĉ	[��H%%$061_Imagick_distortImage_Barrel.phptnu�[���PKĉ	[d�[�303_Imagick_averageImages.phptnu�[���PKĉ	[�!��LL,�225_ImagickDraw_setTextDecoration_basic.phptnu�[���PKĉ	[W�õ
�#bug81235.phptnu�[���PKĉ	[��g���$skipprobefourier.incnu�[���PKĉ	[,	 ;��!'149_Imagick_sparseColorImage.phptnu�[���PKĉ	[�O�-27084_Imagick_getPixelRegionIterator_basic.phptnu�[���PKĉ	[*�Z���,�;098_Imagick_orderedPosterizeImage_basic.phptnu�[���PKʼn	[��v���)?171_ImagickPixel_setColorValue_basic.phptnu�[���PKʼn	[�x��22$/B142_Imagick_solarizeImage_basic.phptnu�[���PKʼn	[Rq�SMM �D164_Imagick_trimImage_basic.phptnu�[���PKʼn	[f���%RG258_Imagick_evaluateImages_basic.phptnu�[���PKʼn	[�� ���wJ262_autoOrient.phptnu�[���PKʼn	[[��mmeL006_cropthumbnail.phptnu�[���PKʼn	[��+���
Qfunctions.incnu�[���PKʼn	[�J����#g117_Imagick_segmentImage_basic.phptnu�[���PKʼn	[�)�R��,�i120_Imagick_setCompressionQuality_basic.phptnu�[���PKʼn	[���))+�m126_Imagick_getImageChannelStats_basic.phptnu�[���PKʼn	[�k25Po328_Imagick_polaroidImageWithTextAndMethod_basic.phptnu�[���PKʼn	[`���rbug_73840.phptnu�[���PKʼn	[�
v

wbug64015.phptnu�[���PKʼn	[����Ky019-readimages.phptnu�[���PKʼn	[�%887}281_ini_settings_default.phptnu�[���PKʼn	[�=���!�077_Imagick_frameImage_basic.phptnu�[���PKʼn	[g�>r��'�210_ImagickDraw_setFontStyle_basic.phptnu�[���PKʼn	[��^��%/�036_Imagick_blueShiftImage_basic.phptnu�[���PKʼn	[/�'
��*��257_Imagick_setImageChannelMask_basic.phptnu�[���PKʼn	[V����!n�152_Imagick_swirlImage_basic.phptnu�[���PKʼn	[_
��'��277_Imagick_colorDecisionListImage.phptnu�[���PKʼn	[j���)�056_Imagick_distortImage_Perspective.phptnu�[���PKʼn	[mDD+���016-static-methods.phptnu�[���PKʼn	[J���ll+��062_Imagick_distortImage_BarrelInverse.phptnu�[���PKʼn	[����RR%~�169_ImagickPixel_construct_basic.phptnu�[���PKʼn	[j�;`��*%�244_Tutorial_psychedelicFontGif_basic.phptnu�[���PKʼn	[e����) �267_ImagickDraw_getBorderColor_basic.phptnu�[���PKʼn	[������011_polygon.phptnu�[���PKʼn	[�5
��3$�086_Imagick_forwardFourierTransformImage_basic.phptnu�[���PKʼn	[{�u&&1|�122_Imagick_setImageCompressionQuality_basic.phptnu�[���PKʼn	[���"",�160_Imagick_transparentPaintImage_basic.phptnu�[���PKʼn	[z���150_Imagick_setregistry.phptnu�[���PKʼn	[�l�η�$��194_ImagickDraw_rectangle_basic.phptnu�[���PKʼn	[��1���)��115_Imagick_selectiveBlurImage_basic.phptnu�[���PKʼn	[�����+��223_ImagickDraw_setTextAntialias_basic.phptnu�[���PKʼn	[����� �071_Imagick_flipImage_basic.phptnu�[���PKʼn	[��M66(�089_Imagick_medianFilterImage_basic.phptnu�[���PKʼn	[a����)��091_Imagick_linearStretchImage_basic.phptnu�[���PKʼn	[� F&��304_Imagick_is_imagemagick_borked.phptnu�[���PKʼn	[�e!��298_Imagick_kmeansImage.phptnu�[���PKʼn	[EN��.."k�096_Imagick_negateImage_basic.phptnu�[���PKʼn	[��d��2��055_Imagick_distortImage_ScaleRotateTransform.phptnu�[���PKʼn	[��ULL�020-pixeliterator.phptnu�[���PKʼn	[U��%��157_Imagick_thumbnailImage_basic.phptnu�[���PKʼn	[؅,���)�215_ImagickDraw_setStrokeColor_basic.phptnu�[���PKʼn	[�P�h�h�:�anonymous_pro_minus.ttfnu�[���PKʼn	[
�k-����302_Imagick_claheImage.phptnu�[���PKʼn	[�b5���(��209_ImagickDraw_setFontWeight_basic.phptnu�[���PKʼn	[�i_h��':�079_Imagick_getImageGeometry_basic.phptnu�[���PKʼn	[$͏���'D�202_ImagickDraw_setFillColor_basic.phptnu�[���PKʼn	[Z� ���E�286_Imagick_setMask_basic.phptnu�[���PKʼn	[~Nz"9�111_Imagick_rotateImage_basic.phptnu�[���PKʼn	[����'��284_ini_settings_set_truthy_number.phptnu�[���PKʼn	[�Lm'~�044_Imagick_colorMatrixImage_basic.phptnu�[���PKʼn	["ckuJJ*�113_Imagick_rotationalBlurImage_basic.phptnu�[���PKʼn	[�r@W+��222_ImagickDraw_setTextAlignment_basic.phptnu�[���PKʼn	[<v~-�139_Imagick_sigmoidalContrastImage_basic.phptnu�[���PKʼn	[�X��eeN021-countable.phptnu�[���PKʼn	[�^�||&�127_Imagick_progressMonitor_basic.phptnu�[���PKʼn	[)>O���#�	068_Imagick_enhanceImage_basic.phptnu�[���PKʼn	[FJ�$�050_Imagick_distortImage_Affine.phptnu�[���PKʼn	[��hh+8287_Imagick_GetImageChannelRange_basic.phptnu�[���PKʼn	[�*Aw��"�190_ImagickDraw_popDefs_basic.phptnu�[���PKʼn	[��r'��!0178_ImagickDraw_circle_basic.phptnu�[���PKʼn	[_p��((254_getConfigureOptions.phptnu�[���PKʼn	[?v�m��'{0200_ImagickDraw_setClipUnits_basic.phptnu�[���PKʼn	[�,��.d5214_ImagickDraw_setStrokeDashOffset_basic.phptnu�[���PKʼn	[�	<,,$�:046_Imagick_contrastImage_basic.phptnu�[���PKʼn	[B�Qk$2=312_Imagick_colorThresholdImage.phptnu�[���PKʼn	[{����#�?088_Imagick_implodeImage_basic.phptnu�[���PKʼn	[��k��	�	�Aphp.gifnu�[���PKʼn	[
Q��$�K072_Imagick_evaluateImage_basic.phptnu�[���PKʼn	[�;��>XOFL.txtnu�[���PKʼn	[??���$$j327_Imagick_polaroidImage_basic.phptnu�[���PKʼn	[@���� m047_Imagick_convolveImage_7.phptnu�[���PKʼn	[f$e����o013-read-filehandle.phptnu�[���PKʼn	[���!<r307_Imagick_levelImageColors.phptnu�[���PKʼn	[Y�
]��"�t134_Imagick_shadowImage_basic.phptnu�[���PKʼn	[.�O���%�v155_Imagick_thresholdImage_basic.phptnu�[���PKʼn	[�� NN0�y172_ImagickPixel_setColorValueQuantum_basic.phptnu�[���PKʼn	[E0����&^}189_ImagickDraw_setClipPath_basic.phptnu�[���PKʼn	[��'��$��108_Imagick_resampleImage_basic.phptnu�[���PKʼn	[�<���)Ƅ248_ImagickPixelIterator_clear_basic.phptnu�[���PKʼn	[����%�153_Imagick_statisticImage_basic.phptnu�[���PKʼn	[�ū��1�017-clear-destroy.phptnu�[���PKʼn	[�lc�CC6�271_imagick_constants.phptnu�[���PKʼn	[��o Ï166_Imagick_waveImage_basic.phptnu�[���PKʼn	[��0ww$#�283_ini_settings_set_falsy_zero.phptnu�[���PKʼn	[</QB$�032_Imagick_addNoiseImage_basic.phptnu�[���PKʼn	[˷I�� ^�228_ImagickDraw_skewX_basic.phptnu�[���PKʼn	[��SZZ'B�092_Imagick_mergeImageLayers_basic.phptnu�[���PKƉ	[]X�$�040_Imagick_charcoalImage_basic.phptnu�[���PKƉ	[��2�mmV�010_importimagepixels.phptnu�[���PKƉ	[���z��)
�204_ImagickDraw_setFillOpacity_basic.phptnu�[���PKƉ	[�(��@@)�288_imagick_prevent_zero_size_images.phptnu�[���PKƉ	[�W,�v	v	&��229_Tutorial_fxAnalyzeImage_case1.phptnu�[���PKƉ	[��j��y�042_Imagick_clutImage_im7.phptnu�[���PKƉ	[�xb
""��github_174.phptnu�[���PKƉ	[���Ӈ�"�310_Imagick_whiteBalanceImage.phptnu�[���PKƉ	[c�9����024-ispixelsimilar.phptnu�[���PKƉ	[��˽nn!��105_Imagick_raiseImage_basic.phptnu�[���PKƉ	[dv9O@@#��301_Imagick_bilateralBlurImage.phptnu�[���PKƉ	[�.=���#$�090_Imagick_magnifyImage_basic.phptnu�[���PKƉ	[ahu���+<�264_ImagickDraw_getTextDirection_basic.phptnu�[���PKƉ	[0Iy���z�bug59378_windows.phptnu�[���PKƉ	[ƀ���%E�095_Imagick_normalizeImage_basic.phptnu�[���PKƉ	[��O���(j�053_Imagick_distortImage_RotatedArc.phptnu�[���PKƉ	[���(x�275_ImagickPixel_unitializedObjects.phptnu�[���PKƉ	[Uc�^��'e�083_Imagick_getPixelIterator_basic.phptnu�[���PKƉ	[��@��+��104_Imagick_randomThresholdImage_basic.phptnu�[���PKƉ	[�����025-function-image.phptnu�[���PKƉ	[$�-ZZ'Q�123_Imagick_setImageClipMask_basic.phptnu�[���PKƉ	[�ϕ���&�237_Tutorial_deconstructGif_basic.phptnu�[���PKƉ	[{ܴo--#Q059_Imagick_distortImage_Polar.phptnu�[���PKƉ	[�!e�gg#�121_Imagick_setImageBias_basic.phptnu�[���PKƉ	[�ʍ66*�
035_Imagick_blackThresholdImage_basic.phptnu�[���PK�	[��1BB
010-compression.phptnu�[���PK�	[��
`##�019-null-comparator.phptnu�[���PK�	[�ms���018-snapshot.phptnu�[���PK�	[���[[�011-getApproximateSizes.phptnu�[���PK�	[�$��t008-options.phptnu�[���PK�	[�A]*��]003-openbasedir.phptnu�[���PK�	[��O�##?"014-iterator-destroy.phptnu�[���PK�	[�5]5�$015-double-iterator.phptnu�[���PK�	[
2k���&012-getProperty.phptnu�[���PK�	[����*+009-comparator.phptnu�[���PK�	[b��7763007-db-close.phptnu�[���PK�	[Ҧ��::*�5016-different-iterators-should-differ.phptnu�[���PK�	[��H��B9013-compactRange.phptnu�[���PK�	[<����Q;005-iterator.phptnu�[���PK�	[l������B017-db-getIterator.phptnu�[���PK�	[:v|��VEleveldb.incnu�[���PK�	[1.�L99)F002-db-management.phptnu�[���PK�	[����11�G006-iterator-foreach.phptnu�[���PK�	[��IP��"L004-write-batch.phptnu�[���PK�	[v���~~,P001-basic.phptnu�[���PK�	[Q$z?���R020-null-snapshot.phptnu�[���PKI�
[�MCtXXU003.phptnu�[���PKI�
[4{BX
�[bug74975.phptnu�[���PKI�
[BG��	�	
�^bug50285.phptnu�[���PKI�
[}u���
�hbug45555.phptnu�[���PKI�
[��6@���k005.phptnu�[���PKI�
[�w8���
obug71501.phptnu�[���PKI�
[ԟs�
2qbug77242.phptnu�[���PKI�
[��@dd
�rbug61097.phptnu�[���PKI�
[z�D	��
)tbug18916.phptnu�[���PKI�
[��?���
!vbug44996.phptnu�[���PKI�
[6Y��
I{bug70526.phptnu�[���PKI�
[B�.���|007.phptnu�[���PKI�
[*��5))Y~004.phptnu�[���PKI�
[ڒL����006.phptnu�[���PKI�
[��b�PP
��bug77380.phptnu�[���PKI�
[���!��
(�bug42736.phptnu�[���PKI�
[jr44=�002.phptnu�[���PKI�
[#F`=uu
��bug47818.phptnu�[���PKI�
[����::
[�bug68027.phptnu�[���PKI�
[���nn
Ҝbug45226.phptnu�[���PKI�
[���_FF
}�bug40576.phptnu�[���PKI�
[V��=oo�bug70728_64bit.phptnu�[���PKI�
[��8���
��bug50282.phptnu�[���PKI�
[Fnc��
��bug37057.phptnu�[���PKI�
[-�'
m�bug38431.phptnu�[���PKI�
[I\�i
��bug72647.phptnu�[���PKI�
[�
(qq
�bug70728.phptnu�[���PKI�
[����
��bug72155.phptnu�[���PKI�
[���PPպ001.phptnu�[���PKI�
[��[bb
]�bug51288.phptnu�[���PKI�
[ޒ��YY
��bug61264.phptnu�[���PKI�
[l�|�
��bug42189.phptnu�[���PKI�
[u��IHH
��bug45556.phptnu�[���PKI�
[e�B�;;k�bug40576_64bit.phptnu�[���PKI�
[�Y/�GG
��bug50761.phptnu�[���PK��
[�j:׺�m�005_WKBReader.phptnu�[���PK��
[��p''i�004_WKBWriter.phptnu�[���PK��
[���yy�002_WKTWriter.phptnu�[���PK��
[��v���(003_WKTReader.phptnu�[���PK��
[�f�!!t8000_General.phptnu�[���PK��
[4v�''�>TestHelper.phpnu�[���PK��
[�~����:Y001_Geometry.phptnu�[���PK��F